// Copyright © 2015, skdltmxn // Licensed under the MIT License //! Contains public interfaces to query the network roles of workstations, servers, and DCs ENUM!{enum DSROLE_MACHINE_ROLE { DsRole_RoleStandaloneWorkstation, DsRole_RoleMemberWorkstation, DsRole_RoleStandaloneServer, DsRole_RoleMemberServer, DsRole_RoleBackupDomainController, DsRole_RolePrimaryDomainController, }} ENUM!{enum DSROLE_SERVER_STATE { DsRoleServerUnknown = 0, DsRoleServerPrimary, DsRoleServerBackup, }} pub type PDSROLE_SERVER_STATE = *mut DSROLE_SERVER_STATE; ENUM!{enum DSROLE_PRIMARY_DOMAIN_INFO_LEVEL { DsRolePrimaryDomainInfoBasic = 1, DsRoleUpgradeStatus, DsRoleOperationState, }} pub const DSROLE_PRIMARY_DS_RUNNING: ::ULONG = 0x00000001; pub const DSROLE_PRIMARY_DS_MIXED_MODE: ::ULONG = 0x00000002; pub const DSROLE_UPGRADE_IN_PROGRESS: ::ULONG = 0x00000004; pub const DSROLE_PRIMARY_DS_READONLY: ::ULONG = 0x00000008; pub const DSROLE_PRIMARY_DOMAIN_GUID_PRESENT: ::ULONG = 0x01000000; STRUCT!{struct DSROLE_PRIMARY_DOMAIN_INFO_BASIC { MachineRole: DSROLE_MACHINE_ROLE, Flags: ::ULONG, DomainNameFlat: ::LPWSTR, DomainNameDns: ::LPWSTR, DomainForestName: ::LPWSTR, DomainGuid: ::GUID, }} pub type PDSROLE_PRIMARY_DOMAIN_INFO_BASIC = *mut DSROLE_PRIMARY_DOMAIN_INFO_BASIC; STRUCT!{struct DSROLE_UPGRADE_STATUS_INFO { OperationState: ::ULONG, PreviousServerState: DSROLE_SERVER_STATE, }} pub type PDSROLE_UPGRADE_STATUS_INFO = *mut DSROLE_UPGRADE_STATUS_INFO; ENUM!{enum DSROLE_OPERATION_STATE { DsRoleOperationIdle = 0, DsRoleOperationActive, DsRoleOperationNeedReboot, }} STRUCT!{struct DSROLE_OPERATION_STATE_INFO { OperationState: DSROLE_OPERATION_STATE, }} pub type PDSROLE_OPERATION_STATE_INFO = *mut DSROLE_OPERATION_STATE_INFO;