ntdll: Implement RtlWriteRegistryValue and forward ntoskrnl to it.
This commit is contained in:
parent
847cc51d3b
commit
311c001654
|
@ -910,7 +910,7 @@
|
|||
@ stub RtlWalkFrameChain
|
||||
@ stdcall RtlWalkHeap(long ptr)
|
||||
@ stub RtlWriteMemoryStream
|
||||
@ stub RtlWriteRegistryValue
|
||||
@ stdcall RtlWriteRegistryValue(long ptr ptr long ptr long)
|
||||
@ stub RtlZeroHeap
|
||||
@ stdcall RtlZeroMemory(ptr long)
|
||||
# @ stub RtlZombifyActivationContext
|
||||
|
|
|
@ -1334,3 +1334,44 @@ NTSTATUS WINAPI RtlDeleteRegistryValue(IN ULONG RelativeTo, IN PCWSTR Path, IN P
|
|||
NtClose(handle);
|
||||
return status;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* RtlWriteRegistryValue [NTDLL.@]
|
||||
*
|
||||
* Sets the registry value with provided data.
|
||||
*
|
||||
* PARAMS
|
||||
* RelativeTo [I] Registry path that path parameter refers to
|
||||
* path [I] Path to the key (or handle - see RTL_GetKeyHandle)
|
||||
* name [I] Name of the registry value to set
|
||||
* type [I] Type of the registry key to set
|
||||
* data [I] Pointer to the user data to be set
|
||||
* length [I] Length of the user data pointed by data
|
||||
*
|
||||
* RETURNS
|
||||
* STATUS_SUCCESS if the specified key is successfully set,
|
||||
* or an NTSTATUS error code.
|
||||
*/
|
||||
NTSTATUS WINAPI RtlWriteRegistryValue( ULONG RelativeTo, PCWSTR path, PCWSTR name,
|
||||
ULONG type, PVOID data, ULONG length )
|
||||
{
|
||||
HANDLE hkey;
|
||||
NTSTATUS status;
|
||||
UNICODE_STRING str;
|
||||
|
||||
TRACE( "(%d, %s, %s) -> %d: %p [%d]\n", RelativeTo, debugstr_w(path), debugstr_w(name),
|
||||
type, data, length );
|
||||
|
||||
RtlInitUnicodeString( &str, name );
|
||||
|
||||
if (RelativeTo == RTL_REGISTRY_HANDLE)
|
||||
return NtSetValueKey( (HANDLE)path, &str, 0, type, data, length );
|
||||
|
||||
status = RTL_GetKeyHandle( RelativeTo, path, &hkey );
|
||||
if (status != STATUS_SUCCESS) return status;
|
||||
|
||||
status = NtSetValueKey( hkey, &str, 0, type, data, length );
|
||||
NtClose( hkey );
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
@ stdcall RtlVerifyVersionInfo(ptr long double) ntdll.RtlVerifyVersionInfo
|
||||
@ stub RtlVolumeDeviceToDosName
|
||||
@ stub RtlWalkFrameChain
|
||||
@ stub RtlWriteRegistryValue
|
||||
@ stdcall RtlWriteRegistryValue(long ptr ptr long ptr long) ntdll.RtlWriteRegistryValue
|
||||
@ stub RtlZeroHeap
|
||||
@ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory
|
||||
@ stdcall RtlxAnsiStringToUnicodeSize(ptr) ntdll.RtlxAnsiStringToUnicodeSize
|
||||
|
|
|
@ -2240,6 +2240,7 @@ BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
|
|||
NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
|
||||
|
||||
NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
|
||||
NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
|
||||
|
||||
NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
|
||||
NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
|
||||
|
|
Loading…
Reference in New Issue