[PSDK] Update wmsdkidl.idl and import some of its related idl files from Wine Staging...
[reactos.git] / sdk / include / psdk / userenv.h
1 #ifndef _USERENV_H
2 #define _USERENV_H
3
4 #ifdef __cplusplus
5 extern "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
22 typedef 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
34 typedef 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)
47 typedef enum _GPO_LINK {
48 GPLinkUnknown = 0,
49 GPLinkMachine,
50 GPLinkSite,
51 GPLinkDomain,
52 GPLinkOrganizationalUnit
53 } GPO_LINK, *PGPO_LINK;
54
55 typedef 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
71 typedef 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 */
89 BOOL WINAPI InitializeProfiles (VOID);
90 BOOL WINAPI CreateUserProfileA (PSID, LPCSTR);
91 BOOL WINAPI CreateUserProfileW (PSID, LPCWSTR);
92 BOOL WINAPI CreateUserProfileExA (PSID, LPCSTR, LPCSTR, LPSTR, DWORD, BOOL);
93 BOOL WINAPI CreateUserProfileExW (PSID, LPCWSTR, LPCWSTR, LPWSTR, DWORD, BOOL);
94 BOOL WINAPI AddDesktopItemA (BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
95 BOOL WINAPI AddDesktopItemW (BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
96 BOOL WINAPI DeleteDesktopItemA (BOOL, LPCSTR);
97 BOOL WINAPI DeleteDesktopItemW (BOOL, LPCWSTR);
98 BOOL WINAPI CreateGroupA (LPCSTR, BOOL);
99 BOOL WINAPI CreateGroupW (LPCWSTR, BOOL);
100 BOOL WINAPI DeleteGroupA (LPCSTR, BOOL);
101 BOOL WINAPI DeleteGroupW (LPCWSTR, BOOL);
102 BOOL WINAPI AddItemA (LPCSTR, BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
103 BOOL WINAPI AddItemW (LPCWSTR, BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
104 BOOL WINAPI DeleteItemA (LPCSTR, BOOL, LPCSTR, BOOL);
105 BOOL WINAPI DeleteItemW (LPCWSTR, BOOL, LPCWSTR, BOOL);
106 BOOL WINAPI CopyProfileDirectoryA(LPCSTR, LPCSTR, DWORD);
107 BOOL WINAPI CopyProfileDirectoryW(LPCWSTR, LPCWSTR, DWORD);
108 PSID WINAPI GetUserSid(HANDLE);
109 /* end private */
110 BOOL WINAPI LoadUserProfileA (HANDLE, LPPROFILEINFOA);
111 BOOL WINAPI LoadUserProfileW (HANDLE, LPPROFILEINFOW);
112 BOOL WINAPI UnloadUserProfile (HANDLE, HANDLE);
113
114 BOOL WINAPI GetAllUsersProfileDirectoryA (LPSTR, LPDWORD);
115 BOOL WINAPI GetAllUsersProfileDirectoryW (LPWSTR, LPDWORD);
116 BOOL WINAPI GetDefaultUserProfileDirectoryA (LPSTR, LPDWORD);
117 BOOL WINAPI GetDefaultUserProfileDirectoryW (LPWSTR, LPDWORD);
118 BOOL WINAPI GetProfilesDirectoryA(LPSTR, LPDWORD);
119 BOOL WINAPI GetProfilesDirectoryW(LPWSTR, LPDWORD);
120 BOOL WINAPI GetUserProfileDirectoryA(HANDLE, LPSTR, LPDWORD);
121 BOOL WINAPI GetUserProfileDirectoryW(HANDLE, LPWSTR, LPDWORD);
122 #if (WINVER >= 0x0500)
123 BOOL WINAPI GetProfileType(PDWORD);
124 #endif
125
126 BOOL WINAPI CreateEnvironmentBlock(LPVOID*, HANDLE, BOOL);
127 BOOL WINAPI DestroyEnvironmentBlock(LPVOID);
128 #if (WINVER >= 0x0500)
129 BOOL WINAPI ExpandEnvironmentStringsForUserA (HANDLE, LPCSTR, LPSTR, DWORD);
130 BOOL WINAPI ExpandEnvironmentStringsForUserW (HANDLE, LPCWSTR, LPWSTR, DWORD);
131 #endif
132
133 #if (WINVER >= 0x0502)
134 DWORD
135 WINAPI
136 GetAppliedGPOListA(
137 _In_ DWORD dwFlags,
138 _In_ LPCSTR pMachineName,
139 _In_ PSID pSidUser,
140 _In_ GUID *pGuidExtension,
141 _Out_ PGROUP_POLICY_OBJECTA *ppGPOList
142 );
143 DWORD
144 WINAPI
145 GetAppliedGPOListW(
146 _In_ DWORD dwFlags,
147 _In_ LPCWSTR pMachineName,
148 _In_ PSID pSidUser,
149 _In_ GUID *pGuidExtension,
150 _Out_ PGROUP_POLICY_OBJECTW *ppGPOList
151 );
152 #endif
153
154 HANDLE WINAPI EnterCriticalPolicySection (BOOL);
155 BOOL WINAPI LeaveCriticalPolicySection (HANDLE);
156 BOOL WINAPI RefreshPolicy (BOOL);
157 #if (WINVER >= 0x0500)
158 BOOL WINAPI RefreshPolicyEx (BOOL, DWORD);
159 #endif
160 BOOL WINAPI RegisterGPNotification (HANDLE, BOOL);
161 BOOL WINAPI UnregisterGPNotification (HANDLE);
162
163 #ifdef UNICODE
164 typedef PROFILEINFOW PROFILEINFO;
165 typedef LPPROFILEINFOW LPPROFILEINFO;
166 /* begin private */
167 #define CreateUserProfile CreateUserProfileW
168 #define CreateUserProfileEx CreateUserProfileExW
169 #define AddDesktopItem AddDesktopItemW
170 #define DeleteDesktopItem DeleteDesktopItemW
171 #define CreateGroup CreateGroupW
172 #define DeleteGroup DeleteGroupW
173 #define AddItem AddItemW
174 #define DeleteItem DeleteItemW
175 #define CopyProfileDirectory CopyProfileDirectoryW
176 /* end private */
177 #define LoadUserProfile LoadUserProfileW
178 #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryW
179 #define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryW
180 #define GetProfilesDirectory GetProfilesDirectoryW
181 #define GetUserProfileDirectory GetUserProfileDirectoryW
182 #if (WINVER >= 0x0500)
183 #define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserW
184 #endif
185 #if (WINVER >= 0x0502)
186 typedef GROUP_POLICY_OBJECTW GROUP_POLICY_OBJECT;
187 typedef PGROUP_POLICY_OBJECTW PGROUP_POLICY_OBJECT;
188 #define GetAppliedGPOList GetAppliedGPOListW
189 #endif
190 #else
191 typedef PROFILEINFOA PROFILEINFO;
192 typedef LPPROFILEINFOA LPPROFILEINFO;
193 /* begin private */
194 #define CreateUserProfile CreateUserProfileA
195 #define CreateUserProfileEx CreateUserProfileExA
196 #define AddDesktopItem AddDesktopItemA
197 #define DeleteDesktopItem DeleteDesktopItemA
198 #define CreateGroup CreateGroupA
199 #define DeleteGroup DeleteGroupA
200 #define AddItem AddItemA
201 #define DeleteItem DeleteItemA
202 #define CopyProfileDirectory CopyProfileDirectoryA
203 /* end private */
204 #define LoadUserProfile LoadUserProfileA
205 #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryA
206 #define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryA
207 #define GetProfilesDirectory GetProfilesDirectoryA
208 #define GetUserProfileDirectory GetUserProfileDirectoryA
209 #if (WINVER >= 0x0500)
210 #define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserA
211 #endif
212 #if (WINVER >= 0x0502)
213 typedef GROUP_POLICY_OBJECTA GROUP_POLICY_OBJECT;
214 typedef PGROUP_POLICY_OBJECTA PGROUP_POLICY_OBJECT;
215 #define GetAppliedGPOList GetAppliedGPOListA
216 #endif
217 #endif
218
219 #ifdef __cplusplus
220 }
221 #endif
222
223 #endif /* _USERENV_H */