Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//*************************************************************
//
// Hash table for registry Rsop data
//
// Microsoft Confidential
// Copyright (c) Microsoft Corporation 1999
// All rights reserved
//
// History: 7-Jun-99 SitaramR Created
//
//*************************************************************
#define HASH_TABLE_SIZE 97 // # buckets in hash table
#define STARCOMMAND TEXT("**Command") // A special valuename created to keep the commands
//
// List of data values for key registry value in precedence order,
// entries at the beginning of list have higher precedence.
//
typedef struct _REGDATAENTRY { BOOL bDeleted; // Is this a deleted value ?
BOOL bAdmPolicy; // Is this generated by an Adm policy ?
DWORD dwValueType; DWORD dwDataLen; BYTE * pData; WCHAR * pwszGPO; // Gpo that set this data
WCHAR * pwszSOM; // SDOU that the above Gpo is linked to
WCHAR * pwszCommand; // The actual command that caused the change in data value
struct _REGDATAENTRY * pNext; } REGDATAENTRY, *LPREGDATAENTRY;
//
// List of registry value names under a common registry key
//
typedef struct _REGVALUEENTRY { WCHAR * pwszValueName; // Registry value name
REGDATAENTRY * pDataList; struct _REGVALUEENTRY * pNext;
} REGVALUEENTRY, *LPREGVALUEENTRY;
//
// List of registry keys that map to same hash bucket
//
typedef struct _REGKEYENTRY { WCHAR * pwszKeyName; // Registry key name
REGVALUEENTRY * pValueList; struct _REGKEYENTRY * pNext; } REGKEYENTRY, *LPREGKEYENTRY;
//
// Hash table for looking up registry keys
//
typedef struct _REGHASHTABLE { REGKEYENTRY * aHashTable[HASH_TABLE_SIZE]; HRESULT hrError; } REGHASHTABLE, *LPREGHASHTABLE;
//
// Registry operation types for deleting and
// adding values.
//
typedef enum _REGOPERATION { REG_DELETEVALUE = 0, REG_DELETEALLVALUES, REG_DELETEKEY, REG_ADDVALUE, REG_SOFTADDVALUE, REG_INTERNAL_DELETESINGLEKEY } REGOPERATION;
//
// Public methods of hash table: alloc, free and addentry
//
#ifdef __cplusplus
extern "C" { #endif
REGHASHTABLE * AllocHashTable();
void FreeHashTable( REGHASHTABLE *pHashTable );
BOOL AddRegHashEntry( REGHASHTABLE *pHashTable, REGOPERATION opnType, WCHAR *pwszKeyName, WCHAR *pwszValueName, DWORD dwType, DWORD dwDataLen, BYTE *pData, WCHAR *pwszGPO, WCHAR *pwszSOM, WCHAR *szCommand, BOOL bCreateCommand); #ifdef __cplusplus
} #endif
|