1 // Copyright © 2015, skdltmxn 2 // Licensed under the MIT License <LICENSE.md> 3 // This file contains structures, function prototypes, and definitions for the NetDfs API 4 pub const DFS_VOLUME_STATES: ::DWORD = 0xF; 5 pub const DFS_VOLUME_STATE_OK: ::DWORD = 1; 6 pub const DFS_VOLUME_STATE_INCONSISTENT: ::DWORD = 2; 7 pub const DFS_VOLUME_STATE_OFFLINE: ::DWORD = 3; 8 pub const DFS_VOLUME_STATE_ONLINE: ::DWORD = 4; 9 pub const DFS_VOLUME_STATE_RESYNCHRONIZE: ::DWORD = 0x10; 10 pub const DFS_VOLUME_STATE_STANDBY: ::DWORD = 0x20; 11 pub const DFS_VOLUME_STATE_FORCE_SYNC: ::DWORD = 0x40; 12 pub const DFS_VOLUME_FLAVORS: ::DWORD = 0x0300; 13 pub const DFS_VOLUME_FLAVOR_UNUSED1: ::DWORD = 0x0000; 14 pub const DFS_VOLUME_FLAVOR_STANDALONE: ::DWORD = 0x0100; 15 pub const DFS_VOLUME_FLAVOR_AD_BLOB: ::DWORD = 0x0200; 16 pub const DFS_STORAGE_FLAVOR_UNUSED2: ::DWORD = 0x0300; 17 pub const DFS_STORAGE_STATES: ::ULONG = 0xF; 18 pub const DFS_STORAGE_STATE_OFFLINE: ::ULONG = 1; 19 pub const DFS_STORAGE_STATE_ONLINE: ::ULONG = 2; 20 pub const DFS_STORAGE_STATE_ACTIVE: ::ULONG = 4; 21 ENUM!{enum DFS_TARGET_PRIORITY_CLASS { 22 DfsInvalidPriorityClass = -1i32 as u32, 23 DfsSiteCostNormalPriorityClass = 0, 24 DfsGlobalHighPriorityClass, 25 DfsSiteCostHighPriorityClass, 26 DfsSiteCostLowPriorityClass, 27 DfsGlobalLowPriorityClass, 28 }} 29 STRUCT!{struct DFS_TARGET_PRIORITY { 30 TargetPriorityClass: DFS_TARGET_PRIORITY_CLASS, 31 TargetPriorityRank: ::USHORT, 32 Reserved: ::USHORT, 33 }} 34 pub type PDFS_TARGET_PRIORITY = *mut DFS_TARGET_PRIORITY; 35 STRUCT!{struct DFS_INFO_1 { 36 EntryPath: ::LPWSTR, 37 }} 38 pub type PDFS_INFO_1 = *mut DFS_INFO_1; 39 pub type LPDFS_INFO_1 = *mut DFS_INFO_1; 40 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_1_32 { 41 EntryPath: ::ULONG, 42 }} 43 #[cfg(target_arch="x86_64")] 44 pub type PDFS_INFO_1_32 = *mut DFS_INFO_1_32; 45 #[cfg(target_arch="x86_64")] 46 pub type LPDFS_INFO_1_32 = *mut DFS_INFO_1_32; 47 STRUCT!{struct DFS_INFO_2 { 48 EntryPath: ::LPWSTR, 49 Comment: ::LPWSTR, 50 State: ::DWORD, 51 NumberOfStorages: ::DWORD, 52 }} 53 pub type PDFS_INFO_2 = *mut DFS_INFO_2; 54 pub type LPDFS_INFO_2 = *mut DFS_INFO_2; 55 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_2_32 { 56 EntryPath: ::ULONG, 57 Comment: ::ULONG, 58 State: ::DWORD, 59 NumberOfStorages: ::DWORD, 60 }} 61 #[cfg(target_arch="x86_64")] 62 pub type PDFS_INFO_2_32 = *mut DFS_INFO_2_32; 63 #[cfg(target_arch="x86_64")] 64 pub type LPDFS_INFO_2_32 = *mut DFS_INFO_2_32; 65 STRUCT!{struct DFS_STORAGE_INFO { 66 State: ::ULONG, 67 ServerName: ::LPWSTR, 68 ShareName: ::LPWSTR, 69 }} 70 pub type PDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO; 71 pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO; 72 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_STORAGE_INFO_0_32 { 73 State: ::ULONG, 74 ServerName: ::ULONG, 75 ShareName: ::ULONG, 76 }} 77 #[cfg(target_arch="x86_64")] 78 pub type PDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32; 79 #[cfg(target_arch="x86_64")] 80 pub type LPDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32; 81 STRUCT!{struct DFS_STORAGE_INFO_1 { 82 State: ::ULONG, 83 ServerName: ::LPWSTR, 84 ShareName: ::LPWSTR, 85 TargetPriority: DFS_TARGET_PRIORITY, 86 }} 87 pub type PDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1; 88 pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1; 89 STRUCT!{struct DFS_INFO_3 { 90 EntryPath: ::LPWSTR, 91 Comment: ::LPWSTR, 92 State: ::DWORD, 93 NumberOfStorages: ::DWORD, 94 Storage: LPDFS_STORAGE_INFO, 95 }} 96 pub type PDFS_INFO_3 = *mut DFS_INFO_3; 97 pub type LPDFS_INFO_3 = *mut DFS_INFO_3; 98 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_3_32 { 99 EntryPath: ::ULONG, 100 Comment: ::ULONG, 101 State: ::DWORD, 102 NumberOfStorages: ::DWORD, 103 Storage: ::ULONG, 104 }} 105 #[cfg(target_arch="x86_64")] 106 pub type PDFS_INFO_3_32 = *mut DFS_INFO_3_32; 107 #[cfg(target_arch="x86_64")] 108 pub type LPDFS_INFO_3_32 = *mut DFS_INFO_3_32; 109 STRUCT!{struct DFS_INFO_4 { 110 EntryPath: ::LPWSTR, 111 Comment: ::LPWSTR, 112 State: ::DWORD, 113 Timeout: ::ULONG, 114 Guid: ::GUID, 115 NumberOfStorages: ::DWORD, 116 Storage: LPDFS_STORAGE_INFO, 117 }} 118 pub type PDFS_INFO_4 = *mut DFS_INFO_4; 119 pub type LPDFS_INFO_4 = *mut DFS_INFO_4; 120 #[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_4_32 { 121 EntryPath: ::ULONG, 122 Comment: ::ULONG, 123 State: ::DWORD, 124 Timeout: ::ULONG, 125 Guid: ::GUID, 126 NumberOfStorages: ::DWORD, 127 Storage: ::ULONG, 128 }} 129 #[cfg(target_arch="x86_64")] 130 pub type PDFS_INFO_4_32 = *mut DFS_INFO_4_32; 131 #[cfg(target_arch="x86_64")] 132 pub type LPDFS_INFO_4_32 = *mut DFS_INFO_4_32; 133 STRUCT!{struct DFS_INFO_5 { 134 EntryPath: ::LPWSTR, 135 Comment: ::LPWSTR, 136 State: ::DWORD, 137 Timeout: ::ULONG, 138 Guid: ::GUID, 139 PropertyFlags: ::ULONG, 140 MetadataSize: ::ULONG, 141 NumberOfStorages: ::DWORD, 142 }} 143 pub type PDFS_INFO_5 = *mut DFS_INFO_5; 144 pub type LPDFS_INFO_5 = *mut DFS_INFO_5; 145 STRUCT!{struct DFS_INFO_6 { 146 EntryPath: ::LPWSTR, 147 Comment: ::LPWSTR, 148 State: ::DWORD, 149 Timeout: ::ULONG, 150 Guid: ::GUID, 151 PropertyFlags: ::ULONG, 152 MetadataSize: ::ULONG, 153 NumberOfStorages: ::DWORD, 154 Storage: LPDFS_STORAGE_INFO, 155 }} 156 pub type PDFS_INFO_6 = *mut DFS_INFO_6; 157 pub type LPDFS_INFO_6 = *mut DFS_INFO_6; 158 STRUCT!{struct DFS_INFO_7 { 159 GenerationGuid: ::GUID, 160 }} 161 pub type PDFS_INFO_7 = *mut DFS_INFO_7; 162 pub type LPDFS_INFO_7 = *mut DFS_INFO_7; 163 STRUCT!{struct DFS_INFO_8 { 164 EntryPath: ::LPWSTR, 165 Comment: ::LPWSTR, 166 State: ::DWORD, 167 Timeout: ::ULONG, 168 Guid: ::GUID, 169 PropertyFlags: ::ULONG, 170 MetadataSize: ::ULONG, 171 SdLengthReserved: ::ULONG, 172 pSecurityDescriptor: ::PSECURITY_DESCRIPTOR, 173 NumberOfStorages: ::DWORD, 174 }} 175 pub type PDFS_INFO_8 = *mut DFS_INFO_8; 176 pub type LPDFS_INFO_8 = *mut DFS_INFO_8; 177 STRUCT!{struct DFS_INFO_9 { 178 EntryPath: ::LPWSTR, 179 Comment: ::LPWSTR, 180 State: ::DWORD, 181 Timeout: ::ULONG, 182 Guid: ::GUID, 183 PropertyFlags: ::ULONG, 184 MetadataSize: ::ULONG, 185 SdLengthReserved: ::ULONG, 186 pSecurityDescriptor: ::PSECURITY_DESCRIPTOR, 187 NumberOfStorages: ::DWORD, 188 Storage: LPDFS_STORAGE_INFO, 189 }} 190 pub type PDFS_INFO_9 = *mut DFS_INFO_9; 191 pub type LPDFS_INFO_9 = *mut DFS_INFO_9; 192 pub const DFS_PROPERTY_FLAG_INSITE_REFERRALS: ::ULONG = 0x00000001; 193 pub const DFS_PROPERTY_FLAG_ROOT_SCALABILITY: ::ULONG = 0x00000002; 194 pub const DFS_PROPERTY_FLAG_SITE_COSTING: ::ULONG = 0x00000004; 195 pub const DFS_PROPERTY_FLAG_TARGET_FAILBACK: ::ULONG = 0x00000008; 196 pub const DFS_PROPERTY_FLAG_CLUSTER_ENABLED: ::ULONG = 0x00000010; 197 pub const DFS_PROPERTY_FLAG_ABDE: ::ULONG = 0x00000020; 198 pub const DFS_VALID_PROPERTY_FLAGS: ::ULONG = DFS_PROPERTY_FLAG_INSITE_REFERRALS 199 | DFS_PROPERTY_FLAG_ROOT_SCALABILITY | DFS_PROPERTY_FLAG_SITE_COSTING 200 | DFS_PROPERTY_FLAG_TARGET_FAILBACK | DFS_PROPERTY_FLAG_CLUSTER_ENABLED 201 | DFS_PROPERTY_FLAG_ABDE; 202 STRUCT!{struct DFS_INFO_50 { 203 NamespaceMajorVersion: ::ULONG, 204 NamespaceMinorVersion: ::ULONG, 205 NamespaceCapabilities: ::ULONGLONG, 206 }} 207 pub type PDFS_INFO_50 = *mut DFS_INFO_50; 208 pub type LPDFS_INFO_50 = *mut DFS_INFO_50; 209 STRUCT!{struct DFS_INFO_100 { 210 Comment: ::LPWSTR, 211 }} 212 pub type PDFS_INFO_100 = *mut DFS_INFO_100; 213 pub type LPDFS_INFO_100 = *mut DFS_INFO_100; 214 STRUCT!{struct DFS_INFO_101 { 215 State: ::DWORD, 216 }} 217 pub type PDFS_INFO_101 = *mut DFS_INFO_101; 218 pub type LPDFS_INFO_101 = *mut DFS_INFO_101; 219 STRUCT!{struct DFS_INFO_102 { 220 Timeout: ::ULONG, 221 }} 222 pub type PDFS_INFO_102 = *mut DFS_INFO_102; 223 pub type LPDFS_INFO_102 = *mut DFS_INFO_102; 224 STRUCT!{struct DFS_INFO_103 { 225 PropertyFlagMask: ::ULONG, 226 PropertyFlags: ::ULONG, 227 }} 228 pub type PDFS_INFO_103 = *mut DFS_INFO_103; 229 pub type LPDFS_INFO_103 = *mut DFS_INFO_103; 230 STRUCT!{struct DFS_INFO_104 { 231 TargetPriority: DFS_TARGET_PRIORITY, 232 }} 233 pub type PDFS_INFO_104 = *mut DFS_INFO_104; 234 pub type LPDFS_INFO_104 = *mut DFS_INFO_104; 235 STRUCT!{struct DFS_INFO_105 { 236 Comment: ::LPWSTR, 237 State: ::DWORD, 238 Timeout: ::ULONG, 239 PropertyFlagMask: ::ULONG, 240 PropertyFlags: ::ULONG, 241 }} 242 pub type PDFS_INFO_105 = *mut DFS_INFO_105; 243 pub type LPDFS_INFO_105 = *mut DFS_INFO_105; 244 STRUCT!{struct DFS_INFO_106 { 245 State: ::DWORD, 246 TargetPriority: DFS_TARGET_PRIORITY, 247 }} 248 pub type PDFS_INFO_106 = *mut DFS_INFO_106; 249 pub type LPDFS_INFO_106 = *mut DFS_INFO_106; 250 STRUCT!{struct DFS_INFO_107 { 251 Comment: ::LPWSTR, 252 State: ::DWORD, 253 Timeout: ::ULONG, 254 PropertyFlagMask: ::ULONG, 255 PropertyFlags: ::ULONG, 256 SdLengthReserved: ::ULONG, 257 pSecurityDescriptor: ::PSECURITY_DESCRIPTOR, 258 }} 259 pub type PDFS_INFO_107 = *mut DFS_INFO_107; 260 pub type LPDFS_INFO_107 = *mut DFS_INFO_107; 261 STRUCT!{struct DFS_INFO_150 { 262 SdLengthReserved: ::ULONG, 263 pSecurityDescriptor: ::PSECURITY_DESCRIPTOR, 264 }} 265 pub type PDFS_INFO_150 = *mut DFS_INFO_150; 266 pub type LPDFS_INFO_150 = *mut DFS_INFO_150; 267 STRUCT!{struct DFS_INFO_200 { 268 FtDfsName: ::LPWSTR, 269 }} 270 pub type PDFS_INFO_200 = *mut DFS_INFO_200; 271 pub type LPDFS_INFO_200 = *mut DFS_INFO_200; 272 STRUCT!{struct DFS_INFO_300 { 273 Flags: ::DWORD, 274 DfsName: ::LPWSTR, 275 }} 276 pub type PDFS_INFO_300 = *mut DFS_INFO_300; 277 pub type LPDFS_INFO_300 = *mut DFS_INFO_300; 278 pub const DFS_ADD_VOLUME: ::DWORD = 1; 279 pub const DFS_RESTORE_VOLUME: ::DWORD = 2; 280 pub const NET_DFS_SETDC_FLAGS: ::DWORD = 0x00000000; 281 pub const NET_DFS_SETDC_TIMEOUT: ::DWORD = 0x00000001; 282 pub const NET_DFS_SETDC_INITPKT: ::DWORD = 0x00000002; 283 STRUCT!{struct DFS_SITENAME_INFO { 284 SiteFlags: ::ULONG, 285 SiteName: ::LPWSTR, 286 }} 287 pub type PDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO; 288 pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO; 289 pub const DFS_SITE_PRIMARY: ::ULONG = 0x1; 290 STRUCT!{struct DFS_SITELIST_INFO { 291 cSites: ::ULONG, 292 Site: [DFS_SITENAME_INFO; 1], 293 }} 294 pub type PDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO; 295 pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO; 296 ENUM!{enum DFS_NAMESPACE_VERSION_ORIGIN { 297 DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0, 298 DFS_NAMESPACE_VERSION_ORIGIN_SERVER, 299 DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN, 300 }} 301 pub type PDFS_NAMESPACE_VERSION_ORIGIN = *mut DFS_NAMESPACE_VERSION_ORIGIN; 302 pub const DFS_NAMESPACE_CAPABILITY_ABDE: ::ULONGLONG = 0x0000000000000001; 303 STRUCT!{struct DFS_SUPPORTED_NAMESPACE_VERSION_INFO { 304 DomainDfsMajorVersion: ::ULONG, 305 DomainDfsMinorVersion: ::ULONG, 306 DomainDfsCapabilities: ::ULONGLONG, 307 StandaloneDfsMajorVersion: ::ULONG, 308 StandaloneDfsMinorVersion: ::ULONG, 309 StandaloneDfsCapabilities: ::ULONGLONG, 310 }} 311 pub type PDFS_SUPPORTED_NAMESPACE_VERSION_INFO = *mut DFS_SUPPORTED_NAMESPACE_VERSION_INFO; 312