/*++ Copyright (c) 1992 Microsoft Corporation Module Name: regvcls.h Abstract: This file contains declarations for data structures needed for enumerating values under HKEY_CLASSES_ROOT Author: Adam Edwards (adamed) 14-Nov-1997 Notes: --*/ #ifdef LOCAL #if !defined(_REGVCLS_H_) #define _REGVCLS_H_ #include "regecls.h" #define DEFAULT_VALUESTATE_SUBKEY_ALLOC 1 // // Data types // typedef struct _ValueLocation { DWORD dwOffset; BOOL fUser; } ValueLocation; typedef struct _ValueState { HKEY hkLogical; HKEY hkUser; HKEY hkMachine; DWORD dwCurrent; DWORD cValues; unsigned fIgnoreResetOnRetry : 1; unsigned fDelete : 1; ValueLocation* rgIndex; } ValueState; // // Value enumeration methods // void ValStateGetPhysicalIndexFromLogical( ValueState* pValState, HKEY hkLogicalKey, DWORD dwLogicalIndex, PHKEY phkPhysicalKey, DWORD* pdwPhysicalIndex); NTSTATUS ValStateSetPhysicalIndexFromLogical( ValueState* pValState, DWORD dwLogicalIndex); void ValStateRelease(ValueState* pValState); void ValStateReleaseValues( PKEY_VALUE_BASIC_INFORMATION* ppValueInfo, DWORD cMaxValues); NTSTATUS ValStateUpdate(ValueState* pValState); NTSTATUS ValStateInitialize( ValueState** ppValState, HKEY hKey); BOOL ValStateAddValueToSortedValues( PKEY_VALUE_BASIC_INFORMATION* ppValueInfo, LONG lNewValue); NTSTATUS KeyStateGetValueState( HKEY hKey, ValueState** ppValState); NTSTATUS BaseRegGetClassKeyValueState( HKEY hKey, DWORD dwLogicalIndex, ValueState** ppValueState); NTSTATUS EnumerateValue( HKEY hKey, DWORD dwValue, PKEY_VALUE_BASIC_INFORMATION pSuggestedBuffer, DWORD dwSuggestedBufferLength, PKEY_VALUE_BASIC_INFORMATION* ppResult); // // Multiple value query routines // NTSTATUS BaseRegQueryMultipleClassKeyValues( HKEY hKey, PRVALENT val_list, DWORD num_vals, LPSTR lpvalueBuf, LPDWORD ldwTotsize, PULONG ldwRequiredLength); NTSTATUS BaseRegQueryAndMergeValues( HKEY hkUser, HKEY hkMachine, PRVALENT val_list, DWORD num_vals, LPSTR lpvalueBuf, LPDWORD ldwTotsize, PULONG ldwRequiredLength); #endif // !defined(_REGVCLS_H_) #endif LOCAL