@@ -38,7 +38,6 @@ pub type ULONG = c_ulong;
38
38
39
39
pub type LPBOOL = * mut BOOL ;
40
40
pub type LPBYTE = * mut BYTE ;
41
- pub type LPBY_HANDLE_FILE_INFORMATION = * mut BY_HANDLE_FILE_INFORMATION ;
42
41
pub type LPCSTR = * const CHAR ;
43
42
pub type LPCVOID = * const c_void ;
44
43
pub type LPCWSTR = * const WCHAR ;
@@ -345,20 +344,6 @@ pub struct WIN32_FILE_ATTRIBUTE_DATA {
345
344
pub nFileSizeLow : DWORD ,
346
345
}
347
346
348
- #[ repr( C ) ]
349
- pub struct BY_HANDLE_FILE_INFORMATION {
350
- pub dwFileAttributes : DWORD ,
351
- pub ftCreationTime : FILETIME ,
352
- pub ftLastAccessTime : FILETIME ,
353
- pub ftLastWriteTime : FILETIME ,
354
- pub dwVolumeSerialNumber : DWORD ,
355
- pub nFileSizeHigh : DWORD ,
356
- pub nFileSizeLow : DWORD ,
357
- pub nNumberOfLinks : DWORD ,
358
- pub nFileIndexHigh : DWORD ,
359
- pub nFileIndexLow : DWORD ,
360
- }
361
-
362
347
#[ repr( C ) ]
363
348
#[ allow( dead_code) ] // we only use some variants
364
349
pub enum FILE_INFO_BY_HANDLE_CLASS {
@@ -661,6 +646,22 @@ pub struct timeval {
661
646
// Functions forbidden when targeting UWP
662
647
#[ cfg( not( target_vendor = "uwp" ) ) ]
663
648
ifdef ! {
649
+ #[ repr( C ) ]
650
+ pub struct BY_HANDLE_FILE_INFORMATION {
651
+ pub dwFileAttributes: DWORD ,
652
+ pub ftCreationTime: FILETIME ,
653
+ pub ftLastAccessTime: FILETIME ,
654
+ pub ftLastWriteTime: FILETIME ,
655
+ pub dwVolumeSerialNumber: DWORD ,
656
+ pub nFileSizeHigh: DWORD ,
657
+ pub nFileSizeLow: DWORD ,
658
+ pub nNumberOfLinks: DWORD ,
659
+ pub nFileIndexHigh: DWORD ,
660
+ pub nFileIndexLow: DWORD ,
661
+ }
662
+
663
+ pub type LPBY_HANDLE_FILE_INFORMATION = * mut BY_HANDLE_FILE_INFORMATION ;
664
+
664
665
pub const HANDLE_FLAG_INHERIT : DWORD = 0x00000001 ;
665
666
666
667
pub const TOKEN_READ : DWORD = 0x20008 ;
@@ -676,6 +677,9 @@ ifdef! {
676
677
pub fn GetUserProfileDirectoryW ( hToken: HANDLE ,
677
678
lpProfileDir: LPWSTR ,
678
679
lpcchSize: * mut DWORD ) -> BOOL ;
680
+ pub fn GetFileInformationByHandle ( hFile: HANDLE ,
681
+ lpFileInformation: LPBY_HANDLE_FILE_INFORMATION )
682
+ -> BOOL ;
679
683
pub fn SetHandleInformation ( hObject: HANDLE ,
680
684
dwMask: DWORD ,
681
685
dwFlags: DWORD ) -> BOOL ;
@@ -691,7 +695,20 @@ ifdef! {
691
695
ifdef ! {
692
696
pub const BCRYPT_USE_SYSTEM_PREFERRED_RNG : DWORD = 0x00000002 ;
693
697
698
+ #[ repr( C ) ]
699
+ pub struct FILE_STANDARD_INFO {
700
+ pub AllocationSize : LARGE_INTEGER ,
701
+ pub EndOfFile : LARGE_INTEGER ,
702
+ pub NumberOfLink : DWORD ,
703
+ pub DeletePending : BOOLEAN ,
704
+ pub Directory : BOOLEAN ,
705
+ }
706
+
694
707
extern "system" {
708
+ pub fn GetFileInformationByHandleEx ( hFile: HANDLE ,
709
+ fileInfoClass: FILE_INFO_BY_HANDLE_CLASS ,
710
+ lpFileInformation: LPVOID ,
711
+ dwBufferSize: DWORD ) -> BOOL ;
695
712
pub fn BCryptGenRandom ( hAlgorithm: LPVOID , pBuffer: * mut u8 ,
696
713
cbBuffer: ULONG , dwFlags: ULONG ) -> LONG ;
697
714
}
@@ -754,10 +771,6 @@ extern "system" {
754
771
pub fn RemoveDirectoryW ( lpPathName : LPCWSTR ) -> BOOL ;
755
772
pub fn SetFileAttributesW ( lpFileName : LPCWSTR ,
756
773
dwFileAttributes : DWORD ) -> BOOL ;
757
- pub fn GetFileInformationByHandle ( hFile : HANDLE ,
758
- lpFileInformation : LPBY_HANDLE_FILE_INFORMATION )
759
- -> BOOL ;
760
-
761
774
pub fn SetLastError ( dwErrCode : DWORD ) ;
762
775
pub fn GetCommandLineW ( ) -> * mut LPCWSTR ;
763
776
pub fn GetTempPathW ( nBufferLength : DWORD ,
0 commit comments