📄 wtypes.idl
字号:
cpp_quote("#if !defined( __LPGUID_DEFINED__ )")
cpp_quote("#define __LPGUID_DEFINED__")
typedef GUID *LPGUID;
cpp_quote("#endif // !__LPGUID_DEFINED__")
cpp_quote("#ifndef __OBJECTID_DEFINED")
cpp_quote("#define __OBJECTID_DEFINED")
cpp_quote("#define _OBJECTID_DEFINED")
typedef struct _OBJECTID // NOTE!! Order of structure members is important for OFS
{ // enumeration.
GUID Lineage; // Unique for objects copied from same original and copies of.
unsigned long Uniquifier; // Random, to provide uniqueness within small set with same
} OBJECTID; // lineage id.
cpp_quote("#endif // !_OBJECTID_DEFINED")
cpp_quote("#if !defined( __IID_DEFINED__ )")
cpp_quote("#define __IID_DEFINED__")
// Interface ID are just a kind of GUID
typedef GUID IID;
typedef IID *LPIID;
cpp_quote("#define IID_NULL GUID_NULL")
cpp_quote("#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)")
// Class ID are just a kind of GUID
typedef GUID CLSID;
typedef CLSID *LPCLSID;
cpp_quote("#define CLSID_NULL GUID_NULL")
cpp_quote("#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)")
// Format ID are just a kind of GUID
typedef GUID FMTID;
typedef FMTID *LPFMTID;
cpp_quote("#define FMTID_NULL GUID_NULL")
cpp_quote("#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)")
//The following typedefs are used internally by MIDL.
cpp_quote("#if 0")
#if defined(__midl)
/* MIDL 2.0 definitions */
typedef GUID *REFGUID;
typedef IID *REFIID;
typedef CLSID *REFCLSID;
typedef FMTID *REFFMTID;
#else
/* MIDL 1.1 definitions */
typedef GUID REFGUID;
typedef IID REFIID;
typedef CLSID REFCLSID;
typedef FMTID REFFMTID;
#endif
cpp_quote("#endif // 0")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("#ifndef _REFGUID_DEFINED")
cpp_quote("#define _REFGUID_DEFINED")
cpp_quote("#define REFGUID const GUID &")
cpp_quote("#endif // !_REFGUID_DEFINED")
cpp_quote("#ifndef _REFIID_DEFINED")
cpp_quote("#define _REFIID_DEFINED")
cpp_quote("#define REFIID const IID &")
cpp_quote("#endif // !_REFIID_DEFINED")
cpp_quote("#ifndef _REFCLSID_DEFINED")
cpp_quote("#define _REFCLSID_DEFINED")
cpp_quote("#define REFCLSID const CLSID &")
cpp_quote("#endif // !_REFCLSID_DEFINED")
cpp_quote("#ifndef _REFFMTID_DEFINED")
cpp_quote("#define _REFFMTID_DEFINED")
cpp_quote("#define REFFMTID const FMTID &")
cpp_quote("#endif // !_REFFMTID_DEFINED")
cpp_quote("#else // !__cplusplus")
cpp_quote("#ifndef _REFGUID_DEFINED")
cpp_quote("#define _REFGUID_DEFINED")
cpp_quote("#define REFGUID const GUID * const")
cpp_quote("#endif // !_REFGUID_DEFINED")
cpp_quote("#ifndef _REFIID_DEFINED")
cpp_quote("#define _REFIID_DEFINED")
cpp_quote("#define REFIID const IID * const")
cpp_quote("#endif // !_REFIID_DEFINED")
cpp_quote("#ifndef _REFCLSID_DEFINED")
cpp_quote("#define _REFCLSID_DEFINED")
cpp_quote("#define REFCLSID const CLSID * const")
cpp_quote("#endif // !_REFCLSID_DEFINED")
cpp_quote("#ifndef _REFFMTID_DEFINED")
cpp_quote("#define _REFFMTID_DEFINED")
cpp_quote("#define REFFMTID const FMTID * const")
cpp_quote("#endif // !_REFFMTID_DEFINED")
cpp_quote("#endif // !__cplusplus")
cpp_quote("#endif // !__IID_DEFINED__")
/************************* Misc types ***********************************/
// Common typdefs used in API paramaters, gleamed from compobj.h
// memory context values; passed to CoGetMalloc
typedef enum tagMEMCTX
{
MEMCTX_TASK = 1, // task (private) memory
MEMCTX_SHARED = 2, // shared memory (between processes)
MEMCTX_MACSYSTEM = 3, // on the mac, the system heap
// these are mostly for internal use...
MEMCTX_UNKNOWN = -1, // unknown context (when asked about it)
MEMCTX_SAME = -2, // same context (as some other pointer)
} MEMCTX;
// For IRunningObjectTable::Register
cpp_quote("#ifndef _ROTFLAGS_DEFINED")
cpp_quote("#define _ROTFLAGS_DEFINED")
cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
cpp_quote("#endif // !_ROTFLAGS_DEFINED")
// Maximum size of comparison buffer for IROTData::GetComparisonData
cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
cpp_quote("#define ROT_COMPARE_MAX 2048")
cpp_quote("#endif // !_ROT_COMPARE_MAX_DEFINED")
// class context: used to determine what scope and kind of class object to use
// NOTE: this is a bitwise enum
typedef enum tagCLSCTX
{
CLSCTX_INPROC_SERVER = 0x01, // server dll (runs in same process as caller)
CLSCTX_INPROC_HANDLER = 0x02, // handler dll (runs in same process as caller)
CLSCTX_LOCAL_SERVER = 0x04, // server exe (runs on same machine; diff proc)
CLSCTX_INPROC_SERVER16 = 0x08, // 16-bit server dll (runs in same process as caller)
CLSCTX_REMOTE_SERVER = 0x10, // remote server exe (runs on different machine)
CLSCTX_INPROC_HANDLER16 = 0x20, // 16-bit handler dll (runs in same process as caller)
CLSCTX_INPROC_SERVERX86 = 0x40, // Wx86 server dll (runs in same process as caller)
CLSCTX_INPROC_HANDLERX86 = 0x80, // Wx86 handler dll (runs in same process as caller)
CLSCTX_ESERVER_HANDLER = 0x100, // handler dll (runs in the server process)
} CLSCTX;
// marshaling flags; passed to CoMarshalInterface
typedef enum tagMSHLFLAGS
{
MSHLFLAGS_NORMAL = 0, // normal marshaling via proxy/stub
MSHLFLAGS_TABLESTRONG = 1, // keep object alive; must explicitly release
MSHLFLAGS_TABLEWEAK = 2, // doesn't hold object alive; still must release
MSHLFLAGS_NOPING = 4 // remote clients dont 'ping' to keep objects alive
} MSHLFLAGS;
// marshal context: determines the destination context of the marshal operation
typedef enum tagMSHCTX
{
MSHCTX_LOCAL = 0, // unmarshal context is local (eg.shared memory)
MSHCTX_NOSHAREDMEM = 1, // unmarshal context has no shared memory access
MSHCTX_DIFFERENTMACHINE = 2,// unmarshal context is on a different machine
MSHCTX_INPROC = 3, // unmarshal context is on different thread
} MSHCTX;
//
// Common typedefs for paramaters used in data view API's, gleamed
// from dvobj.h
//
// Data/View aspect; specifies the desired aspect of the object when
// drawing or getting data.
typedef enum tagDVASPECT
{
DVASPECT_CONTENT = 1,
DVASPECT_THUMBNAIL = 2,
DVASPECT_ICON = 4,
DVASPECT_DOCPRINT = 8
} DVASPECT;
/****** Storage types *************************************************/
/* Storage commit types */
typedef enum tagSTGC
{
STGC_DEFAULT = 0,
STGC_OVERWRITE = 1,
STGC_ONLYIFCURRENT = 2,
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
STGC_CONSOLIDATE = 8
} STGC;
typedef enum tagSTGMOVE
{
STGMOVE_MOVE = 0,
STGMOVE_COPY = 1,
STGMOVE_SHALLOWCOPY = 2
} STGMOVE;
typedef enum tagSTATFLAG
{
STATFLAG_DEFAULT = 0,
STATFLAG_NONAME = 1,
STATFLAG_NOOPEN = 2
} STATFLAG;
typedef [context_handle] void *HCONTEXT;
/****** Critical Section Wrappers ***********************************/
/* if not already picked up from olenls.h */
cpp_quote("#ifndef _LCID_DEFINED")
cpp_quote("#define _LCID_DEFINED")
typedef DWORD LCID;
cpp_quote("#endif // !_LCID_DEFINED")
// #######################################################################
//
// User marshal support for Windows data types.
//
// Frequently used helpers: sized blobs
//
// Never put [user_marshal] or [wire_marshal] on the helpers directly.
//
// Simple blobs.
typedef struct _BYTE_BLOB {
unsigned long clSize;
[size_is(clSize)] byte abData[];
} BYTE_BLOB;
typedef [unique] BYTE_BLOB * UP_BYTE_BLOB;
typedef struct _WORD_BLOB {
unsigned long clSize;
[size_is(clSize)] unsigned short asData[];
} WORD_BLOB;
typedef [unique] WORD_BLOB * UP_WORD_BLOB;
typedef struct _DWORD_BLOB {
unsigned long clSize;
[size_is(clSize)] unsigned long alData[];
} DWORD_BLOB;
typedef [unique] DWORD_BLOB * UP_DWORD_BLOB;
// Flagged blobs.
typedef struct _FLAGGED_BYTE_BLOB {
unsigned long fFlags;
unsigned long clSize;
[size_is(clSize)] byte abData[];
} FLAGGED_BYTE_BLOB;
typedef [unique] FLAGGED_BYTE_BLOB * UP_FLAGGED_BYTE_BLOB;
typedef struct _FLAGGED_WORD_BLOB {
unsigned long fFlags;
unsigned long clSize;
[size_is(clSize)] unsigned short asData[];
} FLAGGED_WORD_BLOB;
typedef [unique] FLAGGED_WORD_BLOB * UP_FLAGGED_WORD_BLOB;
// Frequently used helpers with sized pointers.
typedef struct _BYTE_SIZEDARR {
unsigned long clSize;
[size_is(clSize)] byte * pData ;
} BYTE_SIZEDARR;
typedef struct _SHORT_SIZEDARR {
unsigned long clSize;
[size_is(clSize)] unsigned short* pData ;
} WORD_SIZEDARR;
typedef struct _LONG_SIZEDARR {
unsigned long clSize;
[size_is(clSize)] unsigned long * pData ;
} DWORD_SIZEDARR;
typedef struct _HYPER_SIZEDARR {
unsigned long clSize;
[size_is(clSize)] hyper * pData ;
} HYPER_SIZEDARR;
// #########################################################################
//
// Constants for the call context
//
const unsigned long WDT_INPROC_CALL = 0x48746457;
const unsigned long WDT_REMOTE_CALL = 0x52746457;
// #########################################################################
//
// CLIPFORMAT
//
typedef union _userCLIPFORMAT switch(long fContext) u
{
case WDT_INPROC_CALL: DWORD dwValue;
case WDT_REMOTE_CALL: [string] wchar_t * pwszName;
} userCLIPFORMAT;
typedef [unique] userCLIPFORMAT * wireCLIPFORMAT;
typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
// #########################################################################
//
// Good for most of the gdi handles.
typedef union _GDI_NONREMOTE switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
} GDI_NONREMOTE;
// #########################################################################
//
// HGLOBAL
//
// A global may be Null or may be non-NULL with 0 length.
typedef union _userHGLOBAL switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB * hRemote;
default: long hGlobal;
} userHGLOBAL;
typedef [unique] userHGLOBAL * wireHGLOBAL;
// #########################################################################
//
// HMETAFILE
//
typedef union _userHMETAFILE switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
default: long hGlobal;
} userHMETAFILE;
// #########################################################################
//
// HMETAFILEPICT
//
typedef struct _remoteMETAFILEPICT
{
long mm;
long xExt;
long yExt;
userHMETAFILE * hMF;
} remoteMETAFILEPICT;
typedef union _userHMETAFILEPICT switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: remoteMETAFILEPICT* hRemote;
default: long hGlobal;
} userHMETAFILEPICT;
// #########################################################################
//
// HENHMETAFILE
//
typedef union _userHENHMETAFILE switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
default: long hGlobal;
} userHENHMETAFILE;
// #########################################################################
//
// HBITMAP
//
// RemHBITMAP was just a byte blob, but the whole bitmap structure was copied
// at the beginning of the buffer.
// So, we take BITMAP fields from wingdi.x
typedef struct _userBITMAP
{
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
ULONG cbSize;
[size_is(cbSize)] byte pBuffer[];
} userBITMAP;
typedef union _userHBITMAP switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: userBITMAP * hRemote;
default: long hGlobal;
} userHBITMAP;
// #########################################################################
//
// HPALETTE
//
// PALETTEENTRY is in wingdi.x, it is a struct with 4 bytes.
// LOGPALETTE is in wingdi.x, it is a conf struct with paletteentries and
// a version field
typedef struct tagrpcLOGPALETTE {
WORD palVersion;
WORD palNumEntries;
[size_is( palNumEntries )] PALETTEENTRY palPalEntry[];
} rpcLOGPALETTE;
typedef union _userHPALETTE switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: rpcLOGPALETTE * hRemote;
default: long hGlobal;
} userHPALETTE;
// #########################################################################
//
// Handles passed locally as longs.
//
typedef union _RemotableHandle switch( long fContext ) u
{
case WDT_INPROC_CALL: long hInproc;
case WDT_REMOTE_CALL: long hRemote;
} RemotableHandle;
typedef [unique] RemotableHandle * wireHWND;
typedef [unique] RemotableHandle * wireHMENU;
typedef [unique] RemotableHandle * wireHACCEL;
typedef [unique] RemotableHandle * wireHBRUSH;
typedef [unique] RemotableHandle * wireHFONT;
typedef [unique] RemotableHandle * wireHDC;
typedef [unique] RemotableHandle * wireHICON;
cpp_quote("#if 0")
#ifndef _MIDL_DECLARE_WIREM_HANDLE
DECLARE_WIREM_HANDLE( HWND );
DECLARE_WIREM_HANDLE( HMENU );
DECLARE_WIREM_HANDLE( HACCEL );
DECLARE_WIREM_HANDLE( HBRUSH );
DECLARE_WIREM_HANDLE( HFONT );
DECLARE_WIREM_HANDLE( HDC );
DECLARE_WIREM_HANDLE( HICON );
#endif
cpp_quote("#ifndef _HCURSOR_DEFINED")
cpp_quote("#define _HCURSOR_DEFINED")
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
cpp_quote("#endif // !_HCURSOR_DEFINED")
cpp_quote("/* tagTEXTMETRICW was copied from wingdi.h for MIDL */")
typedef struct tagTEXTMETRICW {
LONG tmHeight;
LONG tmAscent;
LONG tmDescent;
LONG tmInternalLeading;
LONG tmExternalLeading;
LONG tmAveCharWidth;
LONG tmMaxCharWidth;
LONG tmWeight;
LONG tmOverhang;
LONG tmDigitizedAspectX;
LONG tmDigitizedAspectY;
WCHAR tmFirstChar;
WCHAR tmLastChar;
WCHAR tmDefaultChar;
WCHAR tmBreakChar;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -