wow64: Add thunks for a few misc syscalls.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-08-04 15:11:08 +02:00
parent 477478f79c
commit 4f0d8b697b
9 changed files with 164 additions and 0 deletions

View File

@ -874,6 +874,40 @@ NTSTATUS WINAPI wow64_wine_nt_to_unix_file_name( UINT *args )
}
/**********************************************************************
* wow64_wine_server_fd_to_handle
*/
NTSTATUS WINAPI wow64_wine_server_fd_to_handle( UINT *args )
{
int fd = get_ulong( &args );
ACCESS_MASK access = get_ulong( &args );
ULONG attributes = get_ulong( &args );
ULONG *handle_ptr = get_ptr( &args );
HANDLE handle = 0;
NTSTATUS status;
*handle_ptr = 0;
status = wine_server_fd_to_handle( fd, access, attributes, &handle );
put_handle( handle_ptr, handle );
return status;
}
/**********************************************************************
* wow64_wine_server_handle_to_fd
*/
NTSTATUS WINAPI wow64_wine_server_handle_to_fd( UINT *args )
{
HANDLE handle = get_handle( &args );
ACCESS_MASK access = get_ulong( &args );
int *unix_fd = get_ptr( &args );
unsigned int *options = get_ptr( &args );
return wine_server_handle_to_fd( handle, access, unix_fd, options );
}
/**********************************************************************
* wow64_wine_unix_to_nt_file_name
*/

View File

@ -471,6 +471,28 @@ NTSTATUS WINAPI wow64_NtGetContextThread( UINT *args )
}
/**********************************************************************
* wow64_NtGetNextThread
*/
NTSTATUS WINAPI wow64_NtGetNextThread( UINT *args )
{
HANDLE process = get_handle( &args );
HANDLE thread = get_handle( &args );
ACCESS_MASK access = get_ulong( &args );
ULONG attributes = get_ulong( &args );
ULONG flags = get_ulong( &args );
ULONG *handle_ptr = get_ptr( &args );
HANDLE handle = 0;
NTSTATUS status;
*handle_ptr = 0;
status = NtGetNextThread( process, thread, access, attributes, flags, &handle );
put_handle( handle_ptr, handle );
return status;
}
/**********************************************************************
* wow64_NtIsProcessInJob
*/

View File

@ -98,6 +98,23 @@ NTSTATUS WINAPI wow64_NtAccessCheckAndAuditAlarm( UINT *args )
}
/**********************************************************************
* wow64_NtAdjustGroupsToken
*/
NTSTATUS WINAPI wow64_NtAdjustGroupsToken( UINT *args )
{
HANDLE handle = get_handle( &args );
BOOLEAN reset = get_ulong( &args );
TOKEN_GROUPS32 *groups = get_ptr( &args );
ULONG len = get_ulong( &args );
TOKEN_GROUPS32 *prev = get_ptr( &args );
ULONG *retlen = get_ptr( &args );
FIXME( "%p %d %p %u %p %p\n", handle, reset, groups, len, prev, retlen );
return STATUS_NOT_IMPLEMENTED;
}
/**********************************************************************
* wow64_NtAdjustPrivilegesToken
*/
@ -114,6 +131,29 @@ NTSTATUS WINAPI wow64_NtAdjustPrivilegesToken( UINT *args )
}
/**********************************************************************
* wow64_NtCreateLowBoxToken
*/
NTSTATUS WINAPI wow64_NtCreateLowBoxToken( UINT *args )
{
ULONG *handle_ptr = get_ptr( &args );
HANDLE token = get_handle( &args );
ACCESS_MASK access = get_ulong( &args );
OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args );
SID *sid = get_ptr( &args );
ULONG count = get_ulong( &args );
SID_AND_ATTRIBUTES32 *capabilities32 = get_ptr( &args );
ULONG handle_count = get_ulong( &args );
ULONG *handles32 = get_ptr( &args );
FIXME( "%p %p %x %p %p %u %p %u %p: stub\n",
handle_ptr, token, access, attr32, sid, count, capabilities32, handle_count, handles32 );
*handle_ptr = 0;
return STATUS_SUCCESS;
}
/**********************************************************************
* wow64_NtDuplicateToken
*/

View File

@ -1163,6 +1163,17 @@ NTSTATUS WINAPI wow64_NtQueryTimerResolution( UINT *args )
}
/**********************************************************************
* wow64_NtRegisterThreadTerminatePort
*/
NTSTATUS WINAPI wow64_NtRegisterThreadTerminatePort( UINT *args )
{
HANDLE handle = get_handle( &args );
return NtRegisterThreadTerminatePort( handle );
}
/**********************************************************************
* wow64_NtReleaseKeyedEvent
*/

View File

@ -250,6 +250,18 @@ NTSTATUS WINAPI wow64_NtSetDefaultUILanguage( UINT *args )
}
/**********************************************************************
* wow64___wine_dbg_write
*/
NTSTATUS WINAPI wow64___wine_dbg_write( UINT *args )
{
const char *str = get_ptr( &args );
ULONG len = get_ulong( &args );
return __wine_dbg_write( str, len );
}
/**********************************************************************
* wow64_wine_server_call
*/

View File

@ -26,6 +26,7 @@
SYSCALL_ENTRY( NtAccessCheck ) \
SYSCALL_ENTRY( NtAccessCheckAndAuditAlarm ) \
SYSCALL_ENTRY( NtAddAtom ) \
SYSCALL_ENTRY( NtAdjustGroupsToken ) \
SYSCALL_ENTRY( NtAdjustPrivilegesToken ) \
SYSCALL_ENTRY( NtAlertResumeThread ) \
SYSCALL_ENTRY( NtAlertThread ) \
@ -53,6 +54,7 @@
SYSCALL_ENTRY( NtCreateKey ) \
SYSCALL_ENTRY( NtCreateKeyTransacted ) \
SYSCALL_ENTRY( NtCreateKeyedEvent ) \
SYSCALL_ENTRY( NtCreateLowBoxToken ) \
SYSCALL_ENTRY( NtCreateMailslotFile ) \
SYSCALL_ENTRY( NtCreateMutant ) \
SYSCALL_ENTRY( NtCreateNamedPipeFile ) \
@ -88,6 +90,7 @@
SYSCALL_ENTRY( NtFreeVirtualMemory ) \
SYSCALL_ENTRY( NtGetContextThread ) \
SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \
SYSCALL_ENTRY( NtGetNextThread ) \
SYSCALL_ENTRY( NtGetNlsSectionPtr ) \
SYSCALL_ENTRY( NtGetWriteWatch ) \
SYSCALL_ENTRY( NtImpersonateAnonymousToken ) \
@ -166,9 +169,11 @@
SYSCALL_ENTRY( NtQueryVirtualMemory ) \
SYSCALL_ENTRY( NtQueryVolumeInformationFile ) \
SYSCALL_ENTRY( NtQueueApcThread ) \
SYSCALL_ENTRY( NtRaiseHardError ) \
SYSCALL_ENTRY( NtReadFile ) \
SYSCALL_ENTRY( NtReadFileScatter ) \
SYSCALL_ENTRY( NtReadVirtualMemory ) \
SYSCALL_ENTRY( NtRegisterThreadTerminatePort ) \
SYSCALL_ENTRY( NtReleaseKeyedEvent ) \
SYSCALL_ENTRY( NtReleaseMutant ) \
SYSCALL_ENTRY( NtReleaseSemaphore ) \
@ -201,6 +206,7 @@
SYSCALL_ENTRY( NtSetInformationToken ) \
SYSCALL_ENTRY( NtSetIntervalProfile ) \
SYSCALL_ENTRY( NtSetIoCompletion ) \
SYSCALL_ENTRY( NtSetLdtEntries ) \
SYSCALL_ENTRY( NtSetPowerRequest ) \
SYSCALL_ENTRY( NtSetSecurityObject ) \
SYSCALL_ENTRY( NtSetSystemInformation ) \
@ -236,8 +242,11 @@
SYSCALL_ENTRY( NtWriteFileGather ) \
SYSCALL_ENTRY( NtWriteVirtualMemory ) \
SYSCALL_ENTRY( NtYieldExecution ) \
SYSCALL_ENTRY( __wine_dbg_write ) \
SYSCALL_ENTRY( wine_nt_to_unix_file_name ) \
SYSCALL_ENTRY( wine_server_call ) \
SYSCALL_ENTRY( wine_server_fd_to_handle ) \
SYSCALL_ENTRY( wine_server_handle_to_fd ) \
SYSCALL_ENTRY( wine_unix_to_nt_file_name )
#endif /* __WOW64_SYSCALL_H */

View File

@ -646,6 +646,23 @@ NTSTATUS WINAPI wow64_NtQuerySystemTime( UINT *args )
}
/**********************************************************************
* wow64_NtRaiseHardError
*/
NTSTATUS WINAPI wow64_NtRaiseHardError( UINT *args )
{
NTSTATUS status = get_ulong( &args );
ULONG count = get_ulong( &args );
ULONG params_mask = get_ulong( &args );
ULONG *params = get_ptr( &args );
HARDERROR_RESPONSE_OPTION option = get_ulong( &args );
HARDERROR_RESPONSE *response = get_ptr( &args );
FIXME( "%08x %u %x %p %u %p: stub\n", status, count, params_mask, params, option, response );
return STATUS_NOT_IMPLEMENTED;
}
/**********************************************************************
* wow64_NtSetIntervalProfile
*/

View File

@ -408,6 +408,24 @@ NTSTATUS WINAPI wow64_NtResetWriteWatch( UINT *args )
}
/**********************************************************************
* wow64_NtSetLdtEntries
*/
NTSTATUS WINAPI wow64_NtSetLdtEntries( UINT *args )
{
ULONG sel1 = get_ulong( &args );
ULONG entry1_low = get_ulong( &args );
ULONG entry1_high = get_ulong( &args );
ULONG sel2 = get_ulong( &args );
ULONG entry2_low = get_ulong( &args );
ULONG entry2_high = get_ulong( &args );
FIXME( "%04x %08x %08x %04x %08x %08x: stub\n",
sel1, entry1_low, entry1_high, sel2, entry2_low, entry2_high );
return STATUS_NOT_IMPLEMENTED;
}
/**********************************************************************
* wow64_NtUnlockVirtualMemory
*/

View File

@ -3879,6 +3879,7 @@ NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
NTSYSAPI NTSTATUS WINAPI NtGetNextThread(HANDLE,HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*);
NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);