mirror of https://github.com/tongzx/nt5src
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.
77 lines
2.0 KiB
77 lines
2.0 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1994.
|
|
//
|
|
// File: propdata.hxx
|
|
//
|
|
// Contents: Static tables describing types of properties
|
|
//
|
|
// Classes: CTableVariant - PROPVARIANT wrapper; adds useful methods
|
|
//
|
|
// History: 28 Jan 1994 AlanW Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
//
|
|
// PropType gives the type of standard properties
|
|
//
|
|
|
|
struct PROP_TYPE {
|
|
PROPID propid; // a standard property ID
|
|
VARENUM vtPropType; // the guaranteed type of propid
|
|
};
|
|
|
|
extern const PROP_TYPE aPropType[];
|
|
|
|
extern const unsigned cPropType;
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: PropIdToType, inline public
|
|
//
|
|
// Synopsis: If the input propid is a system property, return its type.
|
|
//
|
|
// Arguments: [prop] - the property ID to be mapped
|
|
//
|
|
// Returns: VARENUM - the variant type of the property if it is in
|
|
// the mapping table; VT_NULL otherwise.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
inline VARENUM PropIdToType (PROPID prop)
|
|
{
|
|
for (unsigned iProp = 0;
|
|
iProp < cPropType;
|
|
iProp++) {
|
|
|
|
if (aPropType[iProp].propid == prop)
|
|
return aPropType[iProp].vtPropType;
|
|
}
|
|
return VT_NULL;
|
|
}
|
|
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Macro: ALIGN
|
|
//
|
|
// Synopsis: Align a pointer, ptr, to an address alignment, algn.
|
|
//
|
|
// Effects: The input parameter ptr is modified.
|
|
//
|
|
// Arguments: [ptr] - the pointer to be aligned
|
|
// [algn] - the unit of alignment
|
|
//
|
|
// Requires: algn must be a power of two.
|
|
// ptr must be an lvalue, typically a pointer to byte.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
#define ALIGN(ptr, algn) ((ptr) = (((ptr) + ((algn)-1)) & (~(algn-1))))
|
|
|