From caf43278c75b08d70e3b16755844bb6cea33a123 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 26 Jul 2021 12:50:03 +0200 Subject: [PATCH] wow64: Add thunks for the local port syscalls. Signed-off-by: Alexandre Julliard --- dlls/wow64/sync.c | 133 +++++++++++++++++++++++++++++++++++++++++++ dlls/wow64/syscall.h | 8 +++ 2 files changed, 141 insertions(+) diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c index f386a7cdab3..29d2bd12c50 100644 --- a/dlls/wow64/sync.c +++ b/dlls/wow64/sync.c @@ -98,6 +98,23 @@ void put_section_image_info( SECTION_IMAGE_INFORMATION32 *info32, const SECTION_ } +/********************************************************************** + * wow64_NtAcceptConnectPort + */ +NTSTATUS WINAPI wow64_NtAcceptConnectPort( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + ULONG id = get_ulong( &args ); + LPC_MESSAGE *msg = get_ptr( &args ); + BOOLEAN accept = get_ulong( &args ); + LPC_SECTION_WRITE *write = get_ptr( &args ); + LPC_SECTION_READ *read = get_ptr( &args ); + + FIXME( "%p %u %p %u %p %p: stub\n", handle_ptr, id, msg, accept, write, read ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * wow64_NtCancelTimer */ @@ -121,6 +138,37 @@ NTSTATUS WINAPI wow64_NtClearEvent( UINT *args ) } +/********************************************************************** + * wow64_NtCompleteConnectPort + */ +NTSTATUS WINAPI wow64_NtCompleteConnectPort( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + + return NtCompleteConnectPort( handle ); +} + + +/********************************************************************** + * wow64_NtConnectPort + */ +NTSTATUS WINAPI wow64_NtConnectPort( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + UNICODE_STRING32 *name32 = get_ptr( &args ); + SECURITY_QUALITY_OF_SERVICE *qos = get_ptr( &args ); + LPC_SECTION_WRITE *write = get_ptr( &args ); + LPC_SECTION_READ *read = get_ptr( &args ); + ULONG *max_len = get_ptr( &args ); + void *info = get_ptr( &args ); + ULONG *info_len = get_ptr( &args ); + + FIXME( "%p %p %p %p %p %p %p %p: stub\n", + handle_ptr, name32, qos, write, read, max_len, info, info_len ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * wow64_NtCreateDebugObject */ @@ -267,6 +315,28 @@ NTSTATUS WINAPI wow64_NtCreateMutant( UINT *args ) } +/********************************************************************** + * wow64_NtCreatePort + */ +NTSTATUS WINAPI wow64_NtCreatePort( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args ); + ULONG info_len = get_ulong( &args ); + ULONG data_len = get_ulong( &args ); + ULONG *reserved = get_ptr( &args ); + + struct object_attr64 attr; + HANDLE handle = 0; + NTSTATUS status; + + *handle_ptr = 0; + status = NtCreatePort( &handle, objattr_32to64( &attr, attr32 ), info_len, data_len, reserved ); + put_handle( handle_ptr, handle ); + return status; +} + + /********************************************************************** * wow64_NtCreateSection */ @@ -408,6 +478,19 @@ NTSTATUS WINAPI wow64_NtDuplicateObject( UINT *args ) } +/********************************************************************** + * wow64_NtListenPort + */ +NTSTATUS WINAPI wow64_NtListenPort( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + LPC_MESSAGE *msg = get_ptr( &args ); + + FIXME( "%p %p: stub\n", handle, msg ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * wow64_NtMakeTemporaryObject */ @@ -983,6 +1066,35 @@ NTSTATUS WINAPI wow64_NtReleaseSemaphore( UINT *args ) } +/********************************************************************** + * wow64_NtReplyWaitReceivePort + */ +NTSTATUS WINAPI wow64_NtReplyWaitReceivePort( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + ULONG *id = get_ptr( &args ); + LPC_MESSAGE *reply = get_ptr( &args ); + LPC_MESSAGE *msg = get_ptr( &args ); + + FIXME( "%p %p %p %p: stub\n", handle, id, reply, msg ); + return STATUS_NOT_IMPLEMENTED; +} + + +/********************************************************************** + * wow64_NtRequestWaitReplyPort + */ +NTSTATUS WINAPI wow64_NtRequestWaitReplyPort( UINT *args ) +{ + HANDLE handle = get_handle( &args ); + LPC_MESSAGE *msg_in = get_ptr( &args ); + LPC_MESSAGE *msg_out = get_ptr( &args ); + + FIXME( "%p %p %p: stub\n", handle, msg_in, msg_out ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * wow64_NtResetEvent */ @@ -995,6 +1107,27 @@ NTSTATUS WINAPI wow64_NtResetEvent( UINT *args ) } +/********************************************************************** + * wow64_NtSecureConnectPort + */ +NTSTATUS WINAPI wow64_NtSecureConnectPort( UINT *args ) +{ + ULONG *handle_ptr = get_ptr( &args ); + UNICODE_STRING32 *name32 = get_ptr( &args ); + SECURITY_QUALITY_OF_SERVICE *qos = get_ptr( &args ); + LPC_SECTION_WRITE *write = get_ptr( &args ); + SID *sid = get_ptr( &args ); + LPC_SECTION_READ *read = get_ptr( &args ); + ULONG *max_len = get_ptr( &args ); + void *info = get_ptr( &args ); + ULONG *info_len = get_ptr( &args ); + + FIXME( "%p %p %p %p %p %p %p %p %p: stub\n", + handle_ptr, name32, qos, write, sid, read, max_len, info, info_len ); + return STATUS_NOT_IMPLEMENTED; +} + + /********************************************************************** * wow64_NtSetEvent */ diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h index 26948446fd1..ea7c1c229e5 100644 --- a/dlls/wow64/syscall.h +++ b/dlls/wow64/syscall.h @@ -22,12 +22,15 @@ #define __WOW64_SYSCALL_H #define ALL_SYSCALLS \ + SYSCALL_ENTRY( NtAcceptConnectPort ) \ SYSCALL_ENTRY( NtAddAtom ) \ SYSCALL_ENTRY( NtAllocateLocallyUniqueId ) \ SYSCALL_ENTRY( NtAllocateUuids ) \ SYSCALL_ENTRY( NtCancelTimer ) \ SYSCALL_ENTRY( NtClearEvent ) \ SYSCALL_ENTRY( NtClose ) \ + SYSCALL_ENTRY( NtCompleteConnectPort ) \ + SYSCALL_ENTRY( NtConnectPort ) \ SYSCALL_ENTRY( NtCreateDebugObject ) \ SYSCALL_ENTRY( NtCreateDirectoryObject ) \ SYSCALL_ENTRY( NtCreateEvent ) \ @@ -35,6 +38,7 @@ SYSCALL_ENTRY( NtCreateJobObject ) \ SYSCALL_ENTRY( NtCreateKeyedEvent ) \ SYSCALL_ENTRY( NtCreateMutant ) \ + SYSCALL_ENTRY( NtCreatePort ) \ SYSCALL_ENTRY( NtCreateSection ) \ SYSCALL_ENTRY( NtCreateSemaphore ) \ SYSCALL_ENTRY( NtCreateSymbolicLinkObject ) \ @@ -45,6 +49,7 @@ SYSCALL_ENTRY( NtDuplicateObject ) \ SYSCALL_ENTRY( NtFindAtom ) \ SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \ + SYSCALL_ENTRY( NtListenPort ) \ SYSCALL_ENTRY( NtMakeTemporaryObject ) \ SYSCALL_ENTRY( NtOpenDirectoryObject ) \ SYSCALL_ENTRY( NtOpenEvent ) \ @@ -75,7 +80,10 @@ SYSCALL_ENTRY( NtReleaseKeyedEvent ) \ SYSCALL_ENTRY( NtReleaseMutant ) \ SYSCALL_ENTRY( NtReleaseSemaphore ) \ + SYSCALL_ENTRY( NtReplyWaitReceivePort ) \ + SYSCALL_ENTRY( NtRequestWaitReplyPort ) \ SYSCALL_ENTRY( NtResetEvent ) \ + SYSCALL_ENTRY( NtSecureConnectPort ) \ SYSCALL_ENTRY( NtSetDefaultLocale ) \ SYSCALL_ENTRY( NtSetDefaultUILanguage ) \ SYSCALL_ENTRY( NtSetEvent ) \