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