|
|
/*++
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
|