blob: b74c6478905e95216d3bf5d31ce9e2324b37d385 [file] [log] [blame]
// Copyright © 2015, skdltmxn
// Licensed under the MIT License <LICENSE.md>
// This file contains structures, function prototypes, and definitions for the NetDfs API
pub const DFS_VOLUME_STATES: ::DWORD = 0xF;
pub const DFS_VOLUME_STATE_OK: ::DWORD = 1;
pub const DFS_VOLUME_STATE_INCONSISTENT: ::DWORD = 2;
pub const DFS_VOLUME_STATE_OFFLINE: ::DWORD = 3;
pub const DFS_VOLUME_STATE_ONLINE: ::DWORD = 4;
pub const DFS_VOLUME_STATE_RESYNCHRONIZE: ::DWORD = 0x10;
pub const DFS_VOLUME_STATE_STANDBY: ::DWORD = 0x20;
pub const DFS_VOLUME_STATE_FORCE_SYNC: ::DWORD = 0x40;
pub const DFS_VOLUME_FLAVORS: ::DWORD = 0x0300;
pub const DFS_VOLUME_FLAVOR_UNUSED1: ::DWORD = 0x0000;
pub const DFS_VOLUME_FLAVOR_STANDALONE: ::DWORD = 0x0100;
pub const DFS_VOLUME_FLAVOR_AD_BLOB: ::DWORD = 0x0200;
pub const DFS_STORAGE_FLAVOR_UNUSED2: ::DWORD = 0x0300;
pub const DFS_STORAGE_STATES: ::ULONG = 0xF;
pub const DFS_STORAGE_STATE_OFFLINE: ::ULONG = 1;
pub const DFS_STORAGE_STATE_ONLINE: ::ULONG = 2;
pub const DFS_STORAGE_STATE_ACTIVE: ::ULONG = 4;
ENUM!{enum DFS_TARGET_PRIORITY_CLASS {
DfsInvalidPriorityClass = -1i32 as u32,
DfsSiteCostNormalPriorityClass = 0,
DfsGlobalHighPriorityClass,
DfsSiteCostHighPriorityClass,
DfsSiteCostLowPriorityClass,
DfsGlobalLowPriorityClass,
}}
STRUCT!{struct DFS_TARGET_PRIORITY {
TargetPriorityClass: DFS_TARGET_PRIORITY_CLASS,
TargetPriorityRank: ::USHORT,
Reserved: ::USHORT,
}}
pub type PDFS_TARGET_PRIORITY = *mut DFS_TARGET_PRIORITY;
STRUCT!{struct DFS_INFO_1 {
EntryPath: ::LPWSTR,
}}
pub type PDFS_INFO_1 = *mut DFS_INFO_1;
pub type LPDFS_INFO_1 = *mut DFS_INFO_1;
#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_1_32 {
EntryPath: ::ULONG,
}}
#[cfg(target_arch="x86_64")]
pub type PDFS_INFO_1_32 = *mut DFS_INFO_1_32;
#[cfg(target_arch="x86_64")]
pub type LPDFS_INFO_1_32 = *mut DFS_INFO_1_32;
STRUCT!{struct DFS_INFO_2 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
NumberOfStorages: ::DWORD,
}}
pub type PDFS_INFO_2 = *mut DFS_INFO_2;
pub type LPDFS_INFO_2 = *mut DFS_INFO_2;
#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_2_32 {
EntryPath: ::ULONG,
Comment: ::ULONG,
State: ::DWORD,
NumberOfStorages: ::DWORD,
}}
#[cfg(target_arch="x86_64")]
pub type PDFS_INFO_2_32 = *mut DFS_INFO_2_32;
#[cfg(target_arch="x86_64")]
pub type LPDFS_INFO_2_32 = *mut DFS_INFO_2_32;
STRUCT!{struct DFS_STORAGE_INFO {
State: ::ULONG,
ServerName: ::LPWSTR,
ShareName: ::LPWSTR,
}}
pub type PDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_STORAGE_INFO_0_32 {
State: ::ULONG,
ServerName: ::ULONG,
ShareName: ::ULONG,
}}
#[cfg(target_arch="x86_64")]
pub type PDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
#[cfg(target_arch="x86_64")]
pub type LPDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
STRUCT!{struct DFS_STORAGE_INFO_1 {
State: ::ULONG,
ServerName: ::LPWSTR,
ShareName: ::LPWSTR,
TargetPriority: DFS_TARGET_PRIORITY,
}}
pub type PDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
STRUCT!{struct DFS_INFO_3 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
NumberOfStorages: ::DWORD,
Storage: LPDFS_STORAGE_INFO,
}}
pub type PDFS_INFO_3 = *mut DFS_INFO_3;
pub type LPDFS_INFO_3 = *mut DFS_INFO_3;
#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_3_32 {
EntryPath: ::ULONG,
Comment: ::ULONG,
State: ::DWORD,
NumberOfStorages: ::DWORD,
Storage: ::ULONG,
}}
#[cfg(target_arch="x86_64")]
pub type PDFS_INFO_3_32 = *mut DFS_INFO_3_32;
#[cfg(target_arch="x86_64")]
pub type LPDFS_INFO_3_32 = *mut DFS_INFO_3_32;
STRUCT!{struct DFS_INFO_4 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
NumberOfStorages: ::DWORD,
Storage: LPDFS_STORAGE_INFO,
}}
pub type PDFS_INFO_4 = *mut DFS_INFO_4;
pub type LPDFS_INFO_4 = *mut DFS_INFO_4;
#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_4_32 {
EntryPath: ::ULONG,
Comment: ::ULONG,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
NumberOfStorages: ::DWORD,
Storage: ::ULONG,
}}
#[cfg(target_arch="x86_64")]
pub type PDFS_INFO_4_32 = *mut DFS_INFO_4_32;
#[cfg(target_arch="x86_64")]
pub type LPDFS_INFO_4_32 = *mut DFS_INFO_4_32;
STRUCT!{struct DFS_INFO_5 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
PropertyFlags: ::ULONG,
MetadataSize: ::ULONG,
NumberOfStorages: ::DWORD,
}}
pub type PDFS_INFO_5 = *mut DFS_INFO_5;
pub type LPDFS_INFO_5 = *mut DFS_INFO_5;
STRUCT!{struct DFS_INFO_6 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
PropertyFlags: ::ULONG,
MetadataSize: ::ULONG,
NumberOfStorages: ::DWORD,
Storage: LPDFS_STORAGE_INFO,
}}
pub type PDFS_INFO_6 = *mut DFS_INFO_6;
pub type LPDFS_INFO_6 = *mut DFS_INFO_6;
STRUCT!{struct DFS_INFO_7 {
GenerationGuid: ::GUID,
}}
pub type PDFS_INFO_7 = *mut DFS_INFO_7;
pub type LPDFS_INFO_7 = *mut DFS_INFO_7;
STRUCT!{struct DFS_INFO_8 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
PropertyFlags: ::ULONG,
MetadataSize: ::ULONG,
SdLengthReserved: ::ULONG,
pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
NumberOfStorages: ::DWORD,
}}
pub type PDFS_INFO_8 = *mut DFS_INFO_8;
pub type LPDFS_INFO_8 = *mut DFS_INFO_8;
STRUCT!{struct DFS_INFO_9 {
EntryPath: ::LPWSTR,
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
Guid: ::GUID,
PropertyFlags: ::ULONG,
MetadataSize: ::ULONG,
SdLengthReserved: ::ULONG,
pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
NumberOfStorages: ::DWORD,
Storage: LPDFS_STORAGE_INFO,
}}
pub type PDFS_INFO_9 = *mut DFS_INFO_9;
pub type LPDFS_INFO_9 = *mut DFS_INFO_9;
pub const DFS_PROPERTY_FLAG_INSITE_REFERRALS: ::ULONG = 0x00000001;
pub const DFS_PROPERTY_FLAG_ROOT_SCALABILITY: ::ULONG = 0x00000002;
pub const DFS_PROPERTY_FLAG_SITE_COSTING: ::ULONG = 0x00000004;
pub const DFS_PROPERTY_FLAG_TARGET_FAILBACK: ::ULONG = 0x00000008;
pub const DFS_PROPERTY_FLAG_CLUSTER_ENABLED: ::ULONG = 0x00000010;
pub const DFS_PROPERTY_FLAG_ABDE: ::ULONG = 0x00000020;
pub const DFS_VALID_PROPERTY_FLAGS: ::ULONG = DFS_PROPERTY_FLAG_INSITE_REFERRALS
| DFS_PROPERTY_FLAG_ROOT_SCALABILITY | DFS_PROPERTY_FLAG_SITE_COSTING
| DFS_PROPERTY_FLAG_TARGET_FAILBACK | DFS_PROPERTY_FLAG_CLUSTER_ENABLED
| DFS_PROPERTY_FLAG_ABDE;
STRUCT!{struct DFS_INFO_50 {
NamespaceMajorVersion: ::ULONG,
NamespaceMinorVersion: ::ULONG,
NamespaceCapabilities: ::ULONGLONG,
}}
pub type PDFS_INFO_50 = *mut DFS_INFO_50;
pub type LPDFS_INFO_50 = *mut DFS_INFO_50;
STRUCT!{struct DFS_INFO_100 {
Comment: ::LPWSTR,
}}
pub type PDFS_INFO_100 = *mut DFS_INFO_100;
pub type LPDFS_INFO_100 = *mut DFS_INFO_100;
STRUCT!{struct DFS_INFO_101 {
State: ::DWORD,
}}
pub type PDFS_INFO_101 = *mut DFS_INFO_101;
pub type LPDFS_INFO_101 = *mut DFS_INFO_101;
STRUCT!{struct DFS_INFO_102 {
Timeout: ::ULONG,
}}
pub type PDFS_INFO_102 = *mut DFS_INFO_102;
pub type LPDFS_INFO_102 = *mut DFS_INFO_102;
STRUCT!{struct DFS_INFO_103 {
PropertyFlagMask: ::ULONG,
PropertyFlags: ::ULONG,
}}
pub type PDFS_INFO_103 = *mut DFS_INFO_103;
pub type LPDFS_INFO_103 = *mut DFS_INFO_103;
STRUCT!{struct DFS_INFO_104 {
TargetPriority: DFS_TARGET_PRIORITY,
}}
pub type PDFS_INFO_104 = *mut DFS_INFO_104;
pub type LPDFS_INFO_104 = *mut DFS_INFO_104;
STRUCT!{struct DFS_INFO_105 {
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
PropertyFlagMask: ::ULONG,
PropertyFlags: ::ULONG,
}}
pub type PDFS_INFO_105 = *mut DFS_INFO_105;
pub type LPDFS_INFO_105 = *mut DFS_INFO_105;
STRUCT!{struct DFS_INFO_106 {
State: ::DWORD,
TargetPriority: DFS_TARGET_PRIORITY,
}}
pub type PDFS_INFO_106 = *mut DFS_INFO_106;
pub type LPDFS_INFO_106 = *mut DFS_INFO_106;
STRUCT!{struct DFS_INFO_107 {
Comment: ::LPWSTR,
State: ::DWORD,
Timeout: ::ULONG,
PropertyFlagMask: ::ULONG,
PropertyFlags: ::ULONG,
SdLengthReserved: ::ULONG,
pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
}}
pub type PDFS_INFO_107 = *mut DFS_INFO_107;
pub type LPDFS_INFO_107 = *mut DFS_INFO_107;
STRUCT!{struct DFS_INFO_150 {
SdLengthReserved: ::ULONG,
pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
}}
pub type PDFS_INFO_150 = *mut DFS_INFO_150;
pub type LPDFS_INFO_150 = *mut DFS_INFO_150;
STRUCT!{struct DFS_INFO_200 {
FtDfsName: ::LPWSTR,
}}
pub type PDFS_INFO_200 = *mut DFS_INFO_200;
pub type LPDFS_INFO_200 = *mut DFS_INFO_200;
STRUCT!{struct DFS_INFO_300 {
Flags: ::DWORD,
DfsName: ::LPWSTR,
}}
pub type PDFS_INFO_300 = *mut DFS_INFO_300;
pub type LPDFS_INFO_300 = *mut DFS_INFO_300;
pub const DFS_ADD_VOLUME: ::DWORD = 1;
pub const DFS_RESTORE_VOLUME: ::DWORD = 2;
pub const NET_DFS_SETDC_FLAGS: ::DWORD = 0x00000000;
pub const NET_DFS_SETDC_TIMEOUT: ::DWORD = 0x00000001;
pub const NET_DFS_SETDC_INITPKT: ::DWORD = 0x00000002;
STRUCT!{struct DFS_SITENAME_INFO {
SiteFlags: ::ULONG,
SiteName: ::LPWSTR,
}}
pub type PDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
pub const DFS_SITE_PRIMARY: ::ULONG = 0x1;
STRUCT!{struct DFS_SITELIST_INFO {
cSites: ::ULONG,
Site: [DFS_SITENAME_INFO; 1],
}}
pub type PDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
ENUM!{enum DFS_NAMESPACE_VERSION_ORIGIN {
DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0,
DFS_NAMESPACE_VERSION_ORIGIN_SERVER,
DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN,
}}
pub type PDFS_NAMESPACE_VERSION_ORIGIN = *mut DFS_NAMESPACE_VERSION_ORIGIN;
pub const DFS_NAMESPACE_CAPABILITY_ABDE: ::ULONGLONG = 0x0000000000000001;
STRUCT!{struct DFS_SUPPORTED_NAMESPACE_VERSION_INFO {
DomainDfsMajorVersion: ::ULONG,
DomainDfsMinorVersion: ::ULONG,
DomainDfsCapabilities: ::ULONGLONG,
StandaloneDfsMajorVersion: ::ULONG,
StandaloneDfsMinorVersion: ::ULONG,
StandaloneDfsCapabilities: ::ULONGLONG,
}}
pub type PDFS_SUPPORTED_NAMESPACE_VERSION_INFO = *mut DFS_SUPPORTED_NAMESPACE_VERSION_INFO;