mirror of
https://github.com/reactos/reactos.git
synced 2025-06-13 21:38:33 +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
|
list(APPEND SOURCE
|
||||||
DllMain.c
|
DllMain.c
|
||||||
|
GetFileInformationByHandleEx.c
|
||||||
GetTickCount64.c
|
GetTickCount64.c
|
||||||
InitOnceExecuteOnce.c
|
InitOnceExecuteOnce.c
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/kernel32_vista.def)
|
${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 InitOnceExecuteOnce(ptr ptr ptr ptr)
|
||||||
|
@ stdcall GetFileInformationByHandleEx(long long ptr long)
|
||||||
|
@ stdcall -ret64 GetTickCount64()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue