Reactos
1#ifndef _USERENV_H
2#define _USERENV_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#define PI_NOUI (1)
9#define PI_APPLYPOLICY (2)
10
11#if (WINVER >= 0x0500)
12#define RP_FORCE (1)
13#endif
14
15/* Values returned by GetProfileType */
16#if (WINVER >= 0x0500)
17#define PT_TEMPORARY 1
18#define PT_ROAMING 2
19#define PT_MANDATORY 4
20#endif
21
22typedef struct _PROFILEINFOA
23{
24 DWORD dwSize;
25 DWORD dwFlags;
26 LPSTR lpUserName;
27 LPSTR lpProfilePath;
28 LPSTR lpDefaultPath;
29 LPSTR lpServerName;
30 LPSTR lpPolicyPath;
31 HANDLE hProfile;
32} PROFILEINFOA, *LPPROFILEINFOA;
33
34typedef struct _PROFILEINFOW
35{
36 DWORD dwSize;
37 DWORD dwFlags;
38 LPWSTR lpUserName;
39 LPWSTR lpProfilePath;
40 LPWSTR lpDefaultPath;
41 LPWSTR lpServerName;
42 LPWSTR lpPolicyPath;
43 HANDLE hProfile;
44} PROFILEINFOW, *LPPROFILEINFOW;
45
46#if (WINVER >= 0x0502)
47typedef enum _GPO_LINK {
48 GPLinkUnknown = 0,
49 GPLinkMachine,
50 GPLinkSite,
51 GPLinkDomain,
52 GPLinkOrganizationalUnit
53} GPO_LINK, *PGPO_LINK;
54
55typedef struct _GROUP_POLICY_OBJECTA {
56 DWORD dwOptions;
57 DWORD dwVersion;
58 LPSTR lpDSPath;
59 LPSTR lpFileSysPath;
60 LPSTR lpDisplayName;
61 CHAR szGPOName[50];
62 GPO_LINK GPOLink;
63 LPARAM lParam;
64 struct _GROUP_POLICY_OBJECTA *pNext;
65 struct _GROUP_POLICY_OBJECTA *pPrev;
66 LPSTR lpExtensions;
67 LPARAM lParam2;
68 LPSTR lpLink;
69} GROUP_POLICY_OBJECTA, *PGROUP_POLICY_OBJECTA;
70
71typedef struct _GROUP_POLICY_OBJECTW {
72 DWORD dwOptions;
73 DWORD dwVersion;
74 LPWSTR lpDSPath;
75 LPWSTR lpFileSysPath;
76 LPWSTR lpDisplayName;
77 WCHAR szGPOName[50];
78 GPO_LINK GPOLink;
79 LPARAM lParam;
80 struct _GROUP_POLICY_OBJECTW *pNext;
81 struct _GROUP_POLICY_OBJECTW *pPrev;
82 LPWSTR lpExtensions;
83 LPARAM lParam2;
84 LPWSTR lpLink;
85} GROUP_POLICY_OBJECTW, *PGROUP_POLICY_OBJECTW;
86#endif
87
88/* begin private */
89BOOL WINAPI InitializeProfiles (VOID);
90BOOL WINAPI CreateUserProfileA (PSID, LPCSTR);
91BOOL WINAPI CreateUserProfileW (PSID, LPCWSTR);
92BOOL WINAPI CreateUserProfileExA (PSID, LPCSTR, LPCSTR, LPSTR, DWORD, BOOL);
93BOOL WINAPI CreateUserProfileExW (PSID, LPCWSTR, LPCWSTR, LPWSTR, DWORD, BOOL);
94BOOL WINAPI AddDesktopItemA (BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
95BOOL WINAPI AddDesktopItemW (BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
96BOOL WINAPI DeleteDesktopItemA (BOOL, LPCSTR);
97BOOL WINAPI DeleteDesktopItemW (BOOL, LPCWSTR);
98BOOL WINAPI CreateGroupA (LPCSTR, BOOL);
99BOOL WINAPI CreateGroupW (LPCWSTR, BOOL);
100BOOL WINAPI DeleteGroupA (LPCSTR, BOOL);
101BOOL WINAPI DeleteGroupW (LPCWSTR, BOOL);
102BOOL WINAPI AddItemA (LPCSTR, BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
103BOOL WINAPI AddItemW (LPCWSTR, BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
104BOOL WINAPI DeleteItemA (LPCSTR, BOOL, LPCSTR, BOOL);
105BOOL WINAPI DeleteItemW (LPCWSTR, BOOL, LPCWSTR, BOOL);
106BOOL WINAPI CopyProfileDirectoryA(LPCSTR, LPCSTR, DWORD);
107BOOL WINAPI CopyProfileDirectoryW(LPCWSTR, LPCWSTR, DWORD);
108PSID WINAPI GetUserSid(HANDLE);
109BOOL WINAPI CopySystemProfile(ULONG);
110/* end private */
111
112#if(WINVER >= 0x0500)
113BOOL WINAPI DeleteProfileA(LPCSTR, LPCSTR, LPCSTR);
114BOOL WINAPI DeleteProfileW(LPCWSTR, LPCWSTR, LPCWSTR);
115#endif
116BOOL WINAPI LoadUserProfileA (HANDLE, LPPROFILEINFOA);
117BOOL WINAPI LoadUserProfileW (HANDLE, LPPROFILEINFOW);
118BOOL WINAPI UnloadUserProfile (HANDLE, HANDLE);
119
120BOOL WINAPI GetAllUsersProfileDirectoryA (LPSTR, LPDWORD);
121BOOL WINAPI GetAllUsersProfileDirectoryW (LPWSTR, LPDWORD);
122BOOL WINAPI GetDefaultUserProfileDirectoryA (LPSTR, LPDWORD);
123BOOL WINAPI GetDefaultUserProfileDirectoryW (LPWSTR, LPDWORD);
124BOOL WINAPI GetProfilesDirectoryA(LPSTR, LPDWORD);
125BOOL WINAPI GetProfilesDirectoryW(LPWSTR, LPDWORD);
126BOOL WINAPI GetUserProfileDirectoryA(HANDLE, LPSTR, LPDWORD);
127BOOL WINAPI GetUserProfileDirectoryW(HANDLE, LPWSTR, LPDWORD);
128#if (WINVER >= 0x0500)
129BOOL WINAPI GetProfileType(PDWORD);
130#endif
131
132BOOL WINAPI CreateEnvironmentBlock(LPVOID*, HANDLE, BOOL);
133BOOL WINAPI DestroyEnvironmentBlock(LPVOID);
134#if (WINVER >= 0x0500)
135BOOL WINAPI ExpandEnvironmentStringsForUserA (HANDLE, LPCSTR, LPSTR, DWORD);
136BOOL WINAPI ExpandEnvironmentStringsForUserW (HANDLE, LPCWSTR, LPWSTR, DWORD);
137#endif
138
139#if (WINVER >= 0x0502)
140DWORD
141WINAPI
142GetAppliedGPOListA(
143 _In_ DWORD dwFlags,
144 _In_ LPCSTR pMachineName,
145 _In_ PSID pSidUser,
146 _In_ GUID *pGuidExtension,
147 _Out_ PGROUP_POLICY_OBJECTA *ppGPOList
148);
149DWORD
150WINAPI
151GetAppliedGPOListW(
152 _In_ DWORD dwFlags,
153 _In_ LPCWSTR pMachineName,
154 _In_ PSID pSidUser,
155 _In_ GUID *pGuidExtension,
156 _Out_ PGROUP_POLICY_OBJECTW *ppGPOList
157);
158#endif
159
160HANDLE WINAPI EnterCriticalPolicySection (BOOL);
161BOOL WINAPI LeaveCriticalPolicySection (HANDLE);
162BOOL WINAPI RefreshPolicy (BOOL);
163#if (WINVER >= 0x0500)
164BOOL WINAPI RefreshPolicyEx (BOOL, DWORD);
165#endif
166BOOL WINAPI RegisterGPNotification (HANDLE, BOOL);
167BOOL WINAPI UnregisterGPNotification (HANDLE);
168
169#ifdef UNICODE
170typedef PROFILEINFOW PROFILEINFO;
171typedef LPPROFILEINFOW LPPROFILEINFO;
172/* begin private */
173#define CreateUserProfile CreateUserProfileW
174#define CreateUserProfileEx CreateUserProfileExW
175#define AddDesktopItem AddDesktopItemW
176#define DeleteDesktopItem DeleteDesktopItemW
177#define CreateGroup CreateGroupW
178#define DeleteGroup DeleteGroupW
179#define AddItem AddItemW
180#define DeleteItem DeleteItemW
181#define CopyProfileDirectory CopyProfileDirectoryW
182/* end private */
183#if (WINVER >= 0x0500)
184#define DeleteProfile DeleteProfileW
185#endif
186#define LoadUserProfile LoadUserProfileW
187#define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryW
188#define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryW
189#define GetProfilesDirectory GetProfilesDirectoryW
190#define GetUserProfileDirectory GetUserProfileDirectoryW
191#if (WINVER >= 0x0500)
192#define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserW
193#endif
194#if (WINVER >= 0x0502)
195typedef GROUP_POLICY_OBJECTW GROUP_POLICY_OBJECT;
196typedef PGROUP_POLICY_OBJECTW PGROUP_POLICY_OBJECT;
197#define GetAppliedGPOList GetAppliedGPOListW
198#endif
199#else
200typedef PROFILEINFOA PROFILEINFO;
201typedef LPPROFILEINFOA LPPROFILEINFO;
202/* begin private */
203#define CreateUserProfile CreateUserProfileA
204#define CreateUserProfileEx CreateUserProfileExA
205#define AddDesktopItem AddDesktopItemA
206#define DeleteDesktopItem DeleteDesktopItemA
207#define CreateGroup CreateGroupA
208#define DeleteGroup DeleteGroupA
209#define AddItem AddItemA
210#define DeleteItem DeleteItemA
211#define CopyProfileDirectory CopyProfileDirectoryA
212/* end private */
213#if (WINVER >= 0x0500)
214#define DeleteProfile DeleteProfileA
215#endif
216#define LoadUserProfile LoadUserProfileA
217#define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryA
218#define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryA
219#define GetProfilesDirectory GetProfilesDirectoryA
220#define GetUserProfileDirectory GetUserProfileDirectoryA
221#if (WINVER >= 0x0500)
222#define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserA
223#endif
224#if (WINVER >= 0x0502)
225typedef GROUP_POLICY_OBJECTA GROUP_POLICY_OBJECT;
226typedef PGROUP_POLICY_OBJECTA PGROUP_POLICY_OBJECT;
227#define GetAppliedGPOList GetAppliedGPOListA
228#endif
229#endif
230
231#ifdef __cplusplus
232}
233#endif
234
235#endif /* _USERENV_H */