1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Definitions for the user environment API
8 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID};
9 use um::winnt::{HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
10 extern "system" {
11     // pub fn LoadUserProfileA(
12     //     hToken: HANDLE,
13     //     lpProfileInfo: LPPROFILEINFOA,
14     // ) -> BOOL;
15     // pub fn LoadUserProfileW(
16     //     hToken: HANDLE,
17     //     lpProfileInfo: LPPROFILEINFOW,
18     // ) -> BOOL;
UnloadUserProfile( hToken: HANDLE, hProfile: HANDLE, ) -> BOOL19     pub fn UnloadUserProfile(
20         hToken: HANDLE,
21         hProfile: HANDLE,
22     ) -> BOOL;
GetProfilesDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL23     pub fn GetProfilesDirectoryA(
24         lpProfileDir: LPSTR,
25         lpcchSize: LPDWORD,
26     ) -> BOOL;
GetProfilesDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL27     pub fn GetProfilesDirectoryW(
28         lpProfileDir: LPWSTR,
29         lpcchSize: LPDWORD,
30     ) -> BOOL;
GetProfileType( dwFlags: *mut DWORD, ) -> BOOL31     pub fn GetProfileType(
32         dwFlags: *mut DWORD,
33     ) -> BOOL;
DeleteProfileA( lpSidString: LPCSTR, lpProfilePath: LPCSTR, lpComputerName: LPCSTR, ) -> BOOL34     pub fn DeleteProfileA(
35         lpSidString: LPCSTR,
36         lpProfilePath: LPCSTR,
37         lpComputerName: LPCSTR,
38     ) -> BOOL;
DeleteProfileW( lpSidString: LPCWSTR, lpProfilePath: LPCWSTR, lpComputerName: LPCWSTR, ) -> BOOL39     pub fn DeleteProfileW(
40         lpSidString: LPCWSTR,
41         lpProfilePath: LPCWSTR,
42         lpComputerName: LPCWSTR,
43     ) -> BOOL;
CreateProfile( pszUserSid: LPCWSTR, pszUserName: LPCWSTR, pszProfilePath: LPWSTR, cchProfilePath: DWORD, ) -> HRESULT44     pub fn CreateProfile(
45         pszUserSid: LPCWSTR,
46         pszUserName: LPCWSTR,
47         pszProfilePath: LPWSTR,
48         cchProfilePath: DWORD,
49     ) -> HRESULT;
GetDefaultUserProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL50     pub fn GetDefaultUserProfileDirectoryA(
51         lpProfileDir: LPSTR,
52         lpcchSize: LPDWORD,
53     ) -> BOOL;
GetDefaultUserProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL54     pub fn GetDefaultUserProfileDirectoryW(
55         lpProfileDir: LPWSTR,
56         lpcchSize: LPDWORD,
57     ) -> BOOL;
GetAllUsersProfileDirectoryA( lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL58     pub fn GetAllUsersProfileDirectoryA(
59         lpProfileDir: LPSTR,
60         lpcchSize: LPDWORD,
61     ) -> BOOL;
GetAllUsersProfileDirectoryW( lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL62     pub fn GetAllUsersProfileDirectoryW(
63         lpProfileDir: LPWSTR,
64         lpcchSize: LPDWORD,
65     ) -> BOOL;
GetUserProfileDirectoryA( hToken: HANDLE, lpProfileDir: LPSTR, lpcchSize: LPDWORD, ) -> BOOL66     pub fn GetUserProfileDirectoryA(
67         hToken: HANDLE,
68         lpProfileDir: LPSTR,
69         lpcchSize: LPDWORD,
70     ) -> BOOL;
GetUserProfileDirectoryW( hToken: HANDLE, lpProfileDir: LPWSTR, lpcchSize: LPDWORD, ) -> BOOL71     pub fn GetUserProfileDirectoryW(
72         hToken: HANDLE,
73         lpProfileDir: LPWSTR,
74         lpcchSize: LPDWORD,
75     ) -> BOOL;
CreateEnvironmentBlock( lpEnvironment: *mut LPVOID, hToken: HANDLE, bInherit: BOOL, ) -> BOOL76     pub fn CreateEnvironmentBlock(
77         lpEnvironment: *mut LPVOID,
78         hToken: HANDLE,
79         bInherit: BOOL,
80     ) -> BOOL;
DestroyEnvironmentBlock( lpEnvironment: LPVOID, ) -> BOOL81     pub fn DestroyEnvironmentBlock(
82         lpEnvironment: LPVOID,
83     ) -> BOOL;
ExpandEnvironmentStringsForUserA( hToken: HANDLE, lpSrc: LPCSTR, lpDest: LPSTR, dwSize: DWORD, ) -> BOOL84     pub fn ExpandEnvironmentStringsForUserA(
85         hToken: HANDLE,
86         lpSrc: LPCSTR,
87         lpDest: LPSTR,
88         dwSize: DWORD,
89     ) -> BOOL;
ExpandEnvironmentStringsForUserW( hToken: HANDLE, lpSrc: LPCWSTR, lpDest: LPWSTR, dwSize: DWORD, ) -> BOOL90     pub fn ExpandEnvironmentStringsForUserW(
91         hToken: HANDLE,
92         lpSrc: LPCWSTR,
93         lpDest: LPWSTR,
94         dwSize: DWORD,
95     ) -> BOOL;
RefreshPolicy( bMachine: BOOL, ) -> BOOL96     pub fn RefreshPolicy(
97         bMachine: BOOL,
98     ) -> BOOL;
RefreshPolicyEx( bMachine: BOOL, dwOptions: DWORD, ) -> BOOL99     pub fn RefreshPolicyEx(
100         bMachine: BOOL,
101         dwOptions: DWORD,
102     ) -> BOOL;
EnterCriticalPolicySection( bMachine: BOOL, ) -> HANDLE103     pub fn EnterCriticalPolicySection(
104         bMachine: BOOL,
105     ) -> HANDLE;
LeaveCriticalPolicySection( hSection: HANDLE, ) -> BOOL106     pub fn LeaveCriticalPolicySection(
107         hSection: HANDLE,
108     ) -> BOOL;
RegisterGPNotification( hEvent: HANDLE, bMachine: BOOL, ) -> BOOL109     pub fn RegisterGPNotification(
110         hEvent: HANDLE,
111         bMachine: BOOL,
112     ) -> BOOL;
UnregisterGPNotification( hEvent: HANDLE, ) -> BOOL113     pub fn UnregisterGPNotification(
114         hEvent: HANDLE,
115     ) -> BOOL;
116     // pub fn GetGPOListA();
117     // pub fn GetGPOListW();
118     // pub fn FreeGPOListA();
119     // pub fn FreeGPOListW();
120     // pub fn GetAppliedGPOListA();
121     // pub fn GetAppliedGPOListW();
122     // pub fn ProcessGroupPolicyCompleted();
123     // pub fn ProcessGroupPolicyCompletedEx();
124     // pub fn RsopAccessCheckByType();
125     // pub fn RsopFileAccessCheck();
126     // pub fn RsopSetPolicySettingStatus();
127     // pub fn RsopResetPolicySettingStatus();
128     // pub fn GenerateGPNotification();
129     // pub fn CreateAppContainerProfile();
130     // pub fn DeleteAppContainerProfile();
131     // pub fn GetAppContainerRegistryLocation();
132     // pub fn GetAppContainerFolderPath();
133     // pub fn DeriveAppContainerSidFromAppContainerName();
134     // pub fn DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName();
135 }
136