Alexandre Julliard : wow64: Add thunks for the file query information syscalls.
Alexandre Julliard
julliard at winehq.org
Wed Jul 28 15:37:41 CDT 2021
Module: wine
Branch: master
Commit: f1d888413fb8bb71253f4a5cf72bf88edc01d47d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f1d888413fb8bb71253f4a5cf72bf88edc01d47d
Author: Alexandre Julliard <julliard at 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 at 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 ) \
More information about the wine-cvs
mailing list