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_
|