- 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 RegDeleteTreeW@8
RegDeleteValueA@8 RegDeleteValueA@8
RegDeleteValueW@8 RegDeleteValueW@8
;RegDisablePredefinedCache RegDisablePredefinedCache@0
RegDisablePredefinedCacheEx@0 RegDisablePredefinedCacheEx@0
RegDisableReflectionKey@4
RegEnableReflectionKey@4
RegEnumKeyA@16 RegEnumKeyA@16
RegEnumKeyExA@32 RegEnumKeyExA@32
RegEnumKeyExW@32 RegEnumKeyExW@32
@ -508,6 +510,7 @@ RegQueryInfoKeyA@48
RegQueryInfoKeyW@48 RegQueryInfoKeyW@48
RegQueryMultipleValuesA@20 RegQueryMultipleValuesA@20
RegQueryMultipleValuesW@20 RegQueryMultipleValuesW@20
RegQueryReflectionKey@8
RegQueryValueA@16 RegQueryValueA@16
RegQueryValueExA@24 RegQueryValueExA@24
RegQueryValueExW@24 RegQueryValueExW@24

View file

@ -30,6 +30,7 @@ static RTL_CRITICAL_SECTION HandleTableCS;
static HANDLE DefaultHandleTable[MAX_DEFAULT_HANDLES]; static HANDLE DefaultHandleTable[MAX_DEFAULT_HANDLES];
static HANDLE ProcessHeap; static HANDLE ProcessHeap;
static BOOLEAN DefaultHandlesDisabled = FALSE; static BOOLEAN DefaultHandlesDisabled = FALSE;
static BOOLEAN DefaultHandleHKUDisabled = FALSE;
/* PROTOTYPES ***************************************************************/ /* PROTOTYPES ***************************************************************/
@ -143,7 +144,7 @@ MapDefaultKey (OUT PHANDLE RealKey,
{ {
PHANDLE Handle; PHANDLE Handle;
ULONG Index; ULONG Index;
BOOLEAN DoOpen; BOOLEAN DoOpen, DefDisabled;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
TRACE("MapDefaultKey (Key %x)\n", Key); TRACE("MapDefaultKey (Key %x)\n", Key);
@ -163,7 +164,12 @@ MapDefaultKey (OUT PHANDLE RealKey,
RtlEnterCriticalSection (&HandleTableCS); RtlEnterCriticalSection (&HandleTableCS);
if (!DefaultHandlesDisabled) if (Key == HKEY_CURRENT_USER)
DefDisabled = DefaultHandleHKUDisabled;
else
DefDisabled = DefaultHandlesDisabled;
if (!DefDisabled)
{ {
Handle = &DefaultHandleTable[Index]; Handle = &DefaultHandleTable[Index];
DoOpen = (*Handle == NULL); DoOpen = (*Handle == NULL);
@ -183,7 +189,7 @@ MapDefaultKey (OUT PHANDLE RealKey,
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
if (!DefaultHandlesDisabled) if (!DefDisabled)
*RealKey = *Handle; *RealKey = *Handle;
else else
*(PULONG_PTR)Handle |= 0x1; *(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 * 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 * 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 * RegQueryValueExW
* *

View file

@ -78,8 +78,13 @@ LONG WINAPI RegDeleteTreeW(HKEY,LPCWSTR);
#endif #endif
LONG WINAPI RegDeleteValueA(HKEY,LPCSTR); LONG WINAPI RegDeleteValueA(HKEY,LPCSTR);
LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR); LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
#if (_WIN32_WINNT >= 0x0500)
LONG WINAPI RegDisablePredefinedCache(VOID);
#endif
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
LONG WINAPI RegDisablePredefinedCacheEx(VOID); LONG WINAPI RegDisablePredefinedCacheEx(VOID);
LONG WINAPI RegDisableReflectionKey(HKEY);
LONG WINAPI RegEnableReflectionKey(HKEY);
#endif #endif
LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD); LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,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 RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD); LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,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 RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);