📄 correg.h
字号:
//*****************************************************************************
// File: CorReg.H
//
// Copyright (c) 1996-1998 Microsoft Corporation. All Rights Reserved.
// Microsoft Confidential. Public header file for COM+ 1.0 release.
//*****************************************************************************
#ifndef _CORREG_H_
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _CORREG_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
//*****************************************************************************
// Required includes
#include <ole2.h> // Definitions of OLE types.
//*****************************************************************************
#ifdef __cplusplus
extern "C" {
#endif
// Force 1 byte alignment for structures which must match.
#include <pshpack1.h>
#ifndef NODLLIMPORT
#define DLLIMPORT __declspec(dllimport)
#else
#define DLLIMPORT
#endif
//*****************************************************************************
//*****************************************************************************
//
// D L L P U B L I C E N T R Y P O I N T D E C L A R A T I O N S
//
//*****************************************************************************
//*****************************************************************************
#if !defined(_META_DATA_NO_SCOPE_) || defined(_META_DATA_SCOPE_WRAPPER_)
//@todo: take out for RTM
STDAPI CoGetCor(REFIID riid, void** ppv);
#endif
STDAPI CoInitializeCor(DWORD fFlags);
STDAPI_(void) CoUninitializeCor(void);
//*****************************************************************************
//*****************************************************************************
//
// M E T A - D A T A D E C L A R A T I O N S
//
//*****************************************************************************
//*****************************************************************************
// Token definitions
typedef __int32 mdScope; // scope token
#define mdScopeNil ((mdScope)0)
typedef __int32 mdToken; // Generic token
typedef __int32 mdModule; // Module token (roughly, a scope)
typedef __int32 mdTypeDef; // TypeDef in this scope
typedef __int32 mdInterfaceImpl; // interface implementation token
typedef __int32 mdTypeRef; // TypeRef reference (this or other scope)
typedef __int32 mdNamespace; // namespace token
typedef __int32 mdCustomValue; // attribute token
typedef __int32 mdResource; // CompReg.Resource
typedef __int32 mdCocatdef; // CompReg.Cocat
typedef __int32 mdCocatImpl; // CompReg.CoclassCat
typedef __int32 mdMimeTypeImpl; // CompReg.CoclassMIME
typedef __int32 mdFormatImpl; // CompReg.CoclassFormats
typedef __int32 mdProgID; // CompReg.RedirectProgID
typedef __int32 mdRoleCheck; // CompReg.RoleCheck
typedef unsigned long RID;
enum CorRegTokenType
{
mdtTypeDef = 0x00000000,
mdtInterfaceImpl = 0x01000000,
mdtTypeRef = 0x03000000,
mdtNamespace = 0x06000000,
mdtCustomValue = 0x07000000,
mdtResource = 0x0B000000,
mdtCocatImpl = 0x0D000000,
mdtMimeTypeImpl = 0x0E000000,
mdtFormatImpl = 0x0F000000,
mdtProgID = 0x10000000,
mdtRoleCheck = 0x11000000,
mdtModule = 0x14000000,
};
//
// Build / decompose tokens.
//
#define RidToToken(rid,tktype) ((rid) |= (tktype))
#define TokenFromRid(rid,tktype) ((rid) | (tktype))
#define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff))
#define TypeFromToken(tk) ((tk) & 0xff000000)
#define mdTokenNil ((mdToken)0)
#define mdModuleNil ((mdModule)mdtModule)
#define mdTypeDefNil ((mdTypeDef)mdtTypeDef)
#define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl)
#define mdTypeRefNil ((mdTypeRef)mdtTypeRef)
#define mdNamespaceNil ((mdNamespace)mdtNamespace)
#define mdCustomValueNil ((mdCustomValue)mdtCustomValue)
#define mdResourceNil ((mdResource)mdtResource)
#define mdCocatImplNil ((mdCocatImpl)mdtCocatImpl)
#define mdMimeTypeImplNil ((mdMimeTypeImpl)mdtMimeTypeImpl)
#define mdFormatImplNil ((mdFormatImpl)mdtFormatImpl)
#define mdProgIDNil ((mdProgID)mdtProgID)
#define mdRoleCheckNil ((mdRoleCheck)mdtRoleCheck)
enum CorRegTypeAttr // Used by emit_defineclass
{
tdPublic = 0x0001, // Class is public scope
// Use this mask to retrieve class layout informaiton
// 0 is AutoLayout, 0x2 is LayoutSequential, 4 is ExplicitLayout
tdLayoutMask = 0x0006,
tdAutoLayout = 0x0000, // Class fields are auto-laid out
tdLayoutSequential = 0x0002, // Class fields are laid out sequentially
tdExplicitLayout = 0x0004, // Layout is supplied explicitly
tdWrapperClass = 0x0008, // This is a wrapper class
tdFinal = 0x0010, // Class is final
tdISSCompat = 0x0020, // InvokeSpecial backwards compatibility
// Use tdStringFormatMask to retrieve string information
tdStringFormatMask = 0x00c0,
tdAnsiClass = 0x0000, // LPTSTR is interpreted as ANSI in this class
tdUnicodeClass = 0x0040, // LPTSTR is interpreted as UNICODE
tdAutoClass = 0x0080, // LPTSTR is interpreted automatically
tdValueClass = 0x0100, // Class has value based semantics
tdInterface = 0x0200, // Class is an interface
tdAbstract = 0x0400, // Class is abstract
tdImport = 0x1000, // Class / interface is imported
tdRecord = 0x2000, // Class is a record (no methods or props)
tdEnum = 0x4000, // Class is an enum; static final values only
tdReserved1 = 0x0800, // reserve bit for internal use
// tdReserved2 = 0x8000, // reserve bit for internal use
};
enum CorImplementType // Used internally for implements table
{
itImplements = 0x0000, // Interfaces implemented or parent ifaces
itEvents = 0x0001, // Interfaces raised
itRequires = 0x0002,
itInherits = 0x0004,
};
//-------------------------------------
//--- Registration support types
//-------------------------------------
enum CorClassActivateAttr
{
caaDeferCreate = 0x0001, // supports deferred create
caaAppObject = 0x0002, // class is AppObject
caaFixedIfaceSet = 0x0004, // interface set is open (use QI)
caaIndependentlyCreateable = 0x0100,
caaPredefined = 0x0200,
// mask for caaLB*
caaLoadBalancing = 0x0c00,
caaLBNotSupported = 0x0400,
caaLBSupported = 0x0800,
caaLBNotSpecified = 0x0000,
// mask for caaOP*
caaObjectPooling = 0x3000,
caaOPNotSupported = 0x1000,
caaOPSupported = 0x2000,
caaOPNotSpecified = 0x0000,
// mask for caaJA*
caaJITActivation = 0xc000,
caaJANotSupported = 0x4000,
caaJASupported = 0x8000,
caaJANotSpecified = 0x0000,
};
enum CorIfaceSvcAttr
{
mlNone = 0x0001, // Not marshalled
mlAutomation = 0x0002, // Standard marshalling
mlProxyStub = 0x0004, // Custom marshalling
// mask for mlDefer*
mlDeferrable = 0x0018, // Methods on this interface are queuable
mlDeferNotSupported = 0x0008,
mlDeferSupported = 0x0010,
mlDeferNotSpecified = 0x0000,
};
enum CocatImplAttr
{
catiaImplements = 0x0001, // coclass implements this category
catiaRequires = 0x0002 // coclass requires this category
};
enum CorModuleExportAttr
{
moUsesGetLastError = 0x0001 // Module uses GetLastError
};
enum CorModuleRegAttr
{
rmaCustomReg = 0x0001
};
enum CorRegFormatAttr
{
rfaSupportsFormat = 0x0001,
rfaConvertsFromFormat = 0x0002,
rfaConvertsToFormat = 0x0003,
rfaDefaultFormat = 0x0004,
rfaIsFileExt = 0x0005,
rfaIsFileType = 0x0006,
rfaIsDataFormat = 0x0007
};
enum CorSynchAttr
{
sySupported = 0x0001,
syRequired = 0x0002,
syRequiresNew = 0x0004,
syNotSupported = 0x0008,
syThreadAffinity = 0x0010
};
enum CorThreadingAttr
{
taMain = 0x0001,
taSTA = 0x0002,
taMTA = 0x0004,
taNeutral = 0x0008,
taBoth = 0x0010
};
enum CorXactionAttr
{
xaSupported = 0x0001,
xaRequired = 0x0002,
xaRequiresNew = 0x0004,
xaNotSupported = 0x0008,
xaNoVote = 0x0010
};
enum CorRoleCheckAttr
{
rcChecksFor = 0x0001
};
//
// Opaque type for an enumeration handle.
//
typedef void *HCORENUM;
//
// GetSaveSize accuracy
//
#ifndef _CORSAVESIZE_DEFINED_
#define _CORSAVESIZE_DEFINED_
enum CorSaveSize
{
cssAccurate = 0x0000, // Find exact save size, accurate but slower.
cssQuick = 0x0001 // Estimate save size, may pad estimate, but faster.
};
#endif
#define MAX_CLASS_NAME 255
#define MAX_PACKAGE_NAME 255
typedef unsigned __int64 CLASSVERSION;
// %%Prototypes: -------------------------------------------------------------
#ifndef DECLSPEC_SELECT_ANY
#define DECLSPEC_SELECT_ANY __declspec(selectany)
#endif // DECLSPEC_SELECT_ANY
// CLSID_Cor: {bee00000-ee77-11d0-a015-00c04fbbb884}
extern const GUID DECLSPEC_SELECT_ANY CLSID_Cor =
{ 0xbee00010, 0xee77, 0x11d0, {0xa0, 0x15, 0x00, 0xc0, 0x4f, 0xbb, 0xb8, 0x84 } };
// CLSID_CorMetaDataDispenser: {E5CB7A31-7512-11d2-89CE-0080C792E5D8}
// This is the "Master Dispenser", always guaranteed to be the most recent
// dispenser on the machine.
extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataDispenser =
{ 0xe5cb7a31, 0x7512, 0x11d2, { 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8 } };
// CLSID_CorMetaDataDispenserReg: {435755FF-7397-11d2-9771-00A0C9B4D50C}
// Dispenser coclass for version 1.0 meta data. To get the "latest" bind
// to CLSID_CorMetaDataDispenser.
extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataDispenserReg =
{ 0x435755ff, 0x7397, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } };
// CLSID_CorMetaDataReg: {87F3A1F5-7397-11d2-9771-00A0C9B4D50C}
// For COM+ 1.0 Meta Data, Data Driven Registration
extern const GUID DECLSPEC_SELECT_ANY CLSID_CorMetaDataReg =
{ 0x87f3a1f5, 0x7397, 0x11d2, { 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc } };
// IID_IMetaDataInternal {02D601BB-C5B9-11d1-93F9-0000F8083460}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -