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