winapi_ui_automation/um/
dsrole.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! Contains public interfaces to query the network roles of workstations, servers, and DCs
7use shared::guiddef::GUID;
8use shared::minwindef::{DWORD, PBYTE, ULONG};
9use um::winnt::{LPCWSTR, LPWSTR, PVOID};
10ENUM!{enum DSROLE_MACHINE_ROLE {
11    DsRole_RoleStandaloneWorkstation,
12    DsRole_RoleMemberWorkstation,
13    DsRole_RoleStandaloneServer,
14    DsRole_RoleMemberServer,
15    DsRole_RoleBackupDomainController,
16    DsRole_RolePrimaryDomainController,
17}}
18ENUM!{enum DSROLE_SERVER_STATE {
19    DsRoleServerUnknown = 0,
20    DsRoleServerPrimary,
21    DsRoleServerBackup,
22}}
23pub type PDSROLE_SERVER_STATE = *mut DSROLE_SERVER_STATE;
24ENUM!{enum DSROLE_PRIMARY_DOMAIN_INFO_LEVEL {
25    DsRolePrimaryDomainInfoBasic = 1,
26    DsRoleUpgradeStatus,
27    DsRoleOperationState,
28}}
29pub const DSROLE_PRIMARY_DS_RUNNING: ULONG = 0x00000001;
30pub const DSROLE_PRIMARY_DS_MIXED_MODE: ULONG = 0x00000002;
31pub const DSROLE_UPGRADE_IN_PROGRESS: ULONG = 0x00000004;
32pub const DSROLE_PRIMARY_DS_READONLY: ULONG = 0x00000008;
33pub const DSROLE_PRIMARY_DOMAIN_GUID_PRESENT: ULONG = 0x01000000;
34STRUCT!{struct DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
35    MachineRole: DSROLE_MACHINE_ROLE,
36    Flags: ULONG,
37    DomainNameFlat: LPWSTR,
38    DomainNameDns: LPWSTR,
39    DomainForestName: LPWSTR,
40    DomainGuid: GUID,
41}}
42pub type PDSROLE_PRIMARY_DOMAIN_INFO_BASIC = *mut DSROLE_PRIMARY_DOMAIN_INFO_BASIC;
43STRUCT!{struct DSROLE_UPGRADE_STATUS_INFO {
44    OperationState: ULONG,
45    PreviousServerState: DSROLE_SERVER_STATE,
46}}
47pub type PDSROLE_UPGRADE_STATUS_INFO = *mut DSROLE_UPGRADE_STATUS_INFO;
48ENUM!{enum DSROLE_OPERATION_STATE {
49    DsRoleOperationIdle = 0,
50    DsRoleOperationActive,
51    DsRoleOperationNeedReboot,
52}}
53STRUCT!{struct DSROLE_OPERATION_STATE_INFO {
54    OperationState: DSROLE_OPERATION_STATE,
55}}
56pub type PDSROLE_OPERATION_STATE_INFO = *mut DSROLE_OPERATION_STATE_INFO;
57extern "system" {
58    pub fn DsRoleGetPrimaryDomainInformation(
59        lpServer: LPCWSTR,
60        InfoLevel: DSROLE_PRIMARY_DOMAIN_INFO_LEVEL,
61        Buffer: *mut PBYTE,
62    ) -> DWORD;
63    pub fn DsRoleFreeMemory(
64        Buffer: PVOID,
65    );
66}