📄 dispatch.h
字号:
}
#ifdef NONAMELESSUNION
u
#endif
;
} VARDESC, FAR* LPVARDESC;
typedef enum tagTYPEFLAGS {
TYPEFLAG_FAPPOBJECT = 1,
TYPEFLAG_FCANCREATE = 2
} TYPEFLAGS;
typedef enum tagFUNCFLAGS {
FUNCFLAG_FRESTRICTED = 1
} FUNCFLAGS;
typedef enum tagVARFLAGS {
VARFLAG_FREADONLY = 1
} VARFLAGS;
#undef INTERFACE
#define INTERFACE ITypeInfo
DECLARE_INTERFACE_(ITypeInfo, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* ITypeInfo methods */
STDMETHOD(GetTypeAttr)(THIS_ TYPEATTR FAR* FAR* pptypeattr) PURE;
STDMETHOD(GetTypeComp)(THIS_ ITypeComp FAR* FAR* pptcomp) PURE;
STDMETHOD(GetFuncDesc)(THIS_
UINT index, FUNCDESC FAR* FAR* ppfuncdesc) PURE;
STDMETHOD(GetVarDesc)(THIS_
UINT index, VARDESC FAR* FAR* ppvardesc) PURE;
STDMETHOD(GetNames)(THIS_
MEMBERID memid,
BSTR FAR* rgbstrNames,
UINT cMaxNames,
UINT FAR* pcNames) PURE;
STDMETHOD(GetRefTypeOfImplType)(THIS_
UINT index, HREFTYPE FAR* phreftype) PURE;
STDMETHOD(GetIDsOfNames)(THIS_
char FAR* FAR* rgszNames, UINT cNames, MEMBERID FAR* rgmemid) PURE;
STDMETHOD(Invoke)(THIS_
void FAR* pvInstance,
MEMBERID memid,
WORD wFlags,
DISPPARAMS FAR *pdispparams,
VARIANT FAR *pvarResult,
EXCEPINFO FAR *pexcepinfo,
UINT FAR *puArgErr) PURE;
STDMETHOD(GetDocumentation)(THIS_
MEMBERID memid,
BSTR FAR* pbstrName,
BSTR FAR* pbstrDocString,
DWORD FAR* pdwHelpContext,
BSTR FAR* pbstrHelpFile) PURE;
STDMETHOD(GetDllEntry)(THIS_
MEMBERID memid,
BSTR FAR* pbstrDllName,
BSTR FAR* pbstrName,
WORD FAR* pwOrdinal) PURE;
STDMETHOD(GetRefTypeInfo)(THIS_
HREFTYPE hreftype, ITypeInfo FAR* FAR* pptinfo) PURE;
STDMETHOD(AddressOfMember)(THIS_
MEMBERID memid, INVOKEKIND invkind, void FAR* FAR* ppv) PURE;
STDMETHOD(CreateInstance)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD(GetMops)(THIS_ MEMBERID memid, BSTR FAR* pbstrMops) PURE;
STDMETHOD(GetContainingTypeLib)(THIS_
ITypeLib FAR* FAR* pptlib, UINT FAR* pindex) PURE;
STDMETHOD_(void, ReleaseTypeAttr)(THIS_ TYPEATTR FAR* ptypeattr) PURE;
STDMETHOD_(void, ReleaseFuncDesc)(THIS_ FUNCDESC FAR* pfuncdesc) PURE;
STDMETHOD_(void, ReleaseVarDesc)(THIS_ VARDESC FAR* pvardesc) PURE;
};
typedef ITypeInfo FAR* LPTYPEINFO;
/*---------------------------------------------------------------------*/
/* ITypeComp */
/*---------------------------------------------------------------------*/
typedef enum tagDESCKIND {
DESCKIND_NONE = 0,
DESCKIND_FUNCDESC,
DESCKIND_VARDESC,
DESCKIND_TYPECOMP,
DESCKIND_MAX /* end of enum marker */
} DESCKIND;
typedef union tagBINDPTR {
FUNCDESC FAR* lpfuncdesc;
VARDESC FAR* lpvardesc;
ITypeComp FAR* lptcomp;
} BINDPTR, FAR* LPBINDPTR;
#undef INTERFACE
#define INTERFACE ITypeComp
DECLARE_INTERFACE_(ITypeComp, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* ITypeComp methods */
STDMETHOD(Bind)(THIS_
LPSTR szName,
WORD wHashVal,
WORD wflags,
ITypeInfo FAR* FAR* pptinfo,
DESCKIND FAR* pdesckind,
BINDPTR FAR* pbindptr) PURE;
STDMETHOD(BindType)(THIS_
LPSTR szName,
WORD wHashVal,
ITypeInfo FAR* FAR* pptinfo,
ITypeComp FAR* FAR* pptcomp) PURE;
};
typedef ITypeComp FAR* LPTYPECOMP;
/*---------------------------------------------------------------------*/
/* ICreateTypeLib */
/*---------------------------------------------------------------------*/
#undef INTERFACE
#define INTERFACE ICreateTypeLib
DECLARE_INTERFACE_(ICreateTypeLib, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* ICreateTypeLib methods */
STDMETHOD(CreateTypeInfo)(THIS_
LPSTR szName,
TYPEKIND tkind,
ICreateTypeInfo FAR* FAR* lplpictinfo) PURE;
STDMETHOD(SetName)(THIS_ LPSTR szName) PURE;
STDMETHOD(SetVersion)(THIS_
WORD wMajorVerNum, WORD wMinorVerNum) PURE;
STDMETHOD(SetGuid) (THIS_ REFGUID guid) PURE;
STDMETHOD(SetDocString)(THIS_ LPSTR szDoc) PURE;
STDMETHOD(SetHelpFileName)(THIS_ LPSTR szHelpFileName) PURE;
STDMETHOD(SetHelpContext)(THIS_ DWORD dwHelpContext) PURE;
STDMETHOD(SetLcid)(THIS_ LCID lcid) PURE;
STDMETHOD(SaveAllChanges)(THIS_ IStorage FAR* pstg) PURE;
};
typedef ICreateTypeLib FAR* LPCREATETYPELIB;
/*---------------------------------------------------------------------*/
/* ICreateTypeInfo */
/*---------------------------------------------------------------------*/
#undef INTERFACE
#define INTERFACE ICreateTypeInfo
DECLARE_INTERFACE_(ICreateTypeInfo, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* ICreateTypeInfo methods */
STDMETHOD(SetGuid)(THIS_ REFGUID guid) PURE;
STDMETHOD(SetTypeFlags)(THIS_ UINT uTypeFlags) PURE;
STDMETHOD(SetDocString)(THIS_ LPSTR pstrDoc) PURE;
STDMETHOD(SetHelpContext)(THIS_ DWORD dwHelpContext) PURE;
STDMETHOD(SetVersion)(THIS_
WORD wMajorVerNum, WORD wMinorVerNum) PURE;
STDMETHOD(AddRefTypeInfo)(THIS_
ITypeInfo FAR* ptinfo, HREFTYPE FAR* phreftype) PURE;
STDMETHOD(AddFuncDesc)(THIS_
UINT index, FUNCDESC FAR* pfuncdesc) PURE;
STDMETHOD(AddImplType)(THIS_
UINT index, HREFTYPE hreftype) PURE;
STDMETHOD(AddVarDesc)(THIS_
UINT index, VARDESC FAR* pvardesc) PURE;
STDMETHOD(SetFuncAndParamNames)(THIS_
UINT index, LPSTR FAR* rgszNames, UINT cNames) PURE;
STDMETHOD(SetVarName)(THIS_
UINT index, LPSTR szName) PURE;
STDMETHOD(SetTypeDescAlias)(THIS_
TYPEDESC FAR* ptdescAlias) PURE;
STDMETHOD(DefineFuncAsDllEntry)(THIS_
UINT index, LPSTR szDllName, LPSTR szProcName) PURE;
STDMETHOD(SetFuncDocString)(THIS_
UINT index, LPSTR szDocString) PURE;
STDMETHOD(SetVarDocString)(THIS_
UINT index, LPSTR szDocString) PURE;
STDMETHOD(SetFuncHelpContext)(THIS_
UINT index, DWORD dwHelpContext) PURE;
STDMETHOD(SetVarHelpContext)(THIS_
UINT index, DWORD dwHelpContext) PURE;
STDMETHOD(SetMops)(THIS_
UINT index, BSTR bstrMops) PURE;
STDMETHOD(SetTypeIdldesc)(THIS_
IDLDESC FAR* pidldesc) PURE;
STDMETHOD(LayOut)(THIS) PURE;
};
typedef ICreateTypeInfo FAR* LPCREATETYPEINFO;
/*---------------------------------------------------------------------*/
/* TypeInfo APIs */
/*---------------------------------------------------------------------*/
/* compute a 16bit hash value for the given name
*/
STDAPI_(WORD)
WHashValOfName(LPSTR szName);
/* load the typelib from the file with the given filename
*/
STDAPI
LoadTypeLib(LPSTR szFile, ITypeLib FAR* FAR* pptlib);
/* load registered typelib
*/
STDAPI
LoadRegTypeLib(
REFGUID rguid,
WORD wVerMajor,
WORD wVerMinor,
LCID lcid,
ITypeLib FAR* FAR* pptlib);
/* add typelib to registry
*/
STDAPI
RegisterTypeLib(ITypeLib FAR* ptlib, LPSTR szFullPath, LPSTR szHelpDir);
/* remove typelib from registry
*/
STDAPI
DeregisterTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor, LCID lcid);
typedef enum tagSYSKIND {
SYS_WIN16,
SYS_WIN32,
SYS_MAC
} SYSKIND;
STDAPI
CreateTypeLib(SYSKIND syskind, ICreateTypeLib FAR* FAR* ppctlib);
/*---------------------------------------------------------------------*/
/* IEnumVARIANT */
/*---------------------------------------------------------------------*/
#undef INTERFACE
#define INTERFACE IEnumVARIANT
DECLARE_INTERFACE_(IEnumVARIANT, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IEnumVARIANT methods */
STDMETHOD(Next)(
THIS_ ULONG celt, VARIANT FAR* rgvar, ULONG FAR* pceltFetched) PURE;
STDMETHOD(Skip)(THIS_ ULONG celt) PURE;
STDMETHOD(Reset)(THIS) PURE;
STDMETHOD(Clone)(THIS_ IEnumVARIANT FAR* FAR* ppenum) PURE;
};
typedef IEnumVARIANT FAR* LPENUMVARIANT;
/*---------------------------------------------------------------------*/
/* IDispatch */
/*---------------------------------------------------------------------*/
#undef INTERFACE
#define INTERFACE IDispatch
DECLARE_INTERFACE_(IDispatch, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IDispatch methods */
STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
STDMETHOD(GetTypeInfo)(
THIS_
UINT itinfo,
LCID lcid,
ITypeInfo FAR* FAR* pptinfo) PURE;
STDMETHOD(GetIDsOfNames)(
THIS_
REFIID riid,
char FAR* FAR* rgszNames,
UINT cNames,
LCID lcid,
DISPID FAR* rgdispid) PURE;
STDMETHOD(Invoke)(
THIS_
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS FAR* pdispparams,
VARIANT FAR* pvarResult,
EXCEPINFO FAR* pexcepinfo,
UINT FAR* puArgErr) PURE;
};
typedef IDispatch FAR* LPDISPATCH;
/* DISPID reserved for the standard "value" property */
#define DISPID_VALUE 0
/* DISPID reserved to indicate an "unknown" name */
#define DISPID_UNKNOWN -1
/* The following DISPID is reserved to indicate the param
* that is the right-hand-side (or "put" value) of a PropertyPut
*/
#define DISPID_PROPERTYPUT -3
/* DISPID reserved for the standard "NewEnum" method */
#define DISPID_NEWENUM -4
/* DISPID reserved for the standard "Evaluate" method */
#define DISPID_EVALUATE -5
/*---------------------------------------------------------------------*/
/* IDispatch implementation support */
/*---------------------------------------------------------------------*/
typedef struct FARSTRUCT tagPARAMDATA {
char FAR* szName; /* parameter name */
VARTYPE vt; /* parameter type */
} PARAMDATA, FAR* LPPARAMDATA;
typedef struct FARSTRUCT tagMETHODDATA {
char FAR* szName; /* method name */
PARAMDATA FAR* ppdata; /* pointer to an array of PARAMDATAs */
DISPID dispid; /* method ID */
UINT iMeth; /* method index */
CALLCONV cc; /* calling convention */
UINT cArgs; /* count of arguments */
WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
VARTYPE vtReturn;
} METHODDATA, FAR* LPMETHODDATA;
typedef struct FARSTRUCT tagINTERFACEDATA {
METHODDATA FAR* pmethdata; /* pointer to an array of METHODDATAs */
UINT cMembers; /* count of members */
} INTERFACEDATA, FAR* LPINTERFACEDATA;
/* Locate the parameter indicated by the given position, and
* return it coerced to the given target VARTYPE (vtTarg).
*/
STDAPI
DispGetParam(
DISPPARAMS FAR* pdispparams,
UINT position,
VARTYPE vtTarg,
VARIANT FAR* pvarResult,
UINT FAR* puArgErr);
/* Automatic TypeInfo driven implementation of IDispatch::GetIDsOfNames()
*/
STDAPI
DispGetIDsOfNames(
ITypeInfo FAR* ptinfo,
char FAR* FAR* rgszNames,
UINT cNames,
DISPID FAR* rgdispid);
/* Automatic TypeInfo driven implementation of IDispatch::Invoke()
*/
STDAPI
DispInvoke(
void FAR* _this,
ITypeInfo FAR* ptinfo,
DISPID dispidMember,
WORD wFlags,
DISPPARAMS FAR* pparams,
VARIANT FAR* pvarResult,
EXCEPINFO FAR* pexcepinfo,
UINT FAR* puArgErr);
/* Construct a TypeInfo from an interface data description
*/
STDAPI
CreateDispTypeInfo(
INTERFACEDATA FAR* pidata,
LCID lcid,
ITypeInfo FAR* FAR* pptinfo);
/* Create an instance of the standard TypeInfo driven IDispatch
* implementation.
*/
STDAPI
CreateStdDispatch(
IUnknown FAR* punkOuter,
void FAR* pvThis,
ITypeInfo FAR* ptinfo,
IUnknown FAR* FAR* ppunkStdDisp);
/*---------------------------------------------------------------------*/
/* Active Object Registration API */
/*---------------------------------------------------------------------*/
STDAPI
RegisterActiveObject(
IUnknown FAR* punk,
REFCLSID rclsid,
void FAR* pvReserved,
DWORD FAR* pdwRegister);
STDAPI
RevokeActiveObject(
DWORD dwRegister,
void FAR* pvReserved);
STDAPI
GetActiveObject(
REFCLSID rclsid,
void FAR* pvReserved,
IUnknown FAR* FAR* ppunk);
#endif /* _DISPATCH_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -