diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c index d280f1324a3..0a3e2cd099a 100644 --- a/dlls/wow64/sync.c +++ b/dlls/wow64/sync.c @@ -118,6 +118,27 @@ NTSTATUS WINAPI wow64_NtCreateEvent( UINT *args ) } +/********************************************************************** + * wow64_NtCreateIoCompletion + */ +NTSTATUS WINAPI wow64_NtCreateIoCompletion( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + ACCESS_MASK access = get_ulong( &args ); + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + ULONG threads = get_ulong( &args ); + + struct object_attr64 attr; + HANDLE handle = 0; + NTSTATUS status; + + *handle_ptr = 0; + status = NtCreateIoCompletion( &handle, access, objattr_32to64( &attr, attr32 ), threads ); + put_handle( handle_ptr, handle ); + return status; +} + + /********************************************************************** * wow64_NtCreateKeyedEvent */ @@ -258,6 +279,26 @@ NTSTATUS WINAPI wow64_NtOpenEvent( UINT *args ) } +/********************************************************************** + * wow64_NtOpenIoCompletion + */ +NTSTATUS WINAPI wow64_NtOpenIoCompletion( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + ACCESS_MASK access = get_ulong( &args ); + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + + struct object_attr64 attr; + HANDLE handle = 0; + NTSTATUS status; + + *handle_ptr = 0; + status = NtOpenIoCompletion( &handle, access, objattr_32to64( &attr, attr32 )); + put_handle( handle_ptr, handle ); + return status; +} + + /********************************************************************** * wow64_NtOpenKeyedEvent */ @@ -402,6 +443,21 @@ NTSTATUS WINAPI wow64_NtQueryEvent( UINT *args ) } +/********************************************************************** + * wow64_NtQueryIoCompletion + */ +NTSTATUS WINAPI wow64_NtQueryIoCompletion( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + IO_COMPLETION_INFORMATION_CLASS class = get_ulong( &args ); + void *info = get_ptr( &args ); + ULONG len = get_ulong( &args ); + ULONG *retlen = get_ptr( &args ); + + return NtQueryIoCompletion( handle, class, info, len, retlen ); +} + + /********************************************************************** * wow64_NtQueryMutant */ @@ -525,6 +581,21 @@ NTSTATUS WINAPI wow64_NtSetInformationDebugObject( UINT *args ) } +/********************************************************************** + * wow64_NtSetIoCompletion + */ +NTSTATUS WINAPI wow64_NtSetIoCompletion( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + ULONG_PTR key = get_ulong( &args ); + ULONG_PTR value = get_ulong( &args ); + NTSTATUS status = get_ulong( &args ); + SIZE_T count = get_ulong( &args ); + + return NtSetIoCompletion( handle, key, value, status, count ); +} + + /********************************************************************** * wow64_NtSetTimer */ diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h index a56e775bda3..c32f4b5fece 100644 --- a/dlls/wow64/syscall.h +++ b/dlls/wow64/syscall.h @@ -31,6 +31,7 @@ SYSCALL_ENTRY( NtCreateDebugObject ) \ SYSCALL_ENTRY( NtCreateDirectoryObject ) \ SYSCALL_ENTRY( NtCreateEvent ) \ + SYSCALL_ENTRY( NtCreateIoCompletion ) \ SYSCALL_ENTRY( NtCreateKeyedEvent ) \ SYSCALL_ENTRY( NtCreateMutant ) \ SYSCALL_ENTRY( NtCreateSemaphore ) \ @@ -41,6 +42,7 @@ SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \ SYSCALL_ENTRY( NtOpenDirectoryObject ) \ SYSCALL_ENTRY( NtOpenEvent ) \ + SYSCALL_ENTRY( NtOpenIoCompletion ) \ SYSCALL_ENTRY( NtOpenKeyedEvent ) \ SYSCALL_ENTRY( NtOpenMutant ) \ SYSCALL_ENTRY( NtOpenSemaphore ) \ @@ -52,6 +54,7 @@ SYSCALL_ENTRY( NtQueryEvent ) \ SYSCALL_ENTRY( NtQueryInformationAtom ) \ SYSCALL_ENTRY( NtQueryInstallUILanguage ) \ + SYSCALL_ENTRY( NtQueryIoCompletion ) \ SYSCALL_ENTRY( NtQueryMutant ) \ SYSCALL_ENTRY( NtQuerySemaphore ) \ SYSCALL_ENTRY( NtQueryTimer ) \ @@ -63,6 +66,7 @@ SYSCALL_ENTRY( NtSetDefaultUILanguage ) \ SYSCALL_ENTRY( NtSetEvent ) \ SYSCALL_ENTRY( NtSetInformationDebugObject ) \ + SYSCALL_ENTRY( NtSetIoCompletion ) \ SYSCALL_ENTRY( NtSetTimer ) \ SYSCALL_ENTRY( NtWaitForDebugEvent ) \ SYSCALL_ENTRY( NtWaitForKeyedEvent )