windows-nt/Source/XPSP1/NT/public/sdk/inc/propset.h
2020-09-26 16:20:57 +08:00

110 lines
2.6 KiB
C

//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1993-1999
//
// File: propset.h
//
// Contents: OLE Appendix B property set structure definitions
//
// History: 15-Jul-94 brianb created
// 15-Aug-94 SethuR revised
// 22-Feb-96 MikeHill Changed cb in tagENTRY to cch.
// 28-May-96 MikeHill Changed OSVER_* to OSKIND_*.
//
//---------------------------------------------------------------------------
#ifndef _PROPSET_H_
#define _PROPSET_H_
#if _MSC_VER > 1000
#pragma once
#endif
// CBMAXPROPSETSTREAM must be a power of 2.
#define CBMAXPROPSETSTREAM (1024 * 1024)
#define IsIndirectVarType(vt) \
((vt) == VT_STREAM || \
(vt) == VT_STREAMED_OBJECT || \
(vt) == VT_STORAGE || \
(vt) == VT_STORED_OBJECT || \
(vt) == VT_VERSIONED_STREAM)
// Defines for the high order WORD of dwOSVer:
#define OSKIND_WINDOWS 0x0000
#define OSKIND_MACINTOSH 0x0001
#define OSKIND_WIN32 0x0002
typedef struct tagFORMATIDOFFSET // fo
{
FMTID fmtid;
DWORD dwOffset;
} FORMATIDOFFSET;
#define CB_FORMATIDOFFSET sizeof(FORMATIDOFFSET)
typedef struct tagPROPERTYSETHEADER // ph
{
WORD wByteOrder; // Always 0xfffe
WORD wFormat; // Always 0
DWORD dwOSVer; // System version
CLSID clsid; // Application CLSID
DWORD reserved; // reserved (must be at least 1)
} PROPERTYSETHEADER;
#define CB_PROPERTYSETHEADER sizeof(PROPERTYSETHEADER)
#define PROPSET_BYTEORDER 0xFFFE
typedef struct tagPROPERTYIDOFFSET // po
{
DWORD propid;
DWORD dwOffset;
} PROPERTYIDOFFSET;
#define CB_PROPERTYIDOFFSET sizeof(PROPERTYIDOFFSET)
typedef struct tagPROPERTYSECTIONHEADER // sh
{
DWORD cbSection;
DWORD cProperties;
PROPERTYIDOFFSET rgprop[1];
} PROPERTYSECTIONHEADER;
#define CB_PROPERTYSECTIONHEADER FIELD_OFFSET(PROPERTYSECTIONHEADER, rgprop)
typedef struct tagSERIALIZEDPROPERTYVALUE // prop
{
DWORD dwType;
BYTE rgb[1];
} SERIALIZEDPROPERTYVALUE;
#define CB_SERIALIZEDPROPERTYVALUE FIELD_OFFSET(SERIALIZEDPROPERTYVALUE, rgb)
typedef struct tagENTRY // ent
{
DWORD propid;
DWORD cch; // Includes trailing '\0' or L'\0'
char sz[1]; // WCHAR if UNICODE CodePage
} ENTRY;
#define CB_DICTIONARY_ENTRY FIELD_OFFSET(ENTRY, sz)
typedef struct tagDICTIONARY // dy
{
DWORD cEntries;
ENTRY rgEntry[1];
} DICTIONARY;
#define CB_DICTIONARY FIELD_OFFSET(DICTIONARY, rgEntry)
#endif // _PROPSET_H_