mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 14:39:46 +00:00
[KERNEL32_VISTA] Import GetFileInformationByHandleEx() from Wine Staging 1.7.55. CORE-10536
svn path=/trunk/; revision=69911
This commit is contained in:
parent
69c3747f2a
commit
2d36c27748
3 changed files with 73 additions and 1 deletions
|
@ -7,6 +7,7 @@ spec2def(kernel32_vista.dll kernel32_vista.spec ADD_IMPORTLIB)
|
|||
|
||||
list(APPEND SOURCE
|
||||
DllMain.c
|
||||
GetFileInformationByHandleEx.c
|
||||
GetTickCount64.c
|
||||
InitOnceExecuteOnce.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/kernel32_vista.def)
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
|
||||
#include "k32_vista.h"
|
||||
|
||||
#include <ndk/rtlfuncs.h>
|
||||
#include <ndk/iofuncs.h>
|
||||
|
||||
/* Taken from Wine kernel32/file.c */
|
||||
|
||||
/***********************************************************************
|
||||
* GetFileInformationByHandleEx (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI GetFileInformationByHandleEx( HANDLE handle, FILE_INFO_BY_HANDLE_CLASS class,
|
||||
LPVOID info, DWORD size )
|
||||
{
|
||||
NTSTATUS status;
|
||||
IO_STATUS_BLOCK io;
|
||||
|
||||
switch (class)
|
||||
{
|
||||
case FileStreamInfo:
|
||||
case FileCompressionInfo:
|
||||
case FileAttributeTagInfo:
|
||||
case FileRemoteProtocolInfo:
|
||||
case FileFullDirectoryInfo:
|
||||
case FileFullDirectoryRestartInfo:
|
||||
case FileStorageInfo:
|
||||
case FileAlignmentInfo:
|
||||
case FileIdInfo:
|
||||
case FileIdExtdDirectoryInfo:
|
||||
case FileIdExtdDirectoryRestartInfo:
|
||||
//FIXME( "%p, %u, %p, %u\n", handle, class, info, size );
|
||||
SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
||||
return FALSE;
|
||||
|
||||
case FileBasicInfo:
|
||||
status = NtQueryInformationFile( handle, &io, info, size, FileBasicInformation );
|
||||
break;
|
||||
|
||||
case FileStandardInfo:
|
||||
status = NtQueryInformationFile( handle, &io, info, size, FileStandardInformation );
|
||||
break;
|
||||
|
||||
case FileNameInfo:
|
||||
status = NtQueryInformationFile( handle, &io, info, size, FileNameInformation );
|
||||
break;
|
||||
|
||||
case FileIdBothDirectoryRestartInfo:
|
||||
case FileIdBothDirectoryInfo:
|
||||
status = NtQueryDirectoryFile( handle, NULL, NULL, NULL, &io, info, size,
|
||||
FileIdBothDirectoryInformation, FALSE, NULL,
|
||||
(class == FileIdBothDirectoryRestartInfo) );
|
||||
break;
|
||||
|
||||
case FileRenameInfo:
|
||||
case FileDispositionInfo:
|
||||
case FileAllocationInfo:
|
||||
case FileIoPriorityHintInfo:
|
||||
case FileEndOfFileInfo:
|
||||
default:
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (status != STATUS_SUCCESS)
|
||||
{
|
||||
SetLastError( RtlNtStatusToDosError( status ) );
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
@ stdcall -ret64 GetTickCount64()
|
||||
@ stdcall InitOnceExecuteOnce(ptr ptr ptr ptr)
|
||||
@ stdcall GetFileInformationByHandleEx(long long ptr long)
|
||||
@ stdcall -ret64 GetTickCount64()
|
||||
|
|
Loading…
Reference in a new issue