blob: c705060bd4587966c70cc4710ddca1eedf7640aa [file] [log] [blame]
// Copyright © 2015, Connor Hilarides
// Licensed under the MIT License <LICENSE.md>
//! Mappings for the contents of OAIdl.h
pub type wireBRECORD = *mut _wireBRECORD;
pub type wireVARIANT = *mut _wireVARIANT;
STRUCT!{struct SAFEARRAYBOUND {
cElements: ::ULONG,
lLbound: ::LONG,
}}
STRUCT!{struct SAFEARR_BSTR {
Size: ::ULONG,
aBstr: *mut ::wireBSTR,
}}
STRUCT!{struct SAFEARR_UNKNOWN {
Size: ::ULONG,
apUnknown: *mut *mut ::IUnknown,
}}
STRUCT!{struct SAFEARR_DISPATCH {
Size: ::ULONG,
apDispatch: *mut *mut IDispatch,
}}
STRUCT!{struct SAFEARR_VARIANT {
Size: ::ULONG,
aVariant: *mut wireVARIANT,
}}
STRUCT!{struct SAFEARR_BRECORD {
Size: ::ULONG,
aRecord: *mut wireBRECORD,
}}
STRUCT!{struct SAFEARR_HAVEIID {
Size: ::ULONG,
apUnknown: *mut *mut ::IUnknown,
iid: ::IID,
}}
ENUM!{enum SF_TYPE {
SF_ERROR = ::VT_ERROR.0,
SF_I1 = ::VT_I1.0,
SF_I2 = ::VT_I2.0,
SF_I4 = ::VT_I4.0,
SF_I8 = ::VT_I8.0,
SF_BSTR = ::VT_BSTR.0,
SF_UNKNOWN = ::VT_UNKNOWN.0,
SF_DISPATCH = ::VT_DISPATCH.0,
SF_VARIANT = ::VT_VARIANT.0,
SF_RECORD = ::VT_RECORD.0,
SF_HAVEIID = ::VT_UNKNOWN.0 | ::VT_RESERVED.0,
}}
STRUCT!{struct SAFEARRAYUNION {
sfType: ::ULONG,
u: __MIDL_IOleAutomationTypes_0001,
}}
#[cfg(target_arch = "x86_64")]
STRUCT!{struct __MIDL_IOleAutomationTypes_0001 {
data0: u32,
data1: [u32; 6],
}}
#[cfg(target_arch = "x86")]
STRUCT!{struct __MIDL_IOleAutomationTypes_0001 {
data0: u32,
data1: [u32; 5],
}}
UNION!(__MIDL_IOleAutomationTypes_0001, data0, BstrStr, BstrStr_mut, SAFEARR_BSTR);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, UnknownStr, UnknownStr_mut, SAFEARR_UNKNOWN);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, DispatchStr, DispatchStr_mut, SAFEARR_DISPATCH);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, VariantStr, VariantStr_mut, SAFEARR_VARIANT);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, RecordStr, RecordStr_mut, SAFEARR_BRECORD);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, HaveIidStr, HaveIidStr_mut, SAFEARR_HAVEIID);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, ByteStr, ByteStr_mut, ::BYTE_SIZEDARR);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, WordStr, WordStr_mut, ::WORD_SIZEDARR);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, LongStr, LongStr_mut, ::DWORD_SIZEDARR);
UNION!(__MIDL_IOleAutomationTypes_0001, data0, HyperStr, HyperStr_mut, ::HYPER_SIZEDARR);
STRUCT!{struct _wireSAFEARRAY {
cDims: ::USHORT,
fFeatures: ::USHORT,
cbElements: ::ULONG,
cLocks: ::ULONG,
uArrayStructs: SAFEARRAYUNION,
rgsaBound: [SAFEARRAYBOUND; 1],
}}
pub type wireSAFEARRAY = *mut _wireSAFEARRAY;
pub type wirePSAFEARRAY = *mut wireSAFEARRAY;
STRUCT!{struct SAFEARRAY {
cDims: ::USHORT,
fFeatures: ::USHORT,
cbElements: ::ULONG,
cLocks: ::ULONG,
pvData: ::PVOID,
rgsabound: [SAFEARRAYBOUND; 1],
}}
pub type LPSAFEARRAY = *mut SAFEARRAY;
pub const FADF_AUTO: ::DWORD = 0x1;
pub const FADF_STATIC: ::DWORD = 0x2;
pub const FADF_EMBEDDED: ::DWORD = 0x4;
pub const FADF_FIXEDSIZE: ::DWORD = 0x10;
pub const FADF_RECORD: ::DWORD = 0x20;
pub const FADF_HAVEIID: ::DWORD = 0x40;
pub const FADF_HAVEVARTYPE: ::DWORD = 0x80;
pub const FADF_BSTR: ::DWORD = 0x100;
pub const FADF_UNKNOWN: ::DWORD = 0x200;
pub const FADF_DISPATCH: ::DWORD = 0x400;
pub const FADF_VARIANT: ::DWORD = 0x800;
pub const FADF_RESERVED: ::DWORD = 0xf008;
#[cfg(target_arch = "x86_64")]
STRUCT!{struct VARIANT {
data0: u64,
data1: u64,
data2: u64,
}}
#[cfg(target_arch = "x86")]
STRUCT!{struct VARIANT {
data0: u64,
data1: u32,
data2: u32,
}}
UNION!(VARIANT, data0, vt, vt_mut, ::VARTYPE);
UNION!(VARIANT, data1, llVal, llVal_mut, ::LONGLONG);
UNION!(VARIANT, data1, lVal, lVal_mut, ::LONG);
UNION!(VARIANT, data1, bVal, bVal_mut, ::BYTE);
UNION!(VARIANT, data1, iVal, iVal_mut, ::SHORT);
UNION!(VARIANT, data1, fltVal, fltVal_mut, ::FLOAT);
UNION!(VARIANT, data1, dblVal, dblVal_mut, ::DOUBLE);
UNION!(VARIANT, data1, boolVal, boolVal_mut, ::VARIANT_BOOL);
UNION!(VARIANT, data1, scode, scode_mut, ::SCODE);
UNION!(VARIANT, data1, cyVal, cyVal_mut, ::CY);
UNION!(VARIANT, data1, date, date_mut, ::DATE);
UNION!(VARIANT, data1, bstrVal, bstrVal_mut, ::BSTR);
UNION!(VARIANT, data1, punkVal, punkVal_mut, *mut ::IUnknown);
UNION!(VARIANT, data1, pdispVal, pdispVal_mut, *mut IDispatch);
UNION!(VARIANT, data1, parray, parray_mut, *mut SAFEARRAY);
UNION!(VARIANT, data1, pllVal, pllVal_mut, *mut ::LONGLONG);
UNION!(VARIANT, data1, plVal, plVal_mut, *mut ::LONG);
UNION!(VARIANT, data1, pbVal, pbVal_mut, *mut ::BYTE);
UNION!(VARIANT, data1, piVal, piVal_mut, *mut ::SHORT);
UNION!(VARIANT, data1, pfltVal, pfltVal_mut, *mut ::FLOAT);
UNION!(VARIANT, data1, pdblVal, pdblVal_mut, *mut ::DOUBLE);
UNION!(VARIANT, data1, pboolVal, pboolVal_mut, *mut ::VARIANT_BOOL);
UNION!(VARIANT, data1, pscode, pscode_mut, *mut ::SCODE);
UNION!(VARIANT, data1, pcyVal, pcyVal_mut, *mut ::CY);
UNION!(VARIANT, data1, pdate, pdate_mut, *mut ::DATE);
UNION!(VARIANT, data1, pbstrVal, pbstrVal_mut, *mut ::BSTR);
UNION!(VARIANT, data1, ppunkVal, ppunkVal_mut, *mut *mut ::IUnknown);
UNION!(VARIANT, data1, ppdispVal, ppdispVal_mut, *mut *mut IDispatch);
UNION!(VARIANT, data1, pparray, pparray_mut, *mut *mut SAFEARRAY);
UNION!(VARIANT, data1, pvarVal, pvarVal_mut, *mut VARIANT);
UNION!(VARIANT, data1, byref, byref_mut, ::PVOID);
UNION!(VARIANT, data1, cVal, cVal_mut, ::CHAR);
UNION!(VARIANT, data1, uiVal, uiVal_mut, ::USHORT);
UNION!(VARIANT, data1, ulVal, ulVal_mut, ::ULONG);
UNION!(VARIANT, data1, ullVal, ullVal_mut, ::ULONGLONG);
UNION!(VARIANT, data1, intVal, intVal_mut, ::INT);
UNION!(VARIANT, data1, uintVal, uintVal_mut, ::UINT);
UNION!(VARIANT, data1, pdecVal, pdecVal_mut, *mut ::DECIMAL);
UNION!(VARIANT, data1, pcVal, pcVal_mut, *mut ::CHAR);
UNION!(VARIANT, data1, puiVal, puiVal_mut, *mut ::USHORT);
UNION!(VARIANT, data1, pulVal, pulVal_mut, *mut ::ULONG);
UNION!(VARIANT, data1, pullVal, pullVal_mut, *mut ::ULONGLONG);
UNION!(VARIANT, data1, pintVal, pintVal_mut, *mut ::INT);
UNION!(VARIANT, data1, puintVal, puintVal_mut, *mut ::UINT);
UNION!(VARIANT, data1, pvRecord, pvRecord_mut, ::PVOID);
UNION!(VARIANT, data2, pRecInfo, pRecInfo_mut, *mut IRecordInfo);
UNION!(VARIANT, data0, decVal, decVal_mut, ::DECIMAL);
pub type LPVARIANT = *mut VARIANT;
pub type VARIANTARG = VARIANT;
pub type LPVARIANTARG = *mut VARIANT;
pub type REFVARIANT = *const VARIANT;
STRUCT!{struct _wireBRECORD {
fFlags: ::ULONG,
clSize: ::ULONG,
pRecInfo: *mut IRecordInfo,
pRecord: *mut ::BYTE,
}}
STRUCT!{struct _wireVARIANT {
clSize: ::DWORD,
rpcReserved: ::DWORD,
vt: ::USHORT,
wReserved1: ::USHORT,
wReserved2: ::USHORT,
wReserved3: ::USHORT,
data0: u64,
data1: u64,
}}
UNION!(_wireVARIANT, data0, llVal, llVal_mut, ::LONGLONG);
UNION!(_wireVARIANT, data0, lVal, lVal_mut, ::LONG);
UNION!(_wireVARIANT, data0, bVal, bVal_mut, ::BYTE);
UNION!(_wireVARIANT, data0, iVal, iVal_mut, ::SHORT);
UNION!(_wireVARIANT, data0, fltVal, fltVal_mut, ::FLOAT);
UNION!(_wireVARIANT, data0, dblVal, dblVal_mut, ::DOUBLE);
UNION!(_wireVARIANT, data0, boolVal, boolVal_mut, ::VARIANT_BOOL);
UNION!(_wireVARIANT, data0, scode, scode_mut, ::SCODE);
UNION!(_wireVARIANT, data0, cyVal, cyVal_mut, ::CY);
UNION!(_wireVARIANT, data0, date, date_mut, ::DATE);
UNION!(_wireVARIANT, data0, bstrVal, bstrVal_mut, ::wireBSTR);
UNION!(_wireVARIANT, data0, punkVal, punkVal_mut, *mut ::IUnknown);
UNION!(_wireVARIANT, data0, pdispVal, pdispVal_mut, *mut IDispatch);
UNION!(_wireVARIANT, data0, parray, parray_mut, wirePSAFEARRAY);
UNION!(_wireVARIANT, data0, brecVal, brecVal_mut, wireBRECORD);
UNION!(_wireVARIANT, data0, pllVal, pllVal_mut, *mut ::LONGLONG);
UNION!(_wireVARIANT, data0, plVal, plVal_mut, *mut ::LONG);
UNION!(_wireVARIANT, data0, pbVal, pbVal_mut, *mut ::BYTE);
UNION!(_wireVARIANT, data0, piVal, piVal_mut, *mut ::SHORT);
UNION!(_wireVARIANT, data0, pfltVal, pfltVal_mut, *mut ::FLOAT);
UNION!(_wireVARIANT, data0, pdblVal, pdblVal_mut, *mut ::DOUBLE);
UNION!(_wireVARIANT, data0, pboolVal, pboolVal_mut, *mut ::VARIANT_BOOL);
UNION!(_wireVARIANT, data0, pscode, pscode_mut, *mut ::SCODE);
UNION!(_wireVARIANT, data0, pcyVal, pcyVal_mut, *mut ::CY);
UNION!(_wireVARIANT, data0, pdate, pdate_mut, *mut ::DATE);
UNION!(_wireVARIANT, data0, pbstrVal, pbstrVal_mut, *mut ::wireBSTR);
UNION!(_wireVARIANT, data0, ppunkVal, ppunkVal_mut, *mut *mut ::IUnknown);
UNION!(_wireVARIANT, data0, ppdispVal, ppdispVal_mut, *mut *mut IDispatch);
UNION!(_wireVARIANT, data0, pparray, pparray_mut, *mut wirePSAFEARRAY);
UNION!(_wireVARIANT, data0, pvarVal, pvarVal_mut, *mut wireVARIANT);
UNION!(_wireVARIANT, data0, cVal, cVal_mut, ::CHAR);
UNION!(_wireVARIANT, data0, uiVal, uiVal_mut, ::USHORT);
UNION!(_wireVARIANT, data0, ulVal, ulVal_mut, ::ULONG);
UNION!(_wireVARIANT, data0, ullVal, ullVal_mut, ::ULONGLONG);
UNION!(_wireVARIANT, data0, intVal, intVal_mut, ::INT);
UNION!(_wireVARIANT, data0, uintVal, uintVal_mut, ::UINT);
UNION!(_wireVARIANT, data0, decVal, decVal_mut, ::DECIMAL);
UNION!(_wireVARIANT, data0, pcVal, pcVal_mut, *mut ::CHAR);
UNION!(_wireVARIANT, data0, puiVal, puiVal_mut, *mut ::USHORT);
UNION!(_wireVARIANT, data0, pulVal, pulVal_mut, *mut ::ULONG);
UNION!(_wireVARIANT, data0, pullVal, pullVal_mut, *mut ::ULONGLONG);
UNION!(_wireVARIANT, data0, pintVal, pintVal_mut, *mut ::INT);
UNION!(_wireVARIANT, data0, puintVal, puintVal_mut, *mut ::UINT);
UNION!(_wireVARIANT, data0, pdecVal, pdecVal_mut, *mut ::DECIMAL);
pub type DISPID = ::LONG;
pub type MEMBERID = DISPID;
pub type HREFTYPE = ::DWORD;
ENUM!{enum TYPEKIND {
TKIND_ENUM = 0,
TKIND_RECORD,
TKIND_MODULE,
TKIND_INTERFACE,
TKIND_DISPATCH,
TKIND_COCLASS,
TKIND_ALIAS,
TKIND_UNION,
TKIND_MAX,
}}
#[cfg(target_arch = "x86_64")]
STRUCT!{struct TYPEDESC {
data: u64,
vt: ::VARTYPE,
}}
#[cfg(target_arch = "x86")]
STRUCT!{struct TYPEDESC {
data: u32,
vt: ::VARTYPE,
}}
UNION!(TYPEDESC, data, lptdesc, lptdesc_mut, *mut TYPEDESC);
UNION!(TYPEDESC, data, lpadesc, lpadesc_mut, *mut ARRAYDESC);
UNION!(TYPEDESC, data, hreftype, hreftype_mut, HREFTYPE);
STRUCT!{struct ARRAYDESC {
tdescElem: TYPEDESC,
cDims: ::USHORT,
rgbounds: [SAFEARRAYBOUND; 1],
}}
STRUCT!{struct PARAMDESCEX {
cBytes: ::ULONG,
varDefaultValue: VARIANTARG,
}}
pub type LPPARAMDESCEX = *mut PARAMDESCEX;
STRUCT!{struct PARAMDESC {
pparamdescex: LPPARAMDESCEX,
wParamFlags: ::USHORT,
}}
pub type LPPARAMDESC = *mut PARAMDESC;
pub const PARAMFLAG_NONE: ::DWORD = 0;
pub const PARAMFLAG_FIN: ::DWORD = 0x1;
pub const PARAMFLAG_FOUT: ::DWORD = 0x2;
pub const PARAMFLAG_FLCID: ::DWORD = 0x4;
pub const PARAMFLAG_FRETVAL: ::DWORD = 0x8;
pub const PARAMFLAG_FOPT: ::DWORD = 0x10;
pub const PARAMFLAG_FHASDEFAULT: ::DWORD = 0x20;
pub const PARAMFLAG_FHASCUSTDATA: ::DWORD = 0x40;
STRUCT!{struct IDLDESC {
dwReserved: ::ULONG_PTR,
wIDLFlags: ::USHORT,
}}
pub type LPIDLDESC = *mut IDLDESC;
pub const IDLFLAG_NONE: ::DWORD = PARAMFLAG_NONE;
pub const IDLFLAG_FIN: ::DWORD = PARAMFLAG_FIN;
pub const IDLFLAG_FOUT: ::DWORD = PARAMFLAG_FOUT;
pub const IDLFLAG_FLCID: ::DWORD = PARAMFLAG_FLCID;
pub const IDLFLAG_FRETVAL: ::DWORD = PARAMFLAG_FRETVAL;
STRUCT!{struct ELEMDESC {
tdesc: TYPEDESC,
idldesc: IDLDESC,
}}
UNION!(ELEMDESC, idldesc, paramdesc, paramdesc_mut, PARAMDESC);
pub type LPELEMDESC = *mut ELEMDESC;
STRUCT!{struct TYPEATTR {
guid: ::GUID,
lcid: ::LCID,
dwReserved: ::DWORD,
memidConstructor: ::MEMBERID,
memidDestructor: ::MEMBERID,
lpstrSchema: ::LPOLESTR,
cbSizeInstance: ::ULONG,
typekind: ::TYPEKIND,
cFuncs: ::WORD,
cVars: ::WORD,
cImplTypes: ::WORD,
cbSizeVft: ::WORD,
cbAlignment: ::WORD,
wTypeFlags: ::WORD,
wMajorVerNum: ::WORD,
wMinorVerNum: ::WORD,
tdescAlias: ::TYPEDESC,
idldescType: ::IDLDESC,
}}
pub type LPTYPEATTR = *mut TYPEATTR;
STRUCT!{struct DISPPARAMS {
rgvarg: *mut VARIANTARG,
rgdispidNamedArgs: *mut DISPID,
cArgs: ::UINT,
cNamedArgs: ::UINT,
}}
STRUCT!{nodebug struct EXCEPINFO {
wCode: ::WORD,
wReserved: ::WORD,
bstrSource: ::BSTR,
bstrDescription: ::BSTR,
bstrHelpFile: ::BSTR,
dwHelpContext: ::DWORD,
pvReserved: ::PVOID,
pfnDeferredFillIn: Option<unsafe extern "system" fn(einfo: *mut EXCEPINFO) -> ::HRESULT>,
scode: ::SCODE,
}}
ENUM!{enum CALLCONV {
CC_FASTCALL = 0,
CC_CDECL = 1,
CC_MSCPASCAL,
CC_PASCAL,
CC_MACPASCAL,
CC_STDCALL,
CC_FPFASTCALL,
CC_SYSCALL,
CC_MPWCDECL,
CC_MPWPASCAL,
CC_MAX,
}}
ENUM!{enum FUNCKIND {
FUNC_VIRTUAL = 0,
FUNC_PUREVIRTUAL,
FUNC_NONVIRTUAL,
FUNC_STATIC,
FUNC_DISPATCH,
}}
FLAGS!{enum INVOKEKIND {
INVOKE_FUNC = 1,
INVOKE_PROPERTYGET = 2,
INVOKE_PROPERTYPUT = 4,
INVOKE_PROPERTYPUTREF = 8,
}}
STRUCT!{struct FUNCDESC {
memid: ::MEMBERID,
lprgscode: *mut ::SCODE,
lprgelemdescParam: *mut ::ELEMDESC,
funckind: ::FUNCKIND,
invkind: ::INVOKEKIND,
callconv: ::CALLCONV,
cParams: ::SHORT,
cParamsOpt: ::SHORT,
oVft: ::SHORT,
cScodes: ::SHORT,
elemdescFunc: ::ELEMDESC,
wFuncFlags: ::WORD,
}}
pub type LPFUNCDESC = *mut FUNCDESC;
ENUM!{enum VARKIND {
VAR_PERINSTANCE = 0,
VAR_STATIC,
VAR_CONST,
VAR_DISPATCH,
}}
pub const IMPLTYPEFLAG_FDEFAULT: ::DWORD = 0x1;
pub const IMPLTYPEFLAG_FSOURCE: ::DWORD = 0x2;
pub const IMPLTYPEFLAG_FRESTRICTED: ::DWORD = 0x4;
pub const IMPLTYPEFLAG_FDEFAULTVTABLE: ::DWORD = 0x8;
STRUCT!{struct VARDESC {
memid: MEMBERID,
lpstrSchema: ::LPOLESTR,
lpvarValue: *mut VARIANT,
elemdescVar: ::ELEMDESC,
wVarFlags: ::WORD,
varkind: VARKIND,
}}
UNION!(VARDESC, lpvarValue, oInst, oInst_mut, ::ULONG);
pub type LPVARDESC = *mut VARDESC;
FLAGS!{enum TYPEFLAGS {
TYPEFLAG_FAPPOBJECT = 0x1,
TYPEFLAG_FCANCREATE = 0x2,
TYPEFLAG_FLICENSED = 0x4,
TYPEFLAG_FPREDECLID = 0x8,
TYPEFLAG_FHIDDEN = 0x10,
TYPEFLAG_FCONTROL = 0x20,
TYPEFLAG_FDUAL = 0x40,
TYPEFLAG_FNONEXTENSIBLE = 0x80,
TYPEFLAG_FOLEAUTOMATION = 0x100,
TYPEFLAG_FRESTRICTED = 0x200,
TYPEFLAG_FAGGREGATABLE = 0x400,
TYPEFLAG_FREPLACEABLE = 0x800,
TYPEFLAG_FDISPATCHABLE = 0x1000,
TYPEFLAG_FREVERSEBIND = 0x2000,
TYPEFLAG_FPROXY = 0x4000,
}}
FLAGS!{enum FUNCFLAGS {
FUNCFLAG_FRESTRICTED = 0x1,
FUNCFLAG_FSOURCE = 0x2,
FUNCFLAG_FBINDABLE = 0x4,
FUNCFLAG_FREQUESTEDIT = 0x8,
FUNCFLAG_FDISPLAYBIND = 0x10,
FUNCFLAG_FDEFAULTBIND = 0x20,
FUNCFLAG_FHIDDEN = 0x40,
FUNCFLAG_FUSESGETLASTERROR = 0x80,
FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
FUNCFLAG_FUIDEFAULT = 0x200,
FUNCFLAG_FNONBROWSABLE = 0x400,
FUNCFLAG_FREPLACEABLE = 0x800,
FUNCFLAG_FIMMEDIATEBIND = 0x1000,
}}
FLAGS!{enum VARFLAGS {
VARFLAG_FREADONLY = 0x1,
VARFLAG_FSOURCE = 0x2,
VARFLAG_FBINDABLE = 0x4,
VARFLAG_FREQUESTEDIT = 0x8,
VARFLAG_FDISPLAYBIND = 0x10,
VARFLAG_FDEFAULTBIND = 0x20,
VARFLAG_FHIDDEN = 0x40,
VARFLAG_FRESTRICTED = 0x80,
VARFLAG_FDEFAULTCOLLELEM = 0x100,
VARFLAG_FUIDEFAULT = 0x200,
VARFLAG_FNONBROWSABLE = 0x400,
VARFLAG_FREPLACEABLE = 0x800,
VARFLAG_FIMMEDIATEBIND = 0x1000,
}}
STRUCT!{struct CLEANLOCALSTORAGE {
pInterface: *mut ::IUnknown,
pStorage: ::PVOID,
flags: ::DWORD,
}}
STRUCT!{struct CUSTDATAITEM {
guid: ::GUID,
varValue: VARIANTARG,
}}
pub type LPCUSTDATAITEM = *mut CUSTDATAITEM;
STRUCT!{struct CUSTDATA {
cCustData: ::DWORD,
prgCustData: LPCUSTDATAITEM,
}}
pub type LPCUSTDATA = *mut CUSTDATA;
pub type LPCREATETYPEINFO = *mut ICreateTypeInfo;
RIDL!(
interface ICreateTypeInfo(ICreateTypeInfoVtbl): IUnknown(IUnknownVtbl) {
fn SetGuid(&mut self, guid: ::REFGUID) -> ::HRESULT,
fn SetTypeFlags(&mut self, uTypeFlags: ::UINT) -> ::HRESULT,
fn SetDocString(&mut self, pStrDoc: ::LPOLESTR) -> ::HRESULT,
fn SetHelpContext(&mut self, dwHelpContext: ::DWORD) -> ::HRESULT,
fn SetVersion(&mut self, wMajorVerNum: ::WORD, wMinorVerNum: ::WORD) -> ::HRESULT,
fn AddRefTypeInfo(&mut self, pTInfo: *mut ITypeInfo) -> ::HRESULT,
fn AddFuncDesc(&mut self, index: ::UINT, pFuncDesc: *mut FUNCDESC) -> ::HRESULT,
fn SetImplTypeFlags(&mut self, index: ::UINT, implTypeFlags: ::INT) -> ::HRESULT,
fn SetAlignment(&mut self, cbAlignment: ::WORD) -> ::HRESULT,
fn SetSchema(&mut self, pStrSchema: ::LPOLESTR) -> ::HRESULT,
fn AddVarDesc(&mut self, index: ::UINT, pVarDesc: *mut VARDESC) -> ::HRESULT,
fn SetFuncAndParamNames(
&mut self, index: ::UINT, rgszNames: *mut ::LPOLESTR, cNames: ::UINT
) -> ::HRESULT,
fn SetVarName(&mut self, index: ::UINT, szName: ::LPOLESTR) -> ::HRESULT,
fn SetTypeDescAlias(&mut self, pTDescAlias: *mut TYPEDESC) -> ::HRESULT,
fn DefineFuncAsDllEntry(
&mut self, index: ::UINT, szDllName: ::LPOLESTR, szProcName: ::LPOLESTR
) -> ::HRESULT,
fn SetFuncDocString(&mut self, index: ::UINT, szDocString: ::LPOLESTR) -> ::HRESULT,
fn SetVarDocString(&mut self, index: ::UINT, szDocString: ::LPOLESTR) -> ::HRESULT,
fn SetFuncHelpContext(&mut self, index: ::UINT, dwHelpContext: ::DWORD) -> ::HRESULT,
fn SetVarHelpContext(&mut self, index: ::UINT, dwHelpContext: ::DWORD) -> ::HRESULT,
fn SetMops(&mut self, index: ::UINT, bstrMops: ::BSTR) -> ::HRESULT,
fn SetTypeIdldesc(&mut self, pIdlDesc: *mut IDLDESC) -> ::HRESULT,
fn LayOut(&mut self) -> ::HRESULT
}
);
// FIXME: Implement these interfaces
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ICreateTypeInfo2;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ICreateTypeLib;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ICreateTypeLib2;
pub type LPDISPATCH = *mut IDispatch;
pub const DISPID_UNKNOWN: ::INT = -1;
pub const DISPID_VALUE: ::INT = 0;
pub const DISPID_PROPERTYPUT: ::INT = -3;
pub const DISPID_NEWENUM: ::INT = -4;
pub const DISPID_EVALUATE: ::INT = -5;
pub const DISPID_CONSTRUCTOR: ::INT = -6;
pub const DISPID_DESTRUCTOR: ::INT = -7;
pub const DISPID_COLLECT: ::INT = -8;
RIDL!(
interface IDispatch(IDispatchVtbl): IUnknown(IUnknownVtbl) {
fn GetTypeInfoCount(&mut self, pctinfo: *mut ::UINT) -> ::HRESULT,
fn GetTypeInfo(
&mut self, iTInfo: ::UINT, lcid: ::LCID, ppTInfo: *mut *mut ITypeInfo
) -> ::HRESULT,
fn GetIDsOfNames(
&mut self, riid: ::REFIID, rgszNames: *mut ::LPOLESTR, cNames: ::UINT, lcid: ::LCID,
rgDispId: *mut ::DISPID
) -> ::HRESULT,
fn Invoke(
&mut self, dispIdMember: ::DISPID, riid: ::REFIID, lcid: ::LCID, wFlags: ::WORD,
pDispParams: *mut ::DISPPARAMS, pVarResult: *mut VARIANT, pExcepInfo: *mut ::EXCEPINFO,
puArgErr: *mut ::UINT
) -> ::HRESULT
}
);
// FIXME: Implement these interfaces
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct IEnumVARIANT;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeComp;
RIDL!(
interface ITypeInfo(ITypeInfoVtbl): IUnknown(IUnknownVtbl) {
fn GetTypeAttr(&mut self, ppTypeAttr: *mut *mut TYPEATTR) -> ::HRESULT,
fn GetTypeComp(&mut self, ppTComp: *mut *mut ITypeComp) -> ::HRESULT,
fn GetFuncDesc(&mut self, index: ::UINT, ppFunDesc: *mut *mut FUNCDESC) -> ::HRESULT,
fn GetVarDesc(&mut self, index: ::UINT, pPVarDesc: *mut *mut VARDESC) -> ::HRESULT,
fn GetNames(
&mut self, memid: MEMBERID, rgBstrNames: *mut ::BSTR, cMaxNames: ::UINT,
pcNames: *mut ::UINT
) -> ::HRESULT,
fn GetRefTypeOfImplType(&mut self, index: ::UINT, pRefType: *mut HREFTYPE) -> ::HRESULT,
fn GetImplTypeFlags(&mut self, index: ::UINT, pImplTypeFlags: *mut ::INT) -> ::HRESULT,
fn GetIDsOfNames(
&mut self, rgszNames: *mut ::LPOLESTR, cNames: ::UINT, pMemId: *mut MEMBERID
) -> ::HRESULT,
fn Invoke(
&mut self, pvInstance: ::PVOID, memid: MEMBERID, wFlags: ::WORD,
pDispParams: *mut DISPPARAMS, pVarResult: *mut VARIANT, pExcepInfo: *mut EXCEPINFO,
puArgErr: *mut ::UINT
) -> ::HRESULT,
fn GetDocumentation(
&mut self, memid: MEMBERID, pBstrName: *mut ::BSTR, pBstrDocString: *mut ::BSTR,
pdwHelpContext: *mut ::DWORD, pBstrHelpFile: *mut ::BSTR
) -> ::HRESULT,
fn GetDllEntry(
&mut self, memid: MEMBERID, invKind: ::INVOKEKIND, pBstrDllName: *mut ::BSTR,
pBstrName: *mut ::BSTR, pwOrdinal: *mut ::WORD
) -> ::HRESULT,
fn GetRefTypeInfo(&mut self, hRefType: HREFTYPE, ppTInfo: *mut *mut ITypeInfo) -> ::HRESULT,
fn AddressOfMember(
&mut self, memid: MEMBERID, invKind: ::INVOKEKIND, ppv: *mut ::PVOID
) -> ::HRESULT,
fn CreateInstance(
&mut self, pUnkOuter: *mut ::IUnknown, riid: ::REFIID, ppvObj: *mut ::PVOID
) -> ::HRESULT,
fn GetMops(&mut self, memid: MEMBERID, pBstrMops: *mut ::BSTR) -> ::HRESULT,
fn GetContainingTypeLib(
&mut self, ppTLib: *mut *mut ITypeLib, pIndex: *mut ::UINT
) -> ::HRESULT,
fn ReleaseTypeAttr(&mut self, pTypeAttr: *mut TYPEATTR) -> (),
fn ReleaseFuncDesc(&mut self, pFuncDesc: *mut FUNCDESC) -> (),
fn ReleaseVarDesc(&mut self, pVarDesc: *mut VARDESC) -> ()
}
);
// FIXME: Implement these interfaces
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeInfo2;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeLib;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeLib2;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeChangeEvents;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct IErrorInfo;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ICreateErrorInfo;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ISupportErrorInfo;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeFactory;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct ITypeMarshal;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct IRecordInfo;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct IErrorLog;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct IPropertyBag;