1 // Copyright © 2015, skdltmxn
2 // Licensed under the MIT License <LICENSE.md>
3 //! Contains public interfaces to query the network roles of workstations, servers, and DCs
4 ENUM!{enum DSROLE_MACHINE_ROLE {
5     DsRole_RoleStandaloneWorkstation,
6     DsRole_RoleMemberWorkstation,
7     DsRole_RoleStandaloneServer,
8     DsRole_RoleMemberServer,
9     DsRole_RoleBackupDomainController,
10     DsRole_RolePrimaryDomainController,
11 }}
12 ENUM!{enum DSROLE_SERVER_STATE {
13     DsRoleServerUnknown = 0,
14     DsRoleServerPrimary,
15     DsRoleServerBackup,
16 }}
17 pub type PDSROLE_SERVER_STATE = *mut DSROLE_SERVER_STATE;
18 ENUM!{enum DSROLE_PRIMARY_DOMAIN_INFO_LEVEL {
19     DsRolePrimaryDomainInfoBasic = 1,
20     DsRoleUpgradeStatus,
21     DsRoleOperationState,
22 }}
23 pub const DSROLE_PRIMARY_DS_RUNNING: ::ULONG = 0x00000001;
24 pub const DSROLE_PRIMARY_DS_MIXED_MODE: ::ULONG = 0x00000002;
25 pub const DSROLE_UPGRADE_IN_PROGRESS: ::ULONG = 0x00000004;
26 pub const DSROLE_PRIMARY_DS_READONLY: ::ULONG = 0x00000008;
27 pub const DSROLE_PRIMARY_DOMAIN_GUID_PRESENT: ::ULONG = 0x01000000;
28 STRUCT!{struct DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
29     MachineRole: DSROLE_MACHINE_ROLE,
30     Flags: ::ULONG,
31     DomainNameFlat: ::LPWSTR,
32     DomainNameDns: ::LPWSTR,
33     DomainForestName: ::LPWSTR,
34     DomainGuid: ::GUID,
35 }}
36 pub type PDSROLE_PRIMARY_DOMAIN_INFO_BASIC = *mut DSROLE_PRIMARY_DOMAIN_INFO_BASIC;
37 STRUCT!{struct DSROLE_UPGRADE_STATUS_INFO {
38     OperationState: ::ULONG,
39     PreviousServerState: DSROLE_SERVER_STATE,
40 }}
41 pub type PDSROLE_UPGRADE_STATUS_INFO = *mut DSROLE_UPGRADE_STATUS_INFO;
42 ENUM!{enum DSROLE_OPERATION_STATE {
43     DsRoleOperationIdle = 0,
44     DsRoleOperationActive,
45     DsRoleOperationNeedReboot,
46 }}
47 STRUCT!{struct DSROLE_OPERATION_STATE_INFO {
48     OperationState: DSROLE_OPERATION_STATE,
49 }}
50 pub type PDSROLE_OPERATION_STATE_INFO = *mut DSROLE_OPERATION_STATE_INFO;
51