Module: wine Branch: master Commit: f1d888413fb8bb71253f4a5cf72bf88edc01d47d URL: https://source.winehq.org/git/wine.git/?a=commit;h=f1d888413fb8bb71253f4a5cf...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jul 28 16:27:10 2021 +0200
wow64: Add thunks for the file query information syscalls.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wow64/file.c | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/wow64/syscall.h | 6 +++ 2 files changed, 128 insertions(+)
diff --git a/dlls/wow64/file.c b/dlls/wow64/file.c index b1081735ea5..18c65de05d0 100644 --- a/dlls/wow64/file.c +++ b/dlls/wow64/file.c @@ -143,6 +143,128 @@ NTSTATUS WINAPI wow64_NtOpenFile( UINT *args ) }
+/********************************************************************** + * wow64_NtQueryAttributesFile + */ +NTSTATUS WINAPI wow64_NtQueryAttributesFile( UINT *args ) +{ + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + FILE_BASIC_INFORMATION *info = get_ptr( &args ); + + struct object_attr64 attr; + + return NtQueryAttributesFile( objattr_32to64( &attr, attr32 ), info ); +} + + +/********************************************************************** + * wow64_NtQueryDirectoryFile + */ +NTSTATUS WINAPI wow64_NtQueryDirectoryFile( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + HANDLE event = get_handle( &args ); + ULONG apc = get_ulong( &args ); + ULONG apc_param = get_ulong( &args ); + IO_STATUS_BLOCK32 *io32 = get_ptr( &args ); + void *buffer = get_ptr( &args ); + ULONG len = get_ulong( &args ); + FILE_INFORMATION_CLASS class = get_ulong( &args ); + BOOLEAN single_entry = get_ulong( &args ); + UNICODE_STRING32 *mask32 = get_ptr( &args ); + BOOLEAN restart_scan = get_ulong( &args ); + + UNICODE_STRING mask; + IO_STATUS_BLOCK io; + NTSTATUS status; + + status = NtQueryDirectoryFile( handle, event, apc_32to64( apc ), apc_param_32to64( apc, apc_param ), + iosb_32to64( &io, io32 ), buffer, len, class, single_entry, + unicode_str_32to64( &mask, mask32 ), restart_scan ); + put_iosb( io32, &io ); + return status; +} + + +/********************************************************************** + * wow64_NtQueryEaFile + */ +NTSTATUS WINAPI wow64_NtQueryEaFile( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + IO_STATUS_BLOCK32 *io32 = get_ptr( &args ); + void *buffer = get_ptr( &args ); + ULONG len = get_ulong( &args ); + BOOLEAN single_entry = get_ulong( &args ); + void *list = get_ptr( &args ); + ULONG list_len = get_ulong( &args ); + ULONG *index = get_ptr( &args ); + BOOLEAN restart = get_ulong( &args ); + + IO_STATUS_BLOCK io; + NTSTATUS status; + + status = NtQueryEaFile( handle, iosb_32to64( &io, io32 ), buffer, len, + single_entry, list, list_len, index, restart ); + put_iosb( io32, &io ); + return status; +} + + +/********************************************************************** + * wow64_NtQueryFullAttributesFile + */ +NTSTATUS WINAPI wow64_NtQueryFullAttributesFile( UINT *args ) +{ + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + FILE_NETWORK_OPEN_INFORMATION *info = get_ptr( &args ); + + struct object_attr64 attr; + + return NtQueryFullAttributesFile( objattr_32to64( &attr, attr32 ), info ); +} + + +/********************************************************************** + * wow64_NtQueryInformationFile + */ +NTSTATUS WINAPI wow64_NtQueryInformationFile( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + IO_STATUS_BLOCK32 *io32 = get_ptr( &args ); + void *info = get_ptr( &args ); + ULONG len = get_ulong( &args ); + FILE_INFORMATION_CLASS class = get_ulong( &args ); + + IO_STATUS_BLOCK io; + NTSTATUS status; + + status = NtQueryInformationFile( handle, iosb_32to64( &io, io32 ), info, len, class ); + put_iosb( io32, &io ); + return status; +} + + +/********************************************************************** + * wow64_NtQueryVolumeInformationFile + */ +NTSTATUS WINAPI wow64_NtQueryVolumeInformationFile( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + IO_STATUS_BLOCK32 *io32 = get_ptr( &args ); + void *buffer = get_ptr( &args ); + ULONG len = get_ulong( &args ); + FS_INFORMATION_CLASS class = get_ulong( &args ); + + IO_STATUS_BLOCK io; + NTSTATUS status; + + status = NtQueryVolumeInformationFile( handle, iosb_32to64( &io, io32 ), buffer, len, class ); + put_iosb( io32, &io ); + return status; +} + + /********************************************************************** * wow64_NtReadFile */ diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h index 870cb3b77b8..d147014c3be 100644 --- a/dlls/wow64/syscall.h +++ b/dlls/wow64/syscall.h @@ -92,11 +92,16 @@ SYSCALL_ENTRY( NtOpenTimer ) \ SYSCALL_ENTRY( NtProtectVirtualMemory ) \ SYSCALL_ENTRY( NtPulseEvent ) \ + SYSCALL_ENTRY( NtQueryAttributesFile ) \ SYSCALL_ENTRY( NtQueryDefaultLocale ) \ SYSCALL_ENTRY( NtQueryDefaultUILanguage ) \ + SYSCALL_ENTRY( NtQueryDirectoryFile ) \ SYSCALL_ENTRY( NtQueryDirectoryObject ) \ + SYSCALL_ENTRY( NtQueryEaFile ) \ SYSCALL_ENTRY( NtQueryEvent ) \ + SYSCALL_ENTRY( NtQueryFullAttributesFile ) \ SYSCALL_ENTRY( NtQueryInformationAtom ) \ + SYSCALL_ENTRY( NtQueryInformationFile ) \ SYSCALL_ENTRY( NtQueryInstallUILanguage ) \ SYSCALL_ENTRY( NtQueryIoCompletion ) \ SYSCALL_ENTRY( NtQueryKey ) \ @@ -111,6 +116,7 @@ SYSCALL_ENTRY( NtQueryTimerResolution ) \ SYSCALL_ENTRY( NtQueryValueKey ) \ SYSCALL_ENTRY( NtQueryVirtualMemory ) \ + SYSCALL_ENTRY( NtQueryVolumeInformationFile ) \ SYSCALL_ENTRY( NtReadFile ) \ SYSCALL_ENTRY( NtReadFileScatter ) \ SYSCALL_ENTRY( NtReadVirtualMemory ) \