395 lines
5 KiB
C++
395 lines
5 KiB
C++
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1991-2000 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
regvalue.hxx
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
|
|||
|
This module contains the declarations for the REGISTRY_VALUE_ENTRY class.
|
|||
|
This class models a value entry of a registry key.
|
|||
|
It contains:
|
|||
|
|
|||
|
-value name
|
|||
|
-title index
|
|||
|
-data type
|
|||
|
-buffer that contains the data in a value entry
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Jaime Sasson (jaimes) 06-Aug-1991
|
|||
|
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
|
|||
|
Ulib, User Mode
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
#if !defined( _REGISTRY_VALUE_ENTRY_ )
|
|||
|
|
|||
|
#define _REGISTRY_VALUE_ENTRY_
|
|||
|
|
|||
|
#include "ulib.hxx"
|
|||
|
#include "wstring.hxx"
|
|||
|
|
|||
|
//
|
|||
|
// Declare primitive value types.
|
|||
|
//
|
|||
|
|
|||
|
typedef enum _REG_TYPE {
|
|||
|
|
|||
|
TYPE_REG_NONE = REG_NONE,
|
|||
|
TYPE_REG_SZ = REG_SZ,
|
|||
|
TYPE_REG_EXPAND_SZ = REG_EXPAND_SZ,
|
|||
|
TYPE_REG_BINARY = REG_BINARY,
|
|||
|
TYPE_REG_DWORD = REG_DWORD,
|
|||
|
TYPE_REG_MULTI_SZ = REG_MULTI_SZ,
|
|||
|
TYPE_REG_RESOURCE_LIST= REG_RESOURCE_LIST,
|
|||
|
TYPE_REG_FULL_RESOURCE_DESCRIPTOR= REG_FULL_RESOURCE_DESCRIPTOR,
|
|||
|
TYPE_REG_RESOURCE_REQUIREMENTS_LIST= REG_RESOURCE_REQUIREMENTS_LIST,
|
|||
|
TYPE_UNKNOWN
|
|||
|
} REG_TYPE;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
DECLARE_CLASS( REGISTRY );
|
|||
|
DECLARE_CLASS( REGISTRY_VALUE_ENTRY );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
class REGISTRY_VALUE_ENTRY : public OBJECT {
|
|||
|
|
|||
|
FRIEND class REGISTRY;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
DECLARE_CONSTRUCTOR( REGISTRY_VALUE_ENTRY );
|
|||
|
|
|||
|
DECLARE_CAST_MEMBER_FUNCTION( REGISTRY_VALUE_ENTRY );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
~REGISTRY_VALUE_ENTRY(
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
BOOLEAN
|
|||
|
Initialize(
|
|||
|
IN PCWSTRING ValueName,
|
|||
|
IN ULONG TitleIndex,
|
|||
|
IN REG_TYPE Type,
|
|||
|
IN PCBYTE Data DEFAULT NULL,
|
|||
|
IN ULONG Size DEFAULT 0
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
ULONG
|
|||
|
GetData(
|
|||
|
OUT PCBYTE* Data
|
|||
|
) CONST;
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
PCWSTRING
|
|||
|
GetName(
|
|||
|
) CONST;
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
ULONG
|
|||
|
GetTitleIndex(
|
|||
|
) CONST;
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
REG_TYPE
|
|||
|
GetType(
|
|||
|
) CONST;
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
BOOLEAN
|
|||
|
PutData(
|
|||
|
IN PCBYTE Data,
|
|||
|
IN ULONG DataSize
|
|||
|
);
|
|||
|
|
|||
|
#if DBG
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
DbgPrintValueEntry(
|
|||
|
);
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
BOOLEAN
|
|||
|
Initialize(
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
Construct(
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
Destroy(
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
SetTitleIndex(
|
|||
|
IN ULONG TitleIndex
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
SetType(
|
|||
|
IN REG_TYPE Type
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
BOOLEAN
|
|||
|
PutName(
|
|||
|
IN PCWSTRING ValueName
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
DSTRING _Name;
|
|||
|
ULONG _TitleIndex;
|
|||
|
REG_TYPE _Type;
|
|||
|
PBYTE _Data;
|
|||
|
ULONG _Size;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
ULONG
|
|||
|
REGISTRY_VALUE_ENTRY::GetData(
|
|||
|
OUT PCBYTE* Data
|
|||
|
) CONST
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Return the buffer that contains the data stored in the value entry.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
Data - Variable that will contain the pointer to the buffer that
|
|||
|
contains the data.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
ULONG - Number of bytes in the buffer (Data size)
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
*Data = _Data;
|
|||
|
return( _Size );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
PCWSTRING
|
|||
|
REGISTRY_VALUE_ENTRY::GetName(
|
|||
|
) CONST
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Return a pointer to a WSTRING object that contains the value name.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
The value name.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
return( &_Name );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
ULONG
|
|||
|
REGISTRY_VALUE_ENTRY::GetTitleIndex(
|
|||
|
) CONST
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Return the title index of this value.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
ULONG - The title index.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
return( _TitleIndex );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
REG_TYPE
|
|||
|
REGISTRY_VALUE_ENTRY::GetType(
|
|||
|
) CONST
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Return the type of data stored in this object.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
REG_TYPE - The data type.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
return( _Type );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
BOOLEAN
|
|||
|
REGISTRY_VALUE_ENTRY::PutName(
|
|||
|
IN PCWSTRING ValueName
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Initialize the variable _Name.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
ValueName - Pointer to a WSTRING object that contains the value name.
|
|||
|
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
DebugPtrAssert( ValueName );
|
|||
|
return( _Name.Initialize( ValueName ) );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
VOID
|
|||
|
REGISTRY_VALUE_ENTRY::SetTitleIndex(
|
|||
|
IN ULONG TitleIndex
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Initialize the variable _TitleIndex.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
TitleIndex - The title index.
|
|||
|
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
_TitleIndex = TitleIndex;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
VOID
|
|||
|
REGISTRY_VALUE_ENTRY::SetType(
|
|||
|
IN REG_TYPE Type
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Initialize the variable _Type.
|
|||
|
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
Type - The type of data.
|
|||
|
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
_Type = Type;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif // _REGISTRY_VALUE_ENTRY_
|