[ADVAPI32]

- Mark the HKEY_CLASSES_ROOT key as belonging to the HKEY_CLASSES_ROOT tree.
CORE-8582

svn path=/trunk/; revision=64417
This commit is contained in:
Jérôme Gardou 2014-09-30 20:00:17 +00:00
parent fff76a1d0e
commit ccc1a83dca
2 changed files with 38 additions and 4 deletions

View file

@ -18,6 +18,8 @@
#include <ndk/cmfuncs.h>
#include <pseh/pseh2.h>
#include "reg.h"
WINE_DEFAULT_DEBUG_CHANNEL(reg);
/* DEFINES ******************************************************************/
@ -231,10 +233,11 @@ CloseDefaultKeys(VOID)
static NTSTATUS
OpenClassesRootKey(PHANDLE KeyHandle)
OpenClassesRootKey(_Out_ PHANDLE KeyHandle)
{
OBJECT_ATTRIBUTES Attributes;
UNICODE_STRING KeyName = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\Software\\CLASSES");
NTSTATUS Status;
TRACE("OpenClassesRootKey()\n");
@ -243,9 +246,17 @@ OpenClassesRootKey(PHANDLE KeyHandle)
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
return NtOpenKey(KeyHandle,
MAXIMUM_ALLOWED,
&Attributes);
Status = NtOpenKey(KeyHandle,
MAXIMUM_ALLOWED,
&Attributes);
if (!NT_SUCCESS(Status))
return Status;
/* Mark it as HKCR */
MakeHKCRKey((HKEY*)KeyHandle);
return Status;
}

View file

@ -0,0 +1,23 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/advapi32/reg/reg.c
* PURPOSE: Registry functions
*/
#pragma once
/* FUNCTIONS ****************************************************************/
FORCEINLINE
BOOL
IsHKCRKey(_In_ HKEY hKey)
{
return ((ULONG_PTR)hKey & 0x2) != 0;
}
FORCEINLINE
void
MakeHKCRKey(_Inout_ HKEY* hKey)
{
*hKey = (HKEY)((ULONG_PTR)*hKey | 0x2);
}