⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objcreate.odl

📁 VB圣经
💻 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 + -