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 // This file contains structures, function prototypes, and definitions for the NetDfs API 7 use shared::guiddef::GUID; 8 use shared::lmcons::NET_API_STATUS; 9 use shared::minwindef::{DWORD, LPBYTE, LPDWORD, ULONG, USHORT}; 10 use um::winnt::{LPWSTR, PSECURITY_DESCRIPTOR, PWSTR, SECURITY_INFORMATION, ULONGLONG, WCHAR}; 11 pub const DFS_VOLUME_STATES: DWORD = 0xF; 12 pub const DFS_VOLUME_STATE_OK: DWORD = 1; 13 pub const DFS_VOLUME_STATE_INCONSISTENT: DWORD = 2; 14 pub const DFS_VOLUME_STATE_OFFLINE: DWORD = 3; 15 pub const DFS_VOLUME_STATE_ONLINE: DWORD = 4; 16 pub const DFS_VOLUME_STATE_RESYNCHRONIZE: DWORD = 0x10; 17 pub const DFS_VOLUME_STATE_STANDBY: DWORD = 0x20; 18 pub const DFS_VOLUME_STATE_FORCE_SYNC: DWORD = 0x40; 19 pub const DFS_VOLUME_FLAVORS: DWORD = 0x0300; 20 pub const DFS_VOLUME_FLAVOR_UNUSED1: DWORD = 0x0000; 21 pub const DFS_VOLUME_FLAVOR_STANDALONE: DWORD = 0x0100; 22 pub const DFS_VOLUME_FLAVOR_AD_BLOB: DWORD = 0x0200; 23 pub const DFS_STORAGE_FLAVOR_UNUSED2: DWORD = 0x0300; 24 pub const DFS_STORAGE_STATES: ULONG = 0xF; 25 pub const DFS_STORAGE_STATE_OFFLINE: ULONG = 1; 26 pub const DFS_STORAGE_STATE_ONLINE: ULONG = 2; 27 pub const DFS_STORAGE_STATE_ACTIVE: ULONG = 4; 28 ENUM!{enum DFS_TARGET_PRIORITY_CLASS { 29 DfsInvalidPriorityClass = -1i32 as u32, 30 DfsSiteCostNormalPriorityClass = 0, 31 DfsGlobalHighPriorityClass, 32 DfsSiteCostHighPriorityClass, 33 DfsSiteCostLowPriorityClass, 34 DfsGlobalLowPriorityClass, 35 }} 36 STRUCT!{struct DFS_TARGET_PRIORITY { 37 TargetPriorityClass: DFS_TARGET_PRIORITY_CLASS, 38 TargetPriorityRank: USHORT, 39 Reserved: USHORT, 40 }} 41 pub type PDFS_TARGET_PRIORITY = *mut DFS_TARGET_PRIORITY; 42 STRUCT!{struct DFS_INFO_1 { 43 EntryPath: LPWSTR, 44 }} 45 pub type PDFS_INFO_1 = *mut DFS_INFO_1; 46 pub type LPDFS_INFO_1 = *mut DFS_INFO_1; 47 #[cfg(target_pointer_width = "64")] 48 IFDEF!{ 49 STRUCT!{struct DFS_INFO_1_32 { 50 EntryPath: ULONG, 51 }} 52 pub type PDFS_INFO_1_32 = *mut DFS_INFO_1_32; 53 pub type LPDFS_INFO_1_32 = *mut DFS_INFO_1_32; 54 } 55 STRUCT!{struct DFS_INFO_2 { 56 EntryPath: LPWSTR, 57 Comment: LPWSTR, 58 State: DWORD, 59 NumberOfStorages: DWORD, 60 }} 61 pub type PDFS_INFO_2 = *mut DFS_INFO_2; 62 pub type LPDFS_INFO_2 = *mut DFS_INFO_2; 63 #[cfg(target_pointer_width = "64")] 64 IFDEF!{ 65 STRUCT!{struct DFS_INFO_2_32 { 66 EntryPath: ULONG, 67 Comment: ULONG, 68 State: DWORD, 69 NumberOfStorages: DWORD, 70 }} 71 pub type PDFS_INFO_2_32 = *mut DFS_INFO_2_32; 72 pub type LPDFS_INFO_2_32 = *mut DFS_INFO_2_32; 73 } 74 STRUCT!{struct DFS_STORAGE_INFO { 75 State: ULONG, 76 ServerName: LPWSTR, 77 ShareName: LPWSTR, 78 }} 79 pub type PDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO; 80 pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO; 81 #[cfg(target_pointer_width = "64")] 82 IFDEF!{ 83 STRUCT!{struct DFS_STORAGE_INFO_0_32 { 84 State: ULONG, 85 ServerName: ULONG, 86 ShareName: ULONG, 87 }} 88 pub type PDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32; 89 pub type LPDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32; 90 } 91 STRUCT!{struct DFS_STORAGE_INFO_1 { 92 State: ULONG, 93 ServerName: LPWSTR, 94 ShareName: LPWSTR, 95 TargetPriority: DFS_TARGET_PRIORITY, 96 }} 97 pub type PDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1; 98 pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1; 99 STRUCT!{struct DFS_INFO_3 { 100 EntryPath: LPWSTR, 101 Comment: LPWSTR, 102 State: DWORD, 103 NumberOfStorages: DWORD, 104 Storage: LPDFS_STORAGE_INFO, 105 }} 106 pub type PDFS_INFO_3 = *mut DFS_INFO_3; 107 pub type LPDFS_INFO_3 = *mut DFS_INFO_3; 108 #[cfg(target_pointer_width = "64")] 109 IFDEF!{ 110 STRUCT!{struct DFS_INFO_3_32 { 111 EntryPath: ULONG, 112 Comment: ULONG, 113 State: DWORD, 114 NumberOfStorages: DWORD, 115 Storage: ULONG, 116 }} 117 pub type PDFS_INFO_3_32 = *mut DFS_INFO_3_32; 118 pub type LPDFS_INFO_3_32 = *mut DFS_INFO_3_32; 119 } 120 STRUCT!{struct DFS_INFO_4 { 121 EntryPath: LPWSTR, 122 Comment: LPWSTR, 123 State: DWORD, 124 Timeout: ULONG, 125 Guid: GUID, 126 NumberOfStorages: DWORD, 127 Storage: LPDFS_STORAGE_INFO, 128 }} 129 pub type PDFS_INFO_4 = *mut DFS_INFO_4; 130 pub type LPDFS_INFO_4 = *mut DFS_INFO_4; 131 #[cfg(target_pointer_width = "64")] 132 IFDEF!{ 133 STRUCT!{struct DFS_INFO_4_32 { 134 EntryPath: ULONG, 135 Comment: ULONG, 136 State: DWORD, 137 Timeout: ULONG, 138 Guid: GUID, 139 NumberOfStorages: DWORD, 140 Storage: ULONG, 141 }} 142 pub type PDFS_INFO_4_32 = *mut DFS_INFO_4_32; 143 pub type LPDFS_INFO_4_32 = *mut DFS_INFO_4_32; 144 } 145 STRUCT!{struct DFS_INFO_5 { 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 }} 155 pub type PDFS_INFO_5 = *mut DFS_INFO_5; 156 pub type LPDFS_INFO_5 = *mut DFS_INFO_5; 157 STRUCT!{struct DFS_INFO_6 { 158 EntryPath: LPWSTR, 159 Comment: LPWSTR, 160 State: DWORD, 161 Timeout: ULONG, 162 Guid: GUID, 163 PropertyFlags: ULONG, 164 MetadataSize: ULONG, 165 NumberOfStorages: DWORD, 166 Storage: LPDFS_STORAGE_INFO, 167 }} 168 pub type PDFS_INFO_6 = *mut DFS_INFO_6; 169 pub type LPDFS_INFO_6 = *mut DFS_INFO_6; 170 STRUCT!{struct DFS_INFO_7 { 171 GenerationGuid: GUID, 172 }} 173 pub type PDFS_INFO_7 = *mut DFS_INFO_7; 174 pub type LPDFS_INFO_7 = *mut DFS_INFO_7; 175 STRUCT!{struct DFS_INFO_8 { 176 EntryPath: LPWSTR, 177 Comment: LPWSTR, 178 State: DWORD, 179 Timeout: ULONG, 180 Guid: GUID, 181 PropertyFlags: ULONG, 182 MetadataSize: ULONG, 183 SdLengthReserved: ULONG, 184 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 185 NumberOfStorages: DWORD, 186 }} 187 pub type PDFS_INFO_8 = *mut DFS_INFO_8; 188 pub type LPDFS_INFO_8 = *mut DFS_INFO_8; 189 STRUCT!{struct DFS_INFO_9 { 190 EntryPath: LPWSTR, 191 Comment: LPWSTR, 192 State: DWORD, 193 Timeout: ULONG, 194 Guid: GUID, 195 PropertyFlags: ULONG, 196 MetadataSize: ULONG, 197 SdLengthReserved: ULONG, 198 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 199 NumberOfStorages: DWORD, 200 Storage: LPDFS_STORAGE_INFO, 201 }} 202 pub type PDFS_INFO_9 = *mut DFS_INFO_9; 203 pub type LPDFS_INFO_9 = *mut DFS_INFO_9; 204 pub const DFS_VALID_PROPERTY_FLAGS: ULONG = DFS_PROPERTY_FLAG_INSITE_REFERRALS 205 | DFS_PROPERTY_FLAG_ROOT_SCALABILITY | DFS_PROPERTY_FLAG_SITE_COSTING 206 | DFS_PROPERTY_FLAG_TARGET_FAILBACK | DFS_PROPERTY_FLAG_CLUSTER_ENABLED 207 | DFS_PROPERTY_FLAG_ABDE; 208 pub const DFS_PROPERTY_FLAG_INSITE_REFERRALS: ULONG = 0x00000001; 209 pub const DFS_PROPERTY_FLAG_ROOT_SCALABILITY: ULONG = 0x00000002; 210 pub const DFS_PROPERTY_FLAG_SITE_COSTING: ULONG = 0x00000004; 211 pub const DFS_PROPERTY_FLAG_TARGET_FAILBACK: ULONG = 0x00000008; 212 pub const DFS_PROPERTY_FLAG_CLUSTER_ENABLED: ULONG = 0x00000010; 213 pub const DFS_PROPERTY_FLAG_ABDE: ULONG = 0x00000020; 214 STRUCT!{struct DFS_INFO_50 { 215 NamespaceMajorVersion: ULONG, 216 NamespaceMinorVersion: ULONG, 217 NamespaceCapabilities: ULONGLONG, 218 }} 219 pub type PDFS_INFO_50 = *mut DFS_INFO_50; 220 pub type LPDFS_INFO_50 = *mut DFS_INFO_50; 221 STRUCT!{struct DFS_INFO_100 { 222 Comment: LPWSTR, 223 }} 224 pub type PDFS_INFO_100 = *mut DFS_INFO_100; 225 pub type LPDFS_INFO_100 = *mut DFS_INFO_100; 226 STRUCT!{struct DFS_INFO_101 { 227 State: DWORD, 228 }} 229 pub type PDFS_INFO_101 = *mut DFS_INFO_101; 230 pub type LPDFS_INFO_101 = *mut DFS_INFO_101; 231 STRUCT!{struct DFS_INFO_102 { 232 Timeout: ULONG, 233 }} 234 pub type PDFS_INFO_102 = *mut DFS_INFO_102; 235 pub type LPDFS_INFO_102 = *mut DFS_INFO_102; 236 STRUCT!{struct DFS_INFO_103 { 237 PropertyFlagMask: ULONG, 238 PropertyFlags: ULONG, 239 }} 240 pub type PDFS_INFO_103 = *mut DFS_INFO_103; 241 pub type LPDFS_INFO_103 = *mut DFS_INFO_103; 242 STRUCT!{struct DFS_INFO_104 { 243 TargetPriority: DFS_TARGET_PRIORITY, 244 }} 245 pub type PDFS_INFO_104 = *mut DFS_INFO_104; 246 pub type LPDFS_INFO_104 = *mut DFS_INFO_104; 247 STRUCT!{struct DFS_INFO_105 { 248 Comment: LPWSTR, 249 State: DWORD, 250 Timeout: ULONG, 251 PropertyFlagMask: ULONG, 252 PropertyFlags: ULONG, 253 }} 254 pub type PDFS_INFO_105 = *mut DFS_INFO_105; 255 pub type LPDFS_INFO_105 = *mut DFS_INFO_105; 256 STRUCT!{struct DFS_INFO_106 { 257 State: DWORD, 258 TargetPriority: DFS_TARGET_PRIORITY, 259 }} 260 pub type PDFS_INFO_106 = *mut DFS_INFO_106; 261 pub type LPDFS_INFO_106 = *mut DFS_INFO_106; 262 STRUCT!{struct DFS_INFO_107 { 263 Comment: LPWSTR, 264 State: DWORD, 265 Timeout: ULONG, 266 PropertyFlagMask: ULONG, 267 PropertyFlags: ULONG, 268 SdLengthReserved: ULONG, 269 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 270 }} 271 pub type PDFS_INFO_107 = *mut DFS_INFO_107; 272 pub type LPDFS_INFO_107 = *mut DFS_INFO_107; 273 STRUCT!{struct DFS_INFO_150 { 274 SdLengthReserved: ULONG, 275 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 276 }} 277 pub type PDFS_INFO_150 = *mut DFS_INFO_150; 278 pub type LPDFS_INFO_150 = *mut DFS_INFO_150; 279 STRUCT!{struct DFS_INFO_200 { 280 FtDfsName: LPWSTR, 281 }} 282 pub type PDFS_INFO_200 = *mut DFS_INFO_200; 283 pub type LPDFS_INFO_200 = *mut DFS_INFO_200; 284 STRUCT!{struct DFS_INFO_300 { 285 Flags: DWORD, 286 DfsName: LPWSTR, 287 }} 288 pub type PDFS_INFO_300 = *mut DFS_INFO_300; 289 pub type LPDFS_INFO_300 = *mut DFS_INFO_300; 290 extern "system" { NetDfsAdd( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Comment: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS291 pub fn NetDfsAdd( 292 DfsEntryPath: LPWSTR, 293 ServerName: LPWSTR, 294 ShareName: LPWSTR, 295 Comment: LPWSTR, 296 Flags: DWORD, 297 ) -> NET_API_STATUS; 298 } 299 pub const DFS_ADD_VOLUME: DWORD = 1; 300 pub const DFS_RESTORE_VOLUME: DWORD = 2; 301 extern "system" { NetDfsAddStdRoot( ServerName: LPWSTR, RootShare: LPWSTR, Comment: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS302 pub fn NetDfsAddStdRoot( 303 ServerName: LPWSTR, 304 RootShare: LPWSTR, 305 Comment: LPWSTR, 306 Flags: DWORD, 307 ) -> NET_API_STATUS; NetDfsRemoveStdRoot( ServerName: LPWSTR, RootShare: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS308 pub fn NetDfsRemoveStdRoot( 309 ServerName: LPWSTR, 310 RootShare: LPWSTR, 311 Flags: DWORD, 312 ) -> NET_API_STATUS; NetDfsAddFtRoot( ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Comment: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS313 pub fn NetDfsAddFtRoot( 314 ServerName: LPWSTR, 315 RootShare: LPWSTR, 316 FtDfsName: LPWSTR, 317 Comment: LPWSTR, 318 Flags: DWORD, 319 ) -> NET_API_STATUS; NetDfsRemoveFtRoot( ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS320 pub fn NetDfsRemoveFtRoot( 321 ServerName: LPWSTR, 322 RootShare: LPWSTR, 323 FtDfsName: LPWSTR, 324 Flags: DWORD, 325 ) -> NET_API_STATUS; NetDfsRemoveFtRootForced( DomainName: LPWSTR, ServerName: LPWSTR, RootShare: LPWSTR, FtDfsName: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS326 pub fn NetDfsRemoveFtRootForced( 327 DomainName: LPWSTR, 328 ServerName: LPWSTR, 329 RootShare: LPWSTR, 330 FtDfsName: LPWSTR, 331 Flags: DWORD, 332 ) -> NET_API_STATUS; 333 } 334 pub const NET_DFS_SETDC_FLAGS: DWORD = 0x00000000; 335 pub const NET_DFS_SETDC_TIMEOUT: DWORD = 0x00000001; 336 pub const NET_DFS_SETDC_INITPKT: DWORD = 0x00000002; 337 STRUCT!{struct DFS_SITENAME_INFO { 338 SiteFlags: ULONG, 339 SiteName: LPWSTR, 340 }} 341 pub type PDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO; 342 pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO; 343 pub const DFS_SITE_PRIMARY: ULONG = 0x1; 344 STRUCT!{struct DFS_SITELIST_INFO { 345 cSites: ULONG, 346 Site: [DFS_SITENAME_INFO; 1], 347 }} 348 pub type PDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO; 349 pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO; 350 extern "system" { NetDfsRemove( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, ) -> NET_API_STATUS351 pub fn NetDfsRemove( 352 DfsEntryPath: LPWSTR, 353 ServerName: LPWSTR, 354 ShareName: LPWSTR, 355 ) -> NET_API_STATUS; NetDfsEnum( DfsName: LPWSTR, Level: DWORD, PrefMaxLen: DWORD, Buffer: *mut LPBYTE, EntriesRead: LPDWORD, ResumeHandle: LPDWORD, ) -> NET_API_STATUS356 pub fn NetDfsEnum( 357 DfsName: LPWSTR, 358 Level: DWORD, 359 PrefMaxLen: DWORD, 360 Buffer: *mut LPBYTE, 361 EntriesRead: LPDWORD, 362 ResumeHandle: LPDWORD, 363 ) -> NET_API_STATUS; NetDfsGetInfo( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: *mut LPBYTE, ) -> NET_API_STATUS364 pub fn NetDfsGetInfo( 365 DfsEntryPath: LPWSTR, 366 ServerName: LPWSTR, 367 ShareName: LPWSTR, 368 Level: DWORD, 369 Buffer: *mut LPBYTE, 370 ) -> NET_API_STATUS; NetDfsSetInfo( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: LPBYTE, ) -> NET_API_STATUS371 pub fn NetDfsSetInfo( 372 DfsEntryPath: LPWSTR, 373 ServerName: LPWSTR, 374 ShareName: LPWSTR, 375 Level: DWORD, 376 Buffer: LPBYTE, 377 ) -> NET_API_STATUS; NetDfsGetClientInfo( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: *mut LPBYTE, ) -> NET_API_STATUS378 pub fn NetDfsGetClientInfo( 379 DfsEntryPath: LPWSTR, 380 ServerName: LPWSTR, 381 ShareName: LPWSTR, 382 Level: DWORD, 383 Buffer: *mut LPBYTE, 384 ) -> NET_API_STATUS; NetDfsSetClientInfo( DfsEntryPath: LPWSTR, ServerName: LPWSTR, ShareName: LPWSTR, Level: DWORD, Buffer: LPBYTE, ) -> NET_API_STATUS385 pub fn NetDfsSetClientInfo( 386 DfsEntryPath: LPWSTR, 387 ServerName: LPWSTR, 388 ShareName: LPWSTR, 389 Level: DWORD, 390 Buffer: LPBYTE, 391 ) -> NET_API_STATUS; NetDfsMove( OldDfsEntryPath: LPWSTR, NewDfsEntryPath: LPWSTR, Flags: ULONG, ) -> NET_API_STATUS392 pub fn NetDfsMove( 393 OldDfsEntryPath: LPWSTR, 394 NewDfsEntryPath: LPWSTR, 395 Flags: ULONG, 396 ) -> NET_API_STATUS; 397 } 398 pub const DFS_MOVE_FLAG_REPLACE_IF_EXISTS: ULONG = 0x00000001; 399 extern "system" { NetDfsRename( Path: LPWSTR, NewPath: LPWSTR, ) -> NET_API_STATUS400 pub fn NetDfsRename( 401 Path: LPWSTR, 402 NewPath: LPWSTR, 403 ) -> NET_API_STATUS; NetDfsAddRootTarget( pDfsPath: LPWSTR, pTargetPath: LPWSTR, MajorVersion: ULONG, pComment: LPWSTR, Flags: ULONG, ) -> NET_API_STATUS404 pub fn NetDfsAddRootTarget( 405 pDfsPath: LPWSTR, 406 pTargetPath: LPWSTR, 407 MajorVersion: ULONG, 408 pComment: LPWSTR, 409 Flags: ULONG, 410 ) -> NET_API_STATUS; 411 } 412 pub const DFS_FORCE_REMOVE: ULONG = 0x80000000; 413 extern "system" { NetDfsRemoveRootTarget( pDfsPath: LPWSTR, pTargetPath: LPWSTR, Flags: DWORD, ) -> NET_API_STATUS414 pub fn NetDfsRemoveRootTarget( 415 pDfsPath: LPWSTR, 416 pTargetPath: LPWSTR, 417 Flags: DWORD, 418 ) -> NET_API_STATUS; NetDfsGetSecurity( DfsEntryPath: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD, ) -> NET_API_STATUS419 pub fn NetDfsGetSecurity( 420 DfsEntryPath: LPWSTR, 421 SecurityInformation: SECURITY_INFORMATION, 422 ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, 423 lpcbSecurityDescriptor: LPDWORD, 424 ) -> NET_API_STATUS; NetDfsSetSecurity( DfsEntryPath: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> NET_API_STATUS425 pub fn NetDfsSetSecurity( 426 DfsEntryPath: LPWSTR, 427 SecurityInformation: SECURITY_INFORMATION, 428 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 429 ) -> NET_API_STATUS; NetDfsGetStdContainerSecurity( MachineName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD, ) -> NET_API_STATUS430 pub fn NetDfsGetStdContainerSecurity( 431 MachineName: LPWSTR, 432 SecurityInformation: SECURITY_INFORMATION, 433 ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, 434 lpcbSecurityDescriptor: LPDWORD, 435 ) -> NET_API_STATUS; NetDfsSetStdContainerSecurity( MachineName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> NET_API_STATUS436 pub fn NetDfsSetStdContainerSecurity( 437 MachineName: LPWSTR, 438 SecurityInformation: SECURITY_INFORMATION, 439 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 440 ) -> NET_API_STATUS; NetDfsGetFtContainerSecurity( DomainName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, lpcbSecurityDescriptor: LPDWORD, ) -> NET_API_STATUS441 pub fn NetDfsGetFtContainerSecurity( 442 DomainName: LPWSTR, 443 SecurityInformation: SECURITY_INFORMATION, 444 ppSecurityDescriptor: *mut PSECURITY_DESCRIPTOR, 445 lpcbSecurityDescriptor: LPDWORD, 446 ) -> NET_API_STATUS; NetDfsSetFtContainerSecurity( DomainName: LPWSTR, SecurityInformation: SECURITY_INFORMATION, pSecurityDescriptor: PSECURITY_DESCRIPTOR, ) -> NET_API_STATUS447 pub fn NetDfsSetFtContainerSecurity( 448 DomainName: LPWSTR, 449 SecurityInformation: SECURITY_INFORMATION, 450 pSecurityDescriptor: PSECURITY_DESCRIPTOR, 451 ) -> NET_API_STATUS; 452 } 453 ENUM!{enum DFS_NAMESPACE_VERSION_ORIGIN { 454 DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0, 455 DFS_NAMESPACE_VERSION_ORIGIN_SERVER, 456 DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN, 457 }} 458 pub type PDFS_NAMESPACE_VERSION_ORIGIN = *mut DFS_NAMESPACE_VERSION_ORIGIN; 459 pub const DFS_NAMESPACE_CAPABILITY_ABDE: ULONGLONG = 0x0000000000000001; 460 STRUCT!{struct DFS_SUPPORTED_NAMESPACE_VERSION_INFO { 461 DomainDfsMajorVersion: ULONG, 462 DomainDfsMinorVersion: ULONG, 463 DomainDfsCapabilities: ULONGLONG, 464 StandaloneDfsMajorVersion: ULONG, 465 StandaloneDfsMinorVersion: ULONG, 466 StandaloneDfsCapabilities: ULONGLONG, 467 }} 468 pub type PDFS_SUPPORTED_NAMESPACE_VERSION_INFO = *mut DFS_SUPPORTED_NAMESPACE_VERSION_INFO; 469 extern "system" { NetDfsGetSupportedNamespaceVersion( Origin: DFS_NAMESPACE_VERSION_ORIGIN, pName: PWSTR, ppVersionInfo: *mut PDFS_SUPPORTED_NAMESPACE_VERSION_INFO, ) -> NET_API_STATUS470 pub fn NetDfsGetSupportedNamespaceVersion( 471 Origin: DFS_NAMESPACE_VERSION_ORIGIN, 472 pName: PWSTR, 473 ppVersionInfo: *mut PDFS_SUPPORTED_NAMESPACE_VERSION_INFO, 474 ) -> NET_API_STATUS; 475 } 476 STRUCT!{struct DFS_GET_PKT_ENTRY_STATE_ARG { 477 DfsEntryPathLen: USHORT, 478 ServerNameLen: USHORT, 479 ShareNameLen: USHORT, 480 Level: ULONG, 481 Buffer: [WCHAR; 1], 482 }} 483 pub type PDFS_GET_PKT_ENTRY_STATE_ARG = *mut DFS_GET_PKT_ENTRY_STATE_ARG; 484