Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _USERENV_H_
      7 #define _USERENV_H_
      8 
      9 #include <_mingw_unicode.h>
     10 #include <wbemcli.h>
     11 #include <profinfo.h>
     12 
     13 #if !defined(_USERENV_)
     14 #define USERENVAPI DECLSPEC_IMPORT
     15 #else
     16 #define USERENVAPI
     17 #endif
     18 
     19 #ifdef __cplusplus
     20 extern "C" {
     21 #endif
     22 
     23 #define PI_NOUI 0x00000001
     24 #define PI_APPLYPOLICY 0x00000002
     25 
     26 #define LoadUserProfile __MINGW_NAME_AW(LoadUserProfile)
     27 #define GetProfilesDirectory __MINGW_NAME_AW(GetProfilesDirectory)
     28 #define DeleteProfile __MINGW_NAME_AW(DeleteProfile)
     29 #define GetDefaultUserProfileDirectory __MINGW_NAME_AW(GetDefaultUserProfileDirectory)
     30 #define GetAllUsersProfileDirectory __MINGW_NAME_AW(GetAllUsersProfileDirectory)
     31 #define GetUserProfileDirectory __MINGW_NAME_AW(GetUserProfileDirectory)
     32 #define ExpandEnvironmentStringsForUser __MINGW_NAME_AW(ExpandEnvironmentStringsForUser)
     33 
     34   USERENVAPI WINBOOL WINAPI LoadUserProfileA(HANDLE hToken,LPPROFILEINFOA lpProfileInfo);
     35   USERENVAPI WINBOOL WINAPI LoadUserProfileW(HANDLE hToken,LPPROFILEINFOW lpProfileInfo);
     36   USERENVAPI WINBOOL WINAPI UnloadUserProfile(HANDLE hToken,HANDLE hProfile);
     37   USERENVAPI WINBOOL WINAPI GetProfilesDirectoryA(LPSTR lpProfilesDir,LPDWORD lpcchSize);
     38   USERENVAPI WINBOOL WINAPI GetProfilesDirectoryW(LPWSTR lpProfilesDir,LPDWORD lpcchSize);
     39 
     40 #define PT_TEMPORARY 0x00000001
     41 #define PT_ROAMING 0x00000002
     42 #define PT_MANDATORY 0x00000004
     43 
     44   USERENVAPI WINBOOL WINAPI GetProfileType(DWORD *dwFlags);
     45   USERENVAPI WINBOOL WINAPI DeleteProfileA(LPCSTR lpSidString,LPCSTR lpProfilePath,LPCSTR lpComputerName);
     46   USERENVAPI WINBOOL WINAPI DeleteProfileW(LPCWSTR lpSidString,LPCWSTR lpProfilePath,LPCWSTR lpComputerName);
     47   USERENVAPI WINBOOL WINAPI GetDefaultUserProfileDirectoryA(LPSTR lpProfileDir,LPDWORD lpcchSize);
     48   USERENVAPI WINBOOL WINAPI GetDefaultUserProfileDirectoryW(LPWSTR lpProfileDir,LPDWORD lpcchSize);
     49   USERENVAPI WINBOOL WINAPI GetAllUsersProfileDirectoryA(LPSTR lpProfileDir,LPDWORD lpcchSize);
     50   USERENVAPI WINBOOL WINAPI GetAllUsersProfileDirectoryW(LPWSTR lpProfileDir,LPDWORD lpcchSize);
     51   USERENVAPI WINBOOL WINAPI GetUserProfileDirectoryA(HANDLE hToken,LPSTR lpProfileDir,LPDWORD lpcchSize);
     52   USERENVAPI WINBOOL WINAPI GetUserProfileDirectoryW(HANDLE hToken,LPWSTR lpProfileDir,LPDWORD lpcchSize);
     53   USERENVAPI WINBOOL WINAPI CreateEnvironmentBlock(LPVOID *lpEnvironment,HANDLE hToken,WINBOOL bInherit);
     54   USERENVAPI WINBOOL WINAPI DestroyEnvironmentBlock(LPVOID lpEnvironment);
     55   USERENVAPI WINBOOL WINAPI ExpandEnvironmentStringsForUserA(HANDLE hToken,LPCSTR lpSrc,LPSTR lpDest,DWORD dwSize);
     56   USERENVAPI WINBOOL WINAPI ExpandEnvironmentStringsForUserW(HANDLE hToken,LPCWSTR lpSrc,LPWSTR lpDest,DWORD dwSize);
     57   USERENVAPI WINBOOL WINAPI RefreshPolicy(WINBOOL bMachine);
     58 
     59 #define RP_FORCE 1
     60 
     61   USERENVAPI WINBOOL WINAPI RefreshPolicyEx(WINBOOL bMachine,DWORD dwOptions);
     62   USERENVAPI HANDLE WINAPI EnterCriticalPolicySection(WINBOOL bMachine);
     63   USERENVAPI WINBOOL WINAPI LeaveCriticalPolicySection(HANDLE hSection);
     64   USERENVAPI WINBOOL WINAPI RegisterGPNotification(HANDLE hEvent,WINBOOL bMachine);
     65   USERENVAPI WINBOOL WINAPI UnregisterGPNotification(HANDLE hEvent);
     66 
     67 #define GPC_BLOCK_POLICY 0x00000001
     68 
     69 #define GPO_FLAG_DISABLE 0x00000001
     70 #define GPO_FLAG_FORCE 0x00000002
     71 
     72   typedef enum _GPO_LINK {
     73     GPLinkUnknown = 0,GPLinkMachine,GPLinkSite,GPLinkDomain,GPLinkOrganizationalUnit
     74   } GPO_LINK,*PGPO_LINK;
     75 
     76   typedef struct _GROUP_POLICY_OBJECTA {
     77     DWORD dwOptions;
     78     DWORD dwVersion;
     79     LPSTR lpDSPath;
     80     LPSTR lpFileSysPath;
     81     LPSTR lpDisplayName;
     82     CHAR szGPOName[50];
     83     GPO_LINK GPOLink;
     84     LPARAM lParam;
     85     struct _GROUP_POLICY_OBJECTA *pNext;
     86     struct _GROUP_POLICY_OBJECTA *pPrev;
     87     LPSTR lpExtensions;
     88     LPARAM lParam2;
     89     LPSTR lpLink;
     90   } GROUP_POLICY_OBJECTA,*PGROUP_POLICY_OBJECTA;
     91 
     92   typedef struct _GROUP_POLICY_OBJECTW {
     93     DWORD dwOptions;
     94     DWORD dwVersion;
     95     LPWSTR lpDSPath;
     96     LPWSTR lpFileSysPath;
     97     LPWSTR lpDisplayName;
     98     WCHAR szGPOName[50];
     99     GPO_LINK GPOLink;
    100     LPARAM lParam;
    101     struct _GROUP_POLICY_OBJECTW *pNext;
    102     struct _GROUP_POLICY_OBJECTW *pPrev;
    103     LPWSTR lpExtensions;
    104     LPARAM lParam2;
    105     LPWSTR lpLink;
    106   } GROUP_POLICY_OBJECTW,*PGROUP_POLICY_OBJECTW;
    107 
    108   __MINGW_TYPEDEF_AW(GROUP_POLICY_OBJECT)
    109   __MINGW_TYPEDEF_AW(PGROUP_POLICY_OBJECT)
    110 
    111 #define GPO_LIST_FLAG_MACHINE 0x00000001
    112 #define GPO_LIST_FLAG_SITEONLY 0x00000002
    113 #define GPO_LIST_FLAG_NO_WMIFILTERS 0x00000004
    114 
    115 #define GetGPOList __MINGW_NAME_AW(GetGPOList)
    116 #define FreeGPOList __MINGW_NAME_AW(FreeGPOList)
    117 #define GetAppliedGPOList __MINGW_NAME_AW(GetAppliedGPOList)
    118 
    119   USERENVAPI WINBOOL WINAPI GetGPOListA(HANDLE hToken,LPCSTR lpName,LPCSTR lpHostName,LPCSTR lpComputerName,DWORD dwFlags,PGROUP_POLICY_OBJECTA *pGPOList);
    120   USERENVAPI WINBOOL WINAPI GetGPOListW(HANDLE hToken,LPCWSTR lpName,LPCWSTR lpHostName,LPCWSTR lpComputerName,DWORD dwFlags,PGROUP_POLICY_OBJECTW *pGPOList);
    121   USERENVAPI WINBOOL WINAPI FreeGPOListA(PGROUP_POLICY_OBJECTA pGPOList);
    122   USERENVAPI WINBOOL WINAPI FreeGPOListW(PGROUP_POLICY_OBJECTW pGPOList);
    123   USERENVAPI DWORD WINAPI GetAppliedGPOListA(DWORD dwFlags,LPCSTR pMachineName,PSID pSidUser,GUID *pGuidExtension,PGROUP_POLICY_OBJECTA *ppGPOList);
    124   USERENVAPI DWORD WINAPI GetAppliedGPOListW(DWORD dwFlags,LPCWSTR pMachineName,PSID pSidUser,GUID *pGuidExtension,PGROUP_POLICY_OBJECTW *ppGPOList);
    125 
    126 #define GP_DLLNAME TEXT("DllName")
    127 #define GP_ENABLEASYNCHRONOUSPROCESSING TEXT("EnableAsynchronousProcessing")
    128 #define GP_MAXNOGPOLISTCHANGESINTERVAL TEXT("MaxNoGPOListChangesInterval")
    129 #define GP_NOBACKGROUNDPOLICY TEXT("NoBackgroundPolicy")
    130 #define GP_NOGPOLISTCHANGES TEXT("NoGPOListChanges")
    131 #define GP_NOMACHINEPOLICY TEXT("NoMachinePolicy")
    132 #define GP_NOSLOWLINK TEXT("NoSlowLink")
    133 #define GP_NOTIFYLINKTRANSITION TEXT("NotifyLinkTransition")
    134 #define GP_NOUSERPOLICY TEXT("NoUserPolicy")
    135 #define GP_PERUSERLOCALSETTINGS TEXT("PerUserLocalSettings")
    136 #define GP_PROCESSGROUPPOLICY TEXT("ProcessGroupPolicy")
    137 #define GP_REQUIRESSUCCESSFULREGISTRY TEXT("RequiresSuccessfulRegistry")
    138 
    139 #define GPO_INFO_FLAG_MACHINE 0x00000001
    140 #define GPO_INFO_FLAG_BACKGROUND 0x00000010
    141 #define GPO_INFO_FLAG_SLOWLINK 0x00000020
    142 #define GPO_INFO_FLAG_VERBOSE 0x00000040
    143 #define GPO_INFO_FLAG_NOCHANGES 0x00000080
    144 #define GPO_INFO_FLAG_LINKTRANSITION 0x00000100
    145 
    146 #define GPO_INFO_FLAG_LOGRSOP_TRANSITION 0x00000200
    147 
    148 #define GPO_INFO_FLAG_FORCED_REFRESH 0x00000400
    149 #define GPO_INFO_FLAG_SAFEMODE_BOOT 0x00000800
    150 #define GPO_INFO_FLAG_ASYNC_FOREGROUND 0x00001000
    151 #define GPO_INFO_FLAG_REPORT 0x00002000
    152 
    153   typedef UINT_PTR ASYNCCOMPLETIONHANDLE;
    154   typedef DWORD (*PFNSTATUSMESSAGECALLBACK)(WINBOOL bVerbose,LPWSTR lpMessage);
    155   typedef DWORD(*PFNPROCESSGROUPPOLICY)(DWORD dwFlags,HANDLE hToken,HKEY hKeyRoot,PGROUP_POLICY_OBJECT pDeletedGPOList,PGROUP_POLICY_OBJECT pChangedGPOList,ASYNCCOMPLETIONHANDLE pHandle,WINBOOL *pbAbort,PFNSTATUSMESSAGECALLBACK pStatusCallback);
    156   typedef DWORD(*PFNPROCESSGROUPPOLICYEX)(DWORD dwFlags,HANDLE hToken,HKEY hKeyRoot,PGROUP_POLICY_OBJECT pDeletedGPOList,PGROUP_POLICY_OBJECT pChangedGPOList,ASYNCCOMPLETIONHANDLE pHandle,WINBOOL *pbAbort,PFNSTATUSMESSAGECALLBACK pStatusCallback,IWbemServices *pWbemServices,HRESULT *pRsopStatus);
    157   typedef PVOID PRSOPTOKEN;
    158 
    159   typedef struct _RSOP_TARGET {
    160     WCHAR *pwszAccountName;
    161     WCHAR *pwszNewSOM;
    162     SAFEARRAY *psaSecurityGroups;
    163     PRSOPTOKEN pRsopToken;
    164     PGROUP_POLICY_OBJECT pGPOList;
    165     IWbemServices *pWbemServices;
    166   } RSOP_TARGET,*PRSOP_TARGET;
    167 
    168   typedef DWORD(*PFNGENERATEGROUPPOLICY)(DWORD dwFlags,WINBOOL *pbAbort,WCHAR *pwszSite,PRSOP_TARGET pComputerTarget,PRSOP_TARGET pUserTarget);
    169 
    170 #define REGISTRY_EXTENSION_GUID { 0x35378EAC,0x683F,0x11D2,0xA8,0x9A,0x00,0xC0,0x4F,0xBB,0xCF,0xA2 }
    171 
    172   typedef GUID *REFGPEXTENSIONID;
    173 
    174   USERENVAPI DWORD WINAPI ProcessGroupPolicyCompleted(REFGPEXTENSIONID extensionId,ASYNCCOMPLETIONHANDLE pAsyncHandle,DWORD dwStatus);
    175   USERENVAPI DWORD WINAPI ProcessGroupPolicyCompletedEx(REFGPEXTENSIONID extensionId,ASYNCCOMPLETIONHANDLE pAsyncHandle,DWORD dwStatus,HRESULT RsopStatus);
    176   USERENVAPI HRESULT WINAPI RsopAccessCheckByType(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID pPrincipalSelfSid,PRSOPTOKEN pRsopToken,DWORD dwDesiredAccessMask,POBJECT_TYPE_LIST pObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING pGenericMapping,PPRIVILEGE_SET pPrivilegeSet,LPDWORD pdwPrivilegeSetLength,LPDWORD pdwGrantedAccessMask,LPBOOL pbAccessStatus);
    177   USERENVAPI HRESULT WINAPI RsopFileAccessCheck(LPWSTR pszFileName,PRSOPTOKEN pRsopToken,DWORD dwDesiredAccessMask,LPDWORD pdwGrantedAccessMask,LPBOOL pbAccessStatus);
    178 
    179   typedef enum _SETTINGSTATUS {
    180     RSOPUnspecified = 0,RSOPApplied,RSOPIgnored,RSOPFailed,RSOPSubsettingFailed
    181   } SETTINGSTATUS;
    182 
    183   typedef struct _POLICYSETTINGSTATUSINFO {
    184     LPWSTR szKey;
    185     LPWSTR szEventSource;
    186     LPWSTR szEventLogName;
    187     DWORD dwEventID;
    188     DWORD dwErrorCode;
    189     SETTINGSTATUS status;
    190     SYSTEMTIME timeLogged;
    191   } POLICYSETTINGSTATUSINFO,*LPPOLICYSETTINGSTATUSINFO;
    192 
    193   USERENVAPI HRESULT WINAPI RsopSetPolicySettingStatus(DWORD dwFlags,IWbemServices *pServices,IWbemClassObject *pSettingInstance,DWORD nInfo,POLICYSETTINGSTATUSINFO *pStatus);
    194   USERENVAPI HRESULT WINAPI RsopResetPolicySettingStatus(DWORD dwFlags,IWbemServices *pServices,IWbemClassObject *pSettingInstance);
    195 
    196 #define FLAG_NO_GPO_FILTER 0x80000000
    197 #define FLAG_NO_CSE_INVOKE 0x40000000
    198 #define FLAG_ASSUME_SLOW_LINK 0x20000000
    199 #define FLAG_LOOPBACK_MERGE 0x10000000
    200 #define FLAG_LOOPBACK_REPLACE 0x08000000
    201 
    202 #define FLAG_ASSUME_USER_WQLFILTER_TRUE 0x04000000
    203 #define FLAG_ASSUME_COMP_WQLFILTER_TRUE 0x02000000
    204 
    205 #define FLAG_PLANNING_MODE 0x01000000
    206 
    207 #define FLAG_NO_USER 0x00000001
    208 #define FLAG_NO_COMPUTER 0x00000002
    209 #define FLAG_FORCE_CREATENAMESPACE 0x00000004
    210 
    211 #define RSOP_USER_ACCESS_DENIED 0x00000001
    212 
    213 #define RSOP_COMPUTER_ACCESS_DENIED 0x00000002
    214 
    215 #define RSOP_TEMPNAMESPACE_EXISTS 0x00000004
    216 
    217 #ifdef __cplusplus
    218 }
    219 #endif
    220 
    221 #endif /* _USERENV_H_ */
    222