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