4 #include <ndk/rtlfuncs.h>
5 #include <ndk/iofuncs.h>
7 /* Taken from Wine kernel32/file.c */
9 /***********************************************************************
10 * GetFileInformationByHandleEx (KERNEL32.@)
12 BOOL WINAPI
GetFileInformationByHandleEx( HANDLE handle
, FILE_INFO_BY_HANDLE_CLASS
class,
13 LPVOID info
, DWORD size
)
21 case FileCompressionInfo
:
22 case FileAttributeTagInfo
:
23 case FileRemoteProtocolInfo
:
24 case FileFullDirectoryInfo
:
25 case FileFullDirectoryRestartInfo
:
27 case FileAlignmentInfo
:
29 case FileIdExtdDirectoryInfo
:
30 case FileIdExtdDirectoryRestartInfo
:
31 //FIXME( "%p, %u, %p, %u\n", handle, class, info, size );
32 SetLastError( ERROR_CALL_NOT_IMPLEMENTED
);
36 status
= NtQueryInformationFile( handle
, &io
, info
, size
, FileBasicInformation
);
39 case FileStandardInfo
:
40 status
= NtQueryInformationFile( handle
, &io
, info
, size
, FileStandardInformation
);
44 status
= NtQueryInformationFile( handle
, &io
, info
, size
, FileNameInformation
);
47 case FileIdBothDirectoryRestartInfo
:
48 case FileIdBothDirectoryInfo
:
49 status
= NtQueryDirectoryFile( handle
, NULL
, NULL
, NULL
, &io
, info
, size
,
50 FileIdBothDirectoryInformation
, FALSE
, NULL
,
51 (class == FileIdBothDirectoryRestartInfo
) );
55 case FileDispositionInfo
:
56 case FileAllocationInfo
:
57 case FileIoPriorityHintInfo
:
58 case FileEndOfFileInfo
:
60 SetLastError( ERROR_INVALID_PARAMETER
);
64 if (status
!= STATUS_SUCCESS
)
66 SetLastError( RtlNtStatusToDosError( status
) );