- implemented RegDisablePredefinedCache()

- added stubs for RegEnableReflectionKey(), RegDisableReflectionKey() and RegQueryReflectionKey()

svn path=/trunk/; revision=20870
This commit is contained in:
Thomas Bluemel 2006-01-14 23:17:26 +00:00
parent 55317536c0
commit e4484b0bde
3 changed files with 78 additions and 5 deletions

View file

@ -482,8 +482,10 @@ RegDeleteTreeA@8
RegDeleteTreeW@8
RegDeleteValueA@8
RegDeleteValueW@8
;RegDisablePredefinedCache
RegDisablePredefinedCache@0
RegDisablePredefinedCacheEx@0
RegDisableReflectionKey@4
RegEnableReflectionKey@4
RegEnumKeyA@16
RegEnumKeyExA@32
RegEnumKeyExW@32
@ -508,6 +510,7 @@ RegQueryInfoKeyA@48
RegQueryInfoKeyW@48
RegQueryMultipleValuesA@20
RegQueryMultipleValuesW@20
RegQueryReflectionKey@8
RegQueryValueA@16
RegQueryValueExA@24
RegQueryValueExW@24

View file

@ -30,6 +30,7 @@ static RTL_CRITICAL_SECTION HandleTableCS;
static HANDLE DefaultHandleTable[MAX_DEFAULT_HANDLES];
static HANDLE ProcessHeap;
static BOOLEAN DefaultHandlesDisabled = FALSE;
static BOOLEAN DefaultHandleHKUDisabled = FALSE;
/* PROTOTYPES ***************************************************************/
@ -143,7 +144,7 @@ MapDefaultKey (OUT PHANDLE RealKey,
{
PHANDLE Handle;
ULONG Index;
BOOLEAN DoOpen;
BOOLEAN DoOpen, DefDisabled;
NTSTATUS Status = STATUS_SUCCESS;
TRACE("MapDefaultKey (Key %x)\n", Key);
@ -163,7 +164,12 @@ MapDefaultKey (OUT PHANDLE RealKey,
RtlEnterCriticalSection (&HandleTableCS);
if (!DefaultHandlesDisabled)
if (Key == HKEY_CURRENT_USER)
DefDisabled = DefaultHandleHKUDisabled;
else
DefDisabled = DefaultHandlesDisabled;
if (!DefDisabled)
{
Handle = &DefaultHandleTable[Index];
DoOpen = (*Handle == NULL);
@ -183,7 +189,7 @@ MapDefaultKey (OUT PHANDLE RealKey,
if (NT_SUCCESS(Status))
{
if (!DefaultHandlesDisabled)
if (!DefDisabled)
*RealKey = *Handle;
else
*(PULONG_PTR)Handle |= 0x1;
@ -294,6 +300,21 @@ OpenCurrentConfigKey (PHANDLE KeyHandle)
}
/************************************************************************
* RegDisablePredefinedCache
*
* @implemented
*/
LONG WINAPI
RegDisablePredefinedCache(VOID)
{
RtlEnterCriticalSection (&HandleTableCS);
DefaultHandleHKUDisabled = TRUE;
RtlLeaveCriticalSection (&HandleTableCS);
return ERROR_SUCCESS;
}
/************************************************************************
* RegDisablePredefinedCacheEx
*
@ -1633,6 +1654,32 @@ RegDeleteTreeA(IN HKEY hKey,
}
/************************************************************************
* RegDisableReflectionKey
*
* @unimplemented
*/
LONG WINAPI
RegDisableReflectionKey(IN HKEY hBase)
{
DPRINT1("RegDisableReflectionKey(0x%p) UNIMPLEMENTED!\n", hBase);
return ERROR_CALL_NOT_IMPLEMENTED;
}
/************************************************************************
* RegEnableReflectionKey
*
* @unimplemented
*/
LONG WINAPI
RegEnableReflectionKey(IN HKEY hBase)
{
DPRINT1("RegEnableReflectionKey(0x%p) UNIMPLEMENTED!\n", hBase);
return ERROR_CALL_NOT_IMPLEMENTED;
}
/************************************************************************
* RegSetKeyValueW
*
@ -3371,6 +3418,21 @@ RegQueryMultipleValuesW (HKEY hKey,
}
/************************************************************************
* RegQueryReflectionKey
*
* @unimplemented
*/
LONG WINAPI
RegQueryReflectionKey(IN HKEY hBase,
OUT BOOL* bIsReflectionDisabled)
{
DPRINT1("RegQueryReflectionKey(0x%p, 0x%p) UNIMPLEMENTED!\n",
hBase, bIsReflectionDisabled);
return ERROR_CALL_NOT_IMPLEMENTED;
}
/************************************************************************
* RegQueryValueExW
*

View file

@ -78,8 +78,13 @@ LONG WINAPI RegDeleteTreeW(HKEY,LPCWSTR);
#endif
LONG WINAPI RegDeleteValueA(HKEY,LPCSTR);
LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
#if (_WIN32_WINNT >= 0x0500)
LONG WINAPI RegDisablePredefinedCache(VOID);
#endif
#if (_WIN32_WINNT >= 0x0600)
LONG WINAPI RegDisablePredefinedCacheEx(VOID);
LONG WINAPI RegDisableReflectionKey(HKEY);
LONG WINAPI RegEnableReflectionKey(HKEY);
#endif
LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
@ -104,6 +109,9 @@ LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWOR
LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
#if (_WIN32_WINNT >= 0x0600)
LONG WINAPI RegQueryReflectionKey(HKEY,BOOL*);
#endif
LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);