Ivan Leo Puoti wrote:
Implement RtlQueryRegistryValues, RtlCheckRegistryKey is implemented in this patch as a free bonus. Thanks to the guys on IRC for their help.
BTW when RtlCheckRegistryKey is called with the RTL_REGISTRY_HANDLE flag, it always returns STATUS_SUCCESS, even if called with NULL, an invalid HKEY, a string containing rude words, a random number, and anything else I could think of, so that's why STATUS_SUCCESS is always returned when RTL_REGISTRY_HANDLE is set.
+NTSTATUS WINAPI RtlCheckRegistryKey(IN ULONG RelativeTo, IN PWSTR Path) +{
- HKEY handle;
- NTSTATUS status = STATUS_SUCCESS;
- if((!RelativeTo) && Path == NULL)
return STATUS_OBJECT_PATH_SYNTAX_BAD;
- if(RelativeTo & RTL_REGISTRY_HANDLE)
return status;
- if ((RelativeTo & 0xff) <= 5)
- {
if(RelativeTo & RTL_REGISTRY_HANDLE)
handle = (HANDLE)Path;
This test is redundant due to the test outside of this block.
else
status = RTL_GetKeyHandle(RelativeTo, Path, &handle);
if(status==STATUS_INVALID_HANDLE)
return STATUS_OBJECT_NAME_NOT_FOUND;
if(status==STATUS_ACCESS_DENIED)
return STATUS_ACCESS_DENIED;
if(status!=STATUS_SUCCESS)
return status;
- }
- else
return STATUS_INVALID_PARAMETER;
- return status;
+}
Rob