📄 objcreate.odl
字号:
[
uuid(B01A92F0-9F87-11D3-BBF2-D41203C10000),
helpstring("VBoost: Object Creation and Security"),
lcid(0x0),
version(1.0)
]
library ObjCreate
{
importlib("stdole2.tlb");
importlib("VBoostTypes6.olb");
typedef enum {
RPC_C_AUTHN_LEVEL_DEFAULT = 0,
RPC_C_AUTHN_LEVEL_NONE = 1,
RPC_C_AUTHN_LEVEL_CONNECT = 2,
RPC_C_AUTHN_LEVEL_CALL = 3,
RPC_C_AUTHN_LEVEL_PKT = 4,
RPC_C_AUTHN_LEVEL_PKT_INTEGRITY = 5,
RPC_C_AUTHN_LEVEL_PKT_PRIVACY = 6
} AUTHN_LEVEL;
typedef [public] long AUTHN_LEVELPtr;
typedef enum {
RPC_C_AUTHN_PROTECT_DEFAULT = 0,
RPC_C_AUTHN_PROTECT_NONE = 1,
RPC_C_AUTHN_PROTECT_CONNECT = 2,
RPC_C_AUTHN_PROTECT_CALL = 3,
RPC_C_AUTHN_PROTECT_PKT = 4,
RPC_C_AUTHN_PROTECT_PKT_INTEGRITY = 5,
RPC_C_AUTHN_PROTECT_PKT_PRIVACY = 6
} AUTHN_PROTECT;
typedef [public] long AUTHN_PROTECTPtr;
typedef enum {
RPC_C_IMP_LEVEL_ANONYMOUS = 1,
RPC_C_IMP_LEVEL_IDENTIFY = 2,
RPC_C_IMP_LEVEL_IMPERSONATE = 3,
RPC_C_IMP_LEVEL_DELEGATE = 4
} IMP_LEVEL;
typedef [public] long IMP_LEVELPtr;
typedef enum {
RPC_C_AUTHN_NONE = 0,
RPC_C_AUTHN_DCE_PRIVATE = 1,
RPC_C_AUTHN_DCE_PUBLIC = 2,
RPC_C_AUTHN_DEC_PUBLIC = 4,
RPC_C_AUTHN_WINNT = 10,
RPC_C_AUTHN_DPA = 16,
RPC_C_AUTHN_MSN = 17,
RPC_C_AUTHN_GSS_KERBEROS = 18,
RPC_C_AUTHN_MQ = 100,
RPC_C_AUTHN_DEFAULT = 0xFFFFFFFF
} AUTHN;
typedef [public] long AUTHNPtr;
typedef enum {
RPC_C_AUTHZ_NONE = 0,
RPC_C_AUTHZ_NAME = 1,
RPC_C_AUTHZ_DCE = 2
} AUTHZ;
typedef [public] long AUTHZPtr;
typedef enum
{
EOAC_NONE = 0x0,
EOAC_MUTUAL_AUTH = 0x1,
EOAC_STATIC_CLOAKING = 0x20,
EOAC_DYNAMIC_CLOAKING = 0x40,
EOAC_ANY_AUTHORITY = 0x80,
EOAC_MAKE_FULLSIC = 0x100,
EOAC_DEFAULT = 0x800,
// These are only valid for CoInitializeSecurity
EOAC_SECURE_REFS = 0x2,
EOAC_ACCESS_CONTROL = 0x4,
EOAC_APPID = 0x8,
EOAC_DYNAMIC = 0x10,
EOAC_REQUIRE_FULLSIC = 0x200,
EOAC_AUTO_IMPERSONATE = 0x400,
EOAC_NO_CUSTOM_MARSHAL = 0x2000,
EOAC_DISABLE_AAA = 0x1000
} EOLE_AUTHENTICATION_CAPABILITIES;
typedef enum
{
SEC_WINNT_AUTH_IDENTITY_ANSI = 0x1,
SEC_WINNT_AUTH_IDENTITY_UNICODE = 0x2
} SEC_WINNT_AUTH_IDENTITY_STRINGTYPE;
typedef [public] long EOLE_AUTHENTICATION_CAPABILITIESPtr;
typedef struct
{
BSTR User;
ULONG UserLength;
BSTR Domain;
ULONG DomainLength;
BSTR Password;
ULONG PasswordLength;
[helpstring("Flags should be set to UNICODE")]
SEC_WINNT_AUTH_IDENTITY_STRINGTYPE Flags;
} COAUTHIDENTITY;
typedef [public] long COAUTHIDENTITYPtr;
typedef [public] long COAUTHIDENTITYPtrPtr;
typedef struct
{
AUTHN dwAuthnSvc;
AUTHZ dwAuthzSvc;
BSTR pwszServerPrincName;
AUTHN_LEVEL dwAuthnLevel;
IMP_LEVEL dwImpersonationLevel;
COAUTHIDENTITYPtr pAuthIdentityData;
EOLE_AUTHENTICATION_CAPABILITIES dwCapabilities;
} COAUTHINFO;
typedef [public] long COAUTHINFOPtr;
typedef struct
{
DWORD dwReserved1;
BSTR pwszName;
COAUTHINFOPtr pAuthInfo;
DWORD dwReserved2;
} COSERVERINFO;
typedef [public] long COSERVERINFOPtr;
typedef enum
{
CLSCTX_INPROC_SERVER = 0x1,
[hidden]
CLSCTX_INPROC_HANDLER = 0x2,
CLSCTX_LOCAL_SERVER = 0x4,
[hidden]
CLSCTX_INPROC_SERVER16 = 0x8,
CLSCTX_REMOTE_SERVER = 0x10,
[hidden]
CLSCTX_INPROC_HANDLER16 = 0x20,
[hidden]
CLSCTX_INPROC_SERVERX86 = 0x40,
[hidden]
CLSCTX_INPROC_HANDLERX86 = 0x80,
[hidden]
CLSCTX_ESERVER_HANDLER = 0x100
} CLSCTX;
typedef enum
{
REGCLS_SINGLEUSE = 0, // class object only generates one instance
REGCLS_MULTIPLEUSE = 1, // same class object genereates multiple inst.
// and local automatically goes into inproc tbl.
REGCLS_MULTI_SEPARATE = 2, // multiple use, but separate control over each
// context.
REGCLS_SUSPENDED = 4, // register is as suspended, will be activated
// when app calls CoResumeClassObjects
REGCLS_SURROGATE = 8 // must be used when a surrogate process
// is registering a class object that will be
// loaded in the surrogate
} REGCLS;
typedef struct
{
VBGUIDPtr pIID;
stdole.IUnknown *pItf;
long hr;
} MULTI_QI;
typedef [public] long MULTI_QIPtr;
typedef struct
{
LONG cbLicInfo;
BOOL fRuntimeKeyAvail;
BOOL fLicVerified;
} LICINFO;
[
uuid(0000013D-0000-0000-C000-000000000046),
odl
]
interface IClientSecurity : IUnknown
{
HRESULT QueryBlanket(
[in] IUnknown *pProxy,
[in, defaultvalue(0)] AUTHNPtr pAuthnSvc,
[in, defaultvalue(0)] AUTHZPtr pAuthzSvc,
[in, defaultvalue(0)] LPOLESTRPtr pServerPrincName,
[in, defaultvalue(0)] AUTHN_LEVELPtr pAuthnLevel,
[in, defaultvalue(0)] IMP_LEVELPtr pImpLevel,
[in, defaultvalue(0)] COAUTHIDENTITYPtrPtr pAuthInfo,
[in, defaultvalue(0)] EOLE_AUTHENTICATION_CAPABILITIESPtr pCapabilites);
HRESULT SetBlanket(
[in] IUnknown *pProxy,
[in] AUTHN AuthnSvc,
[in] AUTHZ AuthzSvc,
[in] LPOLESTR pServerPrincName,
[in] AUTHN_LEVEL AuthnLevel,
[in] IMP_LEVEL ImpLevel,
[in] COAUTHIDENTITYPtr pAuthInfo,
[in] EOLE_AUTHENTICATION_CAPABILITIES Capabilities);
HRESULT CopyProxy(
[in] IUnknown *pProxy,
[out,retval] stdole.IUnknown **ppCopy);
};
[
uuid(0000013E-0000-0000-C000-000000000046),
odl
]
interface IServerSecurity : IUnknown
{
HRESULT QueryBlanket(
[in, defaultvalue(0)] AUTHNPtr pAuthnSvc,
[in, defaultvalue(0)] AUTHZPtr pAuthzSvc,
[in, defaultvalue(0)] LPOLESTRPtr pServerPrincName,
[in, defaultvalue(0)] AUTHN_LEVELPtr pAuthnLevel,
[in, defaultvalue(0)] IMP_LEVELPtr pImpLevel,
[in, defaultvalue(0)] PVOIDPtr pPrivs,
[in, defaultvalue(0)] EOLE_AUTHENTICATION_CAPABILITIESPtr pCapabilites);
HRESULT ImpersonateClient();
HRESULT RevertToSelf();
BOOL IsImpersonating();
};
[dllname("ole32.dll")]
module Ole32
{
[entry("CoGetClassObject")] HRESULT CoGetClassObject([in] CLSID* rclsid, [in] CLSCTX dwClsContext, [in] COSERVERINFOPtr pServerInfo, [in] IID* riid, [out, retval] IUnknown** ppv);
[entry("CoRegisterClassObject")] HRESULT CoRegisterClassObject([in] CLSID* rclsid, [in] IUnknown* pUnk, [in] CLSCTX dwClsContext, [in] REGCLS flags, [out,retval] DWORD* pdwRegister);
[entry("CoRevokeClassObject")] HRESULT CoRevokeClassObject([in] DWORD dwRegister);
[entry("CoSuspendClassObjects")] HRESULT CoSuspendClassObjects();
[entry("CoResumeClassObjects")] HRESULT CoResumeClassObjects();
[entry("CoFreeUnusedLibraries")] void CoFreeUnusedLibraries();
[entry("CoGetCallContext")] HRESULT CoGetCallContext([in] IID* riid, [out,retval] stdole.IUnknown** ppInterface );
[entry("CoQueryProxyBlanket")] HRESULT CoQueryProxyBlanket(
[in] IUnknown* pProxy,
[in, defaultvalue(0)] AUTHNPtr pAuthnSvc,
[in, defaultvalue(0)] AUTHZPtr pAuthzSvc,
[in, defaultvalue(0)] LPOLESTRPtr pServerPrincName,
[in, defaultvalue(0)] AUTHN_LEVELPtr pAuthnLevel,
[in, defaultvalue(0)] IMP_LEVELPtr pImpLevel,
[in, defaultvalue(0)] COAUTHIDENTITYPtrPtr pAuthInfo,
[in, defaultvalue(0)] EOLE_AUTHENTICATION_CAPABILITIESPtr pCapabilites);
[entry("CoSetProxyBlanket")] HRESULT CoSetProxyBlanket(
[in] IUnknown *pProxy,
[in] AUTHN AuthnSvc,
[in] AUTHZ AuthzSvc,
[in] LPOLESTR pServerPrincName,
[in] AUTHN_LEVEL AuthnLevel,
[in] IMP_LEVEL ImpLevel,
[in] COAUTHIDENTITYPtr pAuthInfo,
[in] EOLE_AUTHENTICATION_CAPABILITIES Capabilities);
[entry("CoCopyProxy")] HRESULT CoCopyProxy([in] IUnknown* pProxy, [out, retval] stdole.IUnknown** ppCopy);
[entry("CoQueryClientBlanket")] HRESULT CoQueryClientBlanket(
[in, defaultvalue(0)] AUTHNPtr pAuthnSvc,
[in, defaultvalue(0)] AUTHZPtr pAuthzSvc,
[in, defaultvalue(0)] LPOLESTRPtr pServerPrincName,
[in, defaultvalue(0)] AUTHN_LEVELPtr pAuthnLevel,
[in, defaultvalue(0)] IMP_LEVELPtr pImpLevel,
[in, defaultvalue(0)] PVOIDPtr pPrivs,
[in, defaultvalue(0)] EOLE_AUTHENTICATION_CAPABILITIESPtr pCapabilites);
[entry("CoImpersonateClient")] HRESULT CoImpersonateClient();
[entry("CoRevertToSelf")] HRESULT CoRevertToSelf();
[entry("CoCreateInstance")] HRESULT CoCreateInstance([in] CLSID* rclsid, [in] IUnknown* pUnkOuter, [in] CLSCTX dwClsContext, [in] IID* riid, [out,retval] IUnknown** ppvObj);
[entry("CoCreateInstanceEx")] HRESULT CoCreateInstanceEx([in] CLSID* rclsid, [in] IUnknown* pUnkOuter, [in] CLSCTX dwClsContext, [in] COSERVERINFOPtr pServerInfo, [in] DWORD dwMultiQICount, [in] MULTI_QIPtr pResults);
}
[
uuid(00000001-0000-0000-C000-000000000046),
odl
]
interface IClassFactory : IUnknown
{
HRESULT CreateInstance([in] IUnknown* pUnkOuter, [in] IID* riid, [out,retval] IUnknown** pOut);
HRESULT LockServer([in] BOOL fLock);
}
[
uuid(B196B28F-BAB4-101A-B69C-00AA00341D07),
odl
]
interface IClassFactory2 : IUnknown
{
HRESULT CreateInstance([in] IUnknown* pUnkOuter, [in] IID* riid, [out,retval] IUnknown** ppvObj);
HRESULT LockServer([in] BOOL fLock);
HRESULT GetLicInfo([out,retval] LICINFO* pLicInfo);
HRESULT RequestLicKey([in, defaultvalue(0)] DWORD dwReserved, [out,retval] BSTR* pBstrKey);
HRESULT CreateInstanceLic([in] IUnknown *pUnkOuter, [in] IUnknown *pUnkReserved, [in] IID* riid, [in] BSTR bstrKey, [out, retval] IUnknown** ppvObj);
}
[
odl,
uuid(B01A92F1-9F87-11D3-BBF2-D41203C10000),
helpstring("Function ProtoType for DllGetClassObject")
]
interface ICallDllGetClassObject : IUnknown
{
HRESULT Call([in] CLSID* rclsid, [in] IID* riid, [out,retval] IUnknown** ppvObj);
}
typedef [public] ICallVoidReturnLong ICallDllCanUnloadNow;
typedef [public] ICallVoidReturnHRESULT ICallDllRegisterServer;
typedef [public] ICallVoidReturnLong ICallDllUnregisterServer;
// Enough declarations to call IPersistStreamInit and
// IPersistPropertyBag in a MULTI_QI scenario.
[
uuid(0000000C-0000-0000-C000-000000000046),
odl,
hidden
]
interface IStreamStub : IUnknown
{
}
[
uuid(0000010C-0000-0000-C000-000000000046),
odl,
hidden
]
interface IPersist : IUnknown
{
HRESULT GetClassID([out,retval] CLSID*retVal);
}
[
uuid(7FD52380-4E07-101B-AE2D-08002B2EC713),
odl
]
interface IPersistStreamInit : IPersist
{
long IsDirty();
HRESULT Load([in] IStreamStub *pStream);
HRESULT Save([in] IStreamStub *pStream, [in] BOOL fClearDirty);
HRESULT GetSizeMax([out, retval] ULARGE_INTEGER *pcbSize);
HRESULT InitNew();
}
[
uuid(00000109-0000-0000-C000-000000000046),
odl,
hidden
]
interface IPersistStream : IPersist
{
long IsDirty();
HRESULT Load([in] IStreamStub *pStream);
HRESULT Save([in] IStreamStub *pStream, [in] BOOL fClearDirty);
HRESULT GetSizeMax([out, retval] ULARGE_INTEGER *pcbSize);
}
[
uuid(3127CA40-446E-11CE-8135-00AA004BB851),
odl,
hidden
]
interface IErrorLog : IUnknown
{
HRESULT AddError([in] LPWSTR pszPropName, [in] VBEXCEPINFO *pExcepInfo);
}
[
uuid(55272A00-42CB-11CE-8135-00AA004BB851),
odl,
hidden
]
interface IPropertyBag : IUnknown
{
HRESULT Read([in] LPWSTR pszPropName, [in,out] VARIANT *pVar, [in,out] IErrorLog *pErrorLog);
HRESULT Write([in] LPWSTR pszPropName, [in] VARIANT *pVar);
}
[
uuid(37D84F60-42CB-11CE-8135-00AA004BB851),
odl
]
interface IPersistPropertyBag : IPersist
{
long InitNew();
long Load([in] IPropertyBag *pPropBag, [in] IErrorLog *pErrorLog);
long Save([in] IPropertyBag *pPropBag, [in] BOOL fClearDirty, [in] BOOL fSaveAllProperties);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -