#define RP_FORCE (1)
#endif
+/* Values returned by GetProfileType */
+#if (WINVER >= 0x0500)
+#define PT_TEMPORARY 1
+#define PT_ROAMING 2
+#define PT_MANDATORY 4
+#endif
+
typedef struct _PROFILEINFOA
{
DWORD dwSize;
HANDLE hProfile;
} PROFILEINFOW, *LPPROFILEINFOW;
+#if (WINVER >= 0x0502)
+typedef enum _GPO_LINK {
+ GPLinkUnknown = 0,
+ GPLinkMachine,
+ GPLinkSite,
+ GPLinkDomain,
+ GPLinkOrganizationalUnit
+} GPO_LINK, *PGPO_LINK;
+
+typedef struct _GROUP_POLICY_OBJECTA {
+ DWORD dwOptions;
+ DWORD dwVersion;
+ LPSTR lpDSPath;
+ LPSTR lpFileSysPath;
+ LPSTR lpDisplayName;
+ CHAR szGPOName[50];
+ GPO_LINK GPOLink;
+ LPARAM lParam;
+ struct _GROUP_POLICY_OBJECTA *pNext;
+ struct _GROUP_POLICY_OBJECTA *pPrev;
+ LPSTR lpExtensions;
+ LPARAM lParam2;
+ LPSTR lpLink;
+} GROUP_POLICY_OBJECTA, *PGROUP_POLICY_OBJECTA;
+
+typedef struct _GROUP_POLICY_OBJECTW {
+ DWORD dwOptions;
+ DWORD dwVersion;
+ LPWSTR lpDSPath;
+ LPWSTR lpFileSysPath;
+ LPWSTR lpDisplayName;
+ WCHAR szGPOName[50];
+ GPO_LINK GPOLink;
+ LPARAM lParam;
+ struct _GROUP_POLICY_OBJECTW *pNext;
+ struct _GROUP_POLICY_OBJECTW *pPrev;
+ LPWSTR lpExtensions;
+ LPARAM lParam2;
+ LPWSTR lpLink;
+} GROUP_POLICY_OBJECTW, *PGROUP_POLICY_OBJECTW;
+#endif
+
/* begin private */
BOOL WINAPI InitializeProfiles (VOID);
BOOL WINAPI CreateUserProfileA (PSID, LPCSTR);
BOOL WINAPI GetProfilesDirectoryW(LPWSTR, LPDWORD);
BOOL WINAPI GetUserProfileDirectoryA(HANDLE, LPSTR, LPDWORD);
BOOL WINAPI GetUserProfileDirectoryW(HANDLE, LPWSTR, LPDWORD);
+#if (WINVER >= 0x0500)
+BOOL WINAPI GetProfileType(PDWORD);
+#endif
BOOL WINAPI CreateEnvironmentBlock(LPVOID*, HANDLE, BOOL);
BOOL WINAPI DestroyEnvironmentBlock(LPVOID);
BOOL WINAPI ExpandEnvironmentStringsForUserW (HANDLE, LPCWSTR, LPWSTR, DWORD);
#endif
+#if (WINVER >= 0x0502)
+DWORD
+WINAPI
+GetAppliedGPOListA(
+ _In_ DWORD dwFlags,
+ _In_ LPCSTR pMachineName,
+ _In_ PSID pSidUser,
+ _In_ GUID *pGuidExtension,
+ _Out_ PGROUP_POLICY_OBJECTA *ppGPOList
+);
+DWORD
+WINAPI
+GetAppliedGPOListW(
+ _In_ DWORD dwFlags,
+ _In_ LPCWSTR pMachineName,
+ _In_ PSID pSidUser,
+ _In_ GUID *pGuidExtension,
+ _Out_ PGROUP_POLICY_OBJECTW *ppGPOList
+);
+#endif
+
HANDLE WINAPI EnterCriticalPolicySection (BOOL);
BOOL WINAPI LeaveCriticalPolicySection (HANDLE);
BOOL WINAPI RefreshPolicy (BOOL);
#if (WINVER >= 0x0500)
#define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserW
#endif
+#if (WINVER >= 0x0502)
+typedef GROUP_POLICY_OBJECTW GROUP_POLICY_OBJECT;
+typedef PGROUP_POLICY_OBJECTW PGROUP_POLICY_OBJECT;
+#define GetAppliedGPOList GetAppliedGPOListW
+#endif
#else
typedef PROFILEINFOA PROFILEINFO;
typedef LPPROFILEINFOA LPPROFILEINFO;
#if (WINVER >= 0x0500)
#define ExpandEnvironmentStringsForUser ExpandEnvironmentStringsForUserA
#endif
+#if (WINVER >= 0x0502)
+typedef GROUP_POLICY_OBJECTA GROUP_POLICY_OBJECT;
+typedef PGROUP_POLICY_OBJECTA PGROUP_POLICY_OBJECT;
+#define GetAppliedGPOList GetAppliedGPOListA
+#endif
#endif
#ifdef __cplusplus