wow64: Add thunks for the registry value syscalls.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-07-26 13:47:07 +02:00
parent 4307429b4a
commit 44eac1543e
2 changed files with 91 additions and 0 deletions

View File

@ -27,6 +27,9 @@
#include "winnt.h"
#include "winternl.h"
#include "wow64_private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(wow);
/**********************************************************************
@ -93,6 +96,20 @@ NTSTATUS WINAPI wow64_NtDeleteKey( UINT *args )
}
/**********************************************************************
* wow64_NtDeleteValueKey
*/
NTSTATUS WINAPI wow64_NtDeleteValueKey( UINT *args )
{
HANDLE handle = get_handle( &args );
UNICODE_STRING32 *str32 = get_ptr( &args );
UNICODE_STRING str;
return NtDeleteValueKey( handle, unicode_str_32to64( &str, str32 ));
}
/**********************************************************************
* wow64_NtEnumerateKey
*/
@ -109,6 +126,22 @@ NTSTATUS WINAPI wow64_NtEnumerateKey( UINT *args )
}
/**********************************************************************
* wow64_NtEnumerateValueKey
*/
NTSTATUS WINAPI wow64_NtEnumerateValueKey( UINT *args )
{
HANDLE handle = get_handle( &args );
ULONG index = get_ulong( &args );
KEY_VALUE_INFORMATION_CLASS class = get_ulong( &args );
void *ptr = get_ptr( &args );
ULONG len = get_ulong( &args );
ULONG *retlen = get_ptr( &args );
return NtEnumerateValueKey( handle, index, class, ptr, len, retlen );
}
/**********************************************************************
* wow64_NtOpenKey
*/
@ -208,6 +241,41 @@ NTSTATUS WINAPI wow64_NtQueryKey( UINT *args )
}
/**********************************************************************
* wow64_NtQueryMultipleValueKey
*/
NTSTATUS WINAPI wow64_NtQueryMultipleValueKey( UINT *args )
{
HANDLE handle = get_handle( &args );
KEY_MULTIPLE_VALUE_INFORMATION *info = get_ptr( &args );
ULONG count = get_ulong( &args );
void *ptr = get_ptr( &args );
ULONG len = get_ulong( &args );
ULONG *retlen = get_ptr( &args );
FIXME( "%p %p %u %p %u %p: stub\n", handle, info, count, ptr, len, retlen );
return STATUS_SUCCESS;
}
/**********************************************************************
* wow64_NtQueryValueKey
*/
NTSTATUS WINAPI wow64_NtQueryValueKey( UINT *args )
{
HANDLE handle = get_handle( &args );
UNICODE_STRING32 *str32 = get_ptr( &args );
KEY_VALUE_INFORMATION_CLASS class = get_ulong( &args );
void *ptr = get_ptr( &args );
ULONG len = get_ulong( &args );
ULONG *retlen = get_ptr( &args );
UNICODE_STRING str;
return NtQueryValueKey( handle, unicode_str_32to64( &str, str32 ), class, ptr, len, retlen );
}
/**********************************************************************
* wow64_NtRenameKey
*/
@ -249,3 +317,21 @@ NTSTATUS WINAPI wow64_NtSetInformationKey( UINT *args )
return NtSetInformationKey( handle, class, info, len );
}
/**********************************************************************
* wow64_NtSetValueKey
*/
NTSTATUS WINAPI wow64_NtSetValueKey( UINT *args )
{
HANDLE handle = get_handle( &args );
const UNICODE_STRING32 *str32 = get_ptr( &args );
ULONG index = get_ulong( &args );
ULONG type = get_ulong( &args );
const void *data = get_ptr( &args );
ULONG count = get_ulong( &args );
UNICODE_STRING str;
return NtSetValueKey( handle, unicode_str_32to64( &str, str32 ), index, type, data, count );
}

View File

@ -51,8 +51,10 @@
SYSCALL_ENTRY( NtDelayExecution ) \
SYSCALL_ENTRY( NtDeleteAtom ) \
SYSCALL_ENTRY( NtDeleteKey ) \
SYSCALL_ENTRY( NtDeleteValueKey ) \
SYSCALL_ENTRY( NtDuplicateObject ) \
SYSCALL_ENTRY( NtEnumerateKey ) \
SYSCALL_ENTRY( NtEnumerateValueKey ) \
SYSCALL_ENTRY( NtFindAtom ) \
SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \
SYSCALL_ENTRY( NtListenPort ) \
@ -80,6 +82,7 @@
SYSCALL_ENTRY( NtQueryInstallUILanguage ) \
SYSCALL_ENTRY( NtQueryIoCompletion ) \
SYSCALL_ENTRY( NtQueryKey ) \
SYSCALL_ENTRY( NtQueryMultipleValueKey ) \
SYSCALL_ENTRY( NtQueryMutant ) \
SYSCALL_ENTRY( NtQueryObject ) \
SYSCALL_ENTRY( NtQueryPerformanceCounter ) \
@ -88,6 +91,7 @@
SYSCALL_ENTRY( NtQuerySymbolicLinkObject ) \
SYSCALL_ENTRY( NtQueryTimer ) \
SYSCALL_ENTRY( NtQueryTimerResolution ) \
SYSCALL_ENTRY( NtQueryValueKey ) \
SYSCALL_ENTRY( NtReleaseKeyedEvent ) \
SYSCALL_ENTRY( NtReleaseMutant ) \
SYSCALL_ENTRY( NtReleaseSemaphore ) \
@ -107,6 +111,7 @@
SYSCALL_ENTRY( NtSetPowerRequest ) \
SYSCALL_ENTRY( NtSetTimer ) \
SYSCALL_ENTRY( NtSetTimerResolution ) \
SYSCALL_ENTRY( NtSetValueKey ) \
SYSCALL_ENTRY( NtSignalAndWaitForSingleObject ) \
SYSCALL_ENTRY( NtTerminateJobObject ) \
SYSCALL_ENTRY( NtWaitForDebugEvent ) \