Source code of Windows XP (NT5)
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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1992.
//
// File: PropDesc.hxx
//
// Contents: Persistent property store metadata
//
// Classes: CPropDesc
//
// History: 27-Dec-19 KyleP Created
//
//----------------------------------------------------------------------------
#pragma once
//+-------------------------------------------------------------------------
//
// Class: CPropDesc
//
// Purpose: Description of metadata for a single property
//
// History: 27-Dec-95 KyleP Created
//
//--------------------------------------------------------------------------
class CPropDesc { public:
CPropDesc() { _pid = pidInvalid; }
void Init( PROPID pid, ULONG vt, DWORD oStart, DWORD cbMax, DWORD ordinal, DWORD rec, BOOL fModifiable = TRUE ) { _pid = pid; _vt = vt; _oStart = oStart; _cbMax = cbMax; _ordinal = ordinal; _mask = 1 << ((ordinal % 16) * 2); _rec = rec; _fModifiable = fModifiable; }
PROPID Pid() const { return _pid; } ULONG Type() const { return _vt; } DWORD Offset() const { return _oStart; } DWORD Size() const { return _cbMax; } DWORD Ordinal() const { return _ordinal; } DWORD Mask() const { return _mask; } DWORD Record() const { return _rec; } BOOL Modifiable() const { return _fModifiable; }
BOOL IsInUse() const { return (_pid != pidInvalid); } void Free() { _pid = pidInvalid - 1; } BOOL IsFree() const { return (_pid == (pidInvalid - 1) || _pid == pidInvalid); } BOOL IsFixedSize() const { return (_oStart != 0xFFFFFFFF); }
void SetOrdinal( DWORD ordinal ) { _ordinal = ordinal; _mask = 1 << ((ordinal % 16) * 2); } void SetOffset( DWORD oStart ) { _oStart = oStart; } void SetRecord( DWORD rec ) { _rec = rec; }
private:
PROPID _pid; // Propid
ULONG _vt; // Data type (fixed types only)
DWORD _oStart; // Offset in fixed area to property (fixed types only)
DWORD _cbMax; // Max size of property (used to compute record size)
DWORD _ordinal; // Position of property in record. Zero based.
DWORD _mask; // 1 << Ordinal. Stored for efficiency
DWORD _rec; // Position of metadata object in metadata stream.
BOOL _fModifiable;// Can this property meta info be modified after initial setting?
};
|