The real, definitive, Visual C++ support branch. Accept no substitutes
[reactos.git] / include / psdk / userenv.h
1 #ifndef _USERENV_H
2 #define _USERENV_H
3
4 #if __GNUC__ >=3
5 #pragma GCC system_header
6 #endif
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #define PI_NOUI (1)
13 #define PI_APPLYPOLICY (2)
14
15 #if (WINVER >= 0x0500)
16 #define RP_FORCE (1)
17 #endif
18
19 typedef struct _PROFILEINFOA
20 {
21 DWORD dwSize;
22 DWORD dwFlags;
23 LPSTR lpUserName;
24 LPSTR lpProfilePath;
25 LPSTR lpDefaultPath;
26 LPSTR lpServerName;
27 LPSTR lpPolicyPath;
28 HANDLE hProfile;
29 } PROFILEINFOA, *LPPROFILEINFOA;
30
31 typedef struct _PROFILEINFOW
32 {
33 DWORD dwSize;
34 DWORD dwFlags;
35 LPWSTR lpUserName;
36 LPWSTR lpProfilePath;
37 LPWSTR lpDefaultPath;
38 LPWSTR lpServerName;
39 LPWSTR lpPolicyPath;
40 HANDLE hProfile;
41 } PROFILEINFOW, *LPPROFILEINFOW;
42
43 /* begin private */
44 BOOL WINAPI InitializeProfiles (VOID);
45 BOOL WINAPI CreateUserProfileA (PSID, LPCSTR);
46 BOOL WINAPI CreateUserProfileW (PSID, LPCWSTR);
47 BOOL WINAPI AddDesktopItemA (BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
48 BOOL WINAPI AddDesktopItemW (BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
49 BOOL WINAPI DeleteDesktopItemA (BOOL, LPCSTR);
50 BOOL WINAPI DeleteDesktopItemW (BOOL, LPCWSTR);
51 BOOL WINAPI CreateGroupA (LPCSTR, BOOL);
52 BOOL WINAPI CreateGroupW (LPCWSTR, BOOL);
53 BOOL WINAPI DeleteGroupA (LPCSTR, BOOL);
54 BOOL WINAPI DeleteGroupW (LPCWSTR, BOOL);
55 BOOL WINAPI AddItemA (LPCSTR, BOOL, LPCSTR, LPCSTR, LPCSTR, INT, LPCSTR, WORD, INT);
56 BOOL WINAPI AddItemW (LPCWSTR, BOOL, LPCWSTR, LPCWSTR, LPCWSTR, INT, LPCWSTR, WORD, INT);
57 BOOL WINAPI DeleteItemA (LPCSTR, BOOL, LPCSTR, BOOL);
58 BOOL WINAPI DeleteItemW (LPCWSTR, BOOL, LPCWSTR, BOOL);
59 BOOL WINAPI CopyProfileDirectoryA(LPCSTR, LPCSTR, DWORD);
60 BOOL WINAPI CopyProfileDirectoryW(LPCWSTR, LPCWSTR, DWORD);
61 /* end private */
62 BOOL WINAPI LoadUserProfileA (HANDLE, LPPROFILEINFOA);
63 BOOL WINAPI LoadUserProfileW (HANDLE, LPPROFILEINFOW);
64 BOOL WINAPI UnloadUserProfile (HANDLE, HANDLE);
65
66 BOOL WINAPI GetAllUsersProfileDirectoryA (LPSTR, LPDWORD);
67 BOOL WINAPI GetAllUsersProfileDirectoryW (LPWSTR, LPDWORD);
68 BOOL WINAPI GetDefaultUserProfileDirectoryA (LPSTR, LPDWORD);
69 BOOL WINAPI GetDefaultUserProfileDirectoryW (LPWSTR, LPDWORD);
70 BOOL WINAPI GetProfilesDirectoryA(LPSTR, LPDWORD);
71 BOOL WINAPI GetProfilesDirectoryW(LPWSTR, LPDWORD);
72 BOOL WINAPI GetUserProfileDirectoryA(HANDLE, LPSTR, LPDWORD);
73 BOOL WINAPI GetUserProfileDirectoryW(HANDLE, LPWSTR, LPDWORD);
74
75 BOOL WINAPI CreateEnvironmentBlock(LPVOID*, HANDLE, BOOL);
76 BOOL WINAPI DestroyEnvironmentBlock(LPVOID);
77 #if (WINVER >= 0x0500)
78 BOOL WINAPI ExpandEnvironmentStringsForUserA (HANDLE, LPCSTR, LPSTR, DWORD);
79 BOOL WINAPI ExpandEnvironmentStringsForUserW (HANDLE, LPCWSTR, LPWSTR, DWORD);
80 #endif
81
82 HANDLE WINAPI EnterCriticalPolicySection (BOOL);
83 BOOL WINAPI LeaveCriticalPolicySection (HANDLE);
84 BOOL WINAPI RefreshPolicy (BOOL);
85 #if (WINVER >= 0x0500)
86 BOOL WINAPI RefreshPolicyEx (BOOL, DWORD);
87 #endif
88 BOOL WINAPI RegisterGPNotification (HANDLE, BOOL);
89 BOOL WINAPI UnregisterGPNotification (HANDLE);
90
91 #ifdef UNICODE
92 typedef PROFILEINFOW PROFILEINFO;
93 typedef LPPROFILEINFOW LPPROFILEINFO;
94 /* begin private */
95 #define CreateUserProfile CreateUserProfileW
96 #define AddDesktopItem AddDesktopItemW
97 #define DeleteDesktopItem DeleteDesktopItemW
98 #define CreateGroup CreateGroupW
99 #define DeleteGroup DeleteGroupW
100 #define AddItem AddItemW
101 #define DeleteItem DeleteItemW
102 #define CopyProfileDirectory CopyProfileDirectoryW
103 /* end private */
104 #define LoadUserProfile LoadUserProfileW
105 #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryW
106 #define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryW
107 #define GetProfilesDirectory GetProfilesDirectoryW
108 #define GetUserProfileDirectory GetUserProfileDirectoryW
109 #if (WINVER >= 0x0500)
110 #define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserW
111 #endif
112 #else
113 typedef PROFILEINFOA PROFILEINFO;
114 typedef LPPROFILEINFOA LPPROFILEINFO;
115 /* begin private */
116 #define CreateUserProfile CreateUserProfileA
117 #define AddDesktopItem AddDesktopItemA
118 #define DeleteDesktopItem DeleteDesktopItemA
119 #define CreateGroup CreateGroupA
120 #define DeleteGroup DeleteGroupA
121 #define AddItem AddItemA
122 #define DeleteItem DeleteItemA
123 #define CopyProfileDirectory CopyProfileDirectoryA
124 /* end private */
125 #define LoadUserProfile LoadUserProfileA
126 #define GetAllUsersProfileDirectory GetAllUsersProfileDirectoryA
127 #define GetDefaultUserProfileDirectory GetDefaultUserProfileDirectoryA
128 #define GetProfilesDirectory GetProfilesDirectoryA
129 #define GetUserProfileDirectory GetUserProfileDirectoryA
130 #if (WINVER >= 0x0500)
131 #define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserA
132 #endif
133 #endif
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif /* _USERENV_H */