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 __DSROLE_H__
7 #define __DSROLE_H__
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13   typedef enum _DSROLE_MACHINE_ROLE {
14     DsRole_RoleStandaloneWorkstation,DsRole_RoleMemberWorkstation,DsRole_RoleStandaloneServer,
15     DsRole_RoleMemberServer,DsRole_RoleBackupDomainController,DsRole_RolePrimaryDomainController
16   } DSROLE_MACHINE_ROLE;
17 
18   typedef enum _DSROLE_SERVER_STATE {
19     DsRoleServerUnknown = 0,DsRoleServerPrimary,DsRoleServerBackup
20   } DSROLE_SERVER_STATE,*PDSROLE_SERVER_STATE;
21 
22   typedef enum _DSROLE_PRIMARY_DOMAIN_INFO_LEVEL {
23     DsRolePrimaryDomainInfoBasic = 1,DsRoleUpgradeStatus,DsRoleOperationState
24   } DSROLE_PRIMARY_DOMAIN_INFO_LEVEL;
25 
26 #define DSROLE_PRIMARY_DS_RUNNING 0x00000001
27 #define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002
28 #define DSROLE_UPGRADE_IN_PROGRESS 0x00000004
29 #define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
30 
31   typedef struct _DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
32     DSROLE_MACHINE_ROLE MachineRole;
33     ULONG Flags;
34     LPWSTR DomainNameFlat;
35     LPWSTR DomainNameDns;
36     LPWSTR DomainForestName;
37     GUID DomainGuid;
38   } DSROLE_PRIMARY_DOMAIN_INFO_BASIC,*PDSROLE_PRIMARY_DOMAIN_INFO_BASIC;
39 
40   typedef struct _DSROLE_UPGRADE_STATUS_INFO {
41     ULONG OperationState;
42     DSROLE_SERVER_STATE PreviousServerState;
43   } DSROLE_UPGRADE_STATUS_INFO,*PDSROLE_UPGRADE_STATUS_INFO;
44 
45   typedef enum _DSROLE_OPERATION_STATE {
46     DsRoleOperationIdle = 0,DsRoleOperationActive,DsRoleOperationNeedReboot
47   } DSROLE_OPERATION_STATE;
48 
49   typedef struct _DSROLE_OPERATION_STATE_INFO {
50     DSROLE_OPERATION_STATE OperationState;
51   } DSROLE_OPERATION_STATE_INFO,*PDSROLE_OPERATION_STATE_INFO;
52 
53   DWORD WINAPI DsRoleGetPrimaryDomainInformation(LPCWSTR lpServer,DSROLE_PRIMARY_DOMAIN_INFO_LEVEL InfoLevel,PBYTE *Buffer);
54   VOID WINAPI DsRoleFreeMemory(PVOID Buffer);
55 
56 #ifdef __cplusplus
57 }
58 #endif
59 #endif
60