// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! Mappings for the contents of OAIdl.h
use shared::basetsd::ULONG_PTR;
use shared::guiddef::{GUID, IID, REFGUID, REFIID};
use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT, ULONG, USHORT, WORD};
use shared::rpcndr::byte;
use shared::wtypes::{
BSTR, CY, DATE, DECIMAL, VARIANT_BOOL, VARTYPE, VT_BSTR, VT_DISPATCH, VT_ERROR,
VT_I1, VT_I2, VT_I4, VT_I8, VT_RECORD, VT_RESERVED, VT_UNKNOWN, VT_VARIANT,
wireBSTR
};
use shared::wtypesbase::{
BYTE_SIZEDARR, DOUBLE, DWORD_SIZEDARR, HYPER_SIZEDARR, LPCOLESTR, LPOLESTR, SCODE,
WORD_SIZEDARR
};
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{CHAR, HRESULT, LCID, LONG, LONGLONG, PVOID, SHORT, ULONGLONG};
pub type CURRENCY = CY;
STRUCT !{
struct SAFEARRAYBOUND {
cElements: ULONG,
lLbound: LONG,
}}
pub type LPSAFEARRAYBOUND = *
mut SAFEARRAYBOUND;
pub type wireBRECORD = *
mut _wireBRECORD;
pub type wireVARIANT = *
mut _wireVARIANT;
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,
SF_I1 = VT_I1,
SF_I2 = VT_I2,
SF_I4 = VT_I4,
SF_I8 = VT_I8,
SF_BSTR = VT_BSTR,
SF_UNKNOWN = VT_UNKNOWN,
SF_DISPATCH = VT_DISPATCH,
SF_VARIANT = VT_VARIANT,
SF_RECORD = VT_RECORD,
SF_HAVEIID = VT_UNKNOWN | VT_RESERVED,
}}
#[ cfg(target_pointer_width =
"32" )]
UNION!{union __MIDL_IOleAutomationTypes_0001 {
[u32;
6 ],
BstrStr BstrStr_mut: SAFEARR_BSTR,
UnknownStr UnknownStr_mut: SAFEARR_UNKNOWN,
DispatchStr DispatchStr_mut: SAFEARR_DISPATCH,
VariantStr VariantStr_mut: SAFEARR_VARIANT,
RecordStr RecordStr_mut: SAFEARR_BRECORD,
HaveIidStr HaveIidStr_mut: SAFEARR_HAVEIID,
ByteStr ByteStr_mut: BYTE_SIZEDARR,
WordStr WordStr_mut: WORD_SIZEDARR,
LongStr LongStr_mut: DWORD_SIZEDARR,
HyperStr HyperStr_mut: HYPER_SIZEDARR,
}}
#[ cfg(target_pointer_width =
"64" )]
UNION!{union __MIDL_IOleAutomationTypes_0001 {
[u64;
4 ],
BstrStr BstrStr_mut: SAFEARR_BSTR,
UnknownStr UnknownStr_mut: SAFEARR_UNKNOWN,
DispatchStr DispatchStr_mut: SAFEARR_DISPATCH,
VariantStr VariantStr_mut: SAFEARR_VARIANT,
RecordStr RecordStr_mut: SAFEARR_BRECORD,
HaveIidStr HaveIidStr_mut: SAFEARR_HAVEIID,
ByteStr ByteStr_mut: BYTE_SIZEDARR,
WordStr WordStr_mut: WORD_SIZEDARR,
LongStr LongStr_mut: DWORD_SIZEDARR,
HyperStr HyperStr_mut: HYPER_SIZEDARR,
}}
STRUCT !{
struct SAFEARRAYUNION {
sfType: ULONG,
u: __MIDL_IOleAutomationTypes_0001,
}}
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 =
0 x1;
pub const FADF_STATIC: DWORD =
0 x2;
pub const FADF_EMBEDDED: DWORD =
0 x4;
pub const FADF_FIXEDSIZE: DWORD =
0 x10;
pub const FADF_RECORD: DWORD =
0 x20;
pub const FADF_HAVEIID: DWORD =
0 x40;
pub const FADF_HAVEVARTYPE: DWORD =
0 x80;
pub const FADF_BSTR: DWORD =
0 x100;
pub const FADF_UNKNOWN: DWORD =
0 x200;
pub const FADF_DISPATCH: DWORD =
0 x400;
pub const FADF_VARIANT: DWORD =
0 x800;
pub const FADF_RESERVED: DWORD =
0 xf008;
STRUCT !{
struct __tagBRECORD {
pvRecord: PVOID,
pRecInfo: *
mut IRecordInfo,
}}
UNION!{union VARIANT_n3 {
[u64;
1 ] [u64;
2 ],
llVal llVal_mut: LONGLONG,
lVal lVal_mut: LONG,
bVal bVal_mut: BYTE,
iVal iVal_mut: SHORT,
fltVal fltVal_mut: FLOAT,
dblVal dblVal_mut: DOUBLE,
boolVal boolVal_mut: VARIANT_BOOL,
scode scode_mut: SCODE,
cyVal cyVal_mut: CY,
date date_mut: DATE,
bstrVal bstrVal_mut: BSTR,
punkVal punkVal_mut: *
mut IUnknown,
pdispVal pdispVal_mut: *
mut IDispatch,
parray parray_mut: *
mut SAFEARRAY,
pbVal pbVal_mut: *
mut BYTE,
piVal piVal_mut: *
mut SHORT,
plVal plVal_mut: *
mut LONG,
pllVal pllVal_mut: *
mut LONGLONG,
pfltVal pfltVal_mut: *
mut FLOAT,
pdblVal pdblVal_mut: *
mut DOUBLE,
pboolVal pboolVal_mut: *
mut VARIANT_BOOL,
pscode pscode_mut: *
mut SCODE,
pcyVal pcyVal_mut: *
mut CY,
pdate pdate_mut: *
mut DATE,
pbstrVal pbstrVal_mut: *
mut BSTR,
ppunkVal ppunkVal_mut: *
mut *
mut IUnknown,
ppdispVal ppdispVal_mut: *
mut *
mut IDispatch,
pparray pparray_mut: *
mut *
mut SAFEARRAY,
pvarVal pvarVal_mut: *
mut VARIANT,
byref byref_mut: PVOID,
cVal cVal_mut: CHAR,
uiVal uiVal_mut: USHORT,
ulVal ulVal_mut: ULONG,
ullVal ullVal_mut: ULONGLONG,
intVal intVal_mut: INT,
uintVal uintVal_mut: UINT,
pdecVal pdecVal_mut: *
mut DECIMAL,
pcVal pcVal_mut: *
mut CHAR,
puiVal puiVal_mut: *
mut USHORT,
pulVal pulVal_mut: *
mut ULONG,
pullVal pullVal_mut: *
mut ULONGLONG,
pintVal pintVal_mut: *
mut INT,
puintVal puintVal_mut: *
mut UINT,
n4 n4_mut: __tagBRECORD,
}}
STRUCT !{
struct __tagVARIANT {
vt: VARTYPE,
wReserved1: WORD,
wReserved2: WORD,
wReserved3: WORD,
n3: VARIANT_n3,
}}
UNION!{union VARIANT_n1 {
[u64;
2 ] [u64;
3 ],
n2 n2_mut: __tagVARIANT,
decVal decVal_mut: DECIMAL,
}}
STRUCT !{
struct VARIANT {
n1: VARIANT_n1,
}}
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,
}}
UNION!{union _wireVARIANT_u {
[u64;
2 ],
llVal llVal_mut: LONGLONG,
lVal lVal_mut: LONG,
bVal bVal_mut: BYTE,
iVal iVal_mut: SHORT,
fltVal fltVal_mut: FLOAT,
dblVal dblVal_mut: DOUBLE,
boolVal boolVal_mut: VARIANT_BOOL,
scode scode_mut: SCODE,
cyVal cyVal_mut: CY,
date date_mut: DATE,
bstrVal bstrVal_mut: wireBSTR,
punkVal punkVal_mut: *
mut IUnknown,
pdispVal pdispVal_mut: *
mut IDispatch,
parray parray_mut: wirePSAFEARRAY,
brecVal brecVal_mut: wireBRECORD,
pbVal pbVal_mut: *
mut BYTE,
piVal piVal_mut: *
mut SHORT,
plVal plVal_mut: *
mut LONG,
pllVal pllVal_mut: *
mut LONGLONG,
pfltVal pfltVal_mut: *
mut FLOAT,
pdblVal pdblVal_mut: *
mut DOUBLE,
pboolVal pboolVal_mut: *
mut VARIANT_BOOL,
pscode pscode_mut: *
mut SCODE,
pcyVal pcyVal_mut: *
mut CY,
pdate pdate_mut: *
mut DATE,
pbstrVal pbstrVal_mut: *
mut wireBSTR,
ppunkVal ppunkVal_mut: *
mut *
mut IUnknown,
ppdispVal ppdispVal_mut: *
mut *
mut IDispatch,
pparray pparray_mut: *
mut wirePSAFEARRAY,
pvarVal pvarVal_mut: *
mut wireVARIANT,
cVal cVal_mut: CHAR,
uiVal uiVal_mut: USHORT,
ulVal ulVal_mut: ULONG,
ullVal ullVal_mut: ULONGLONG,
intVal intVal_mut: INT,
uintVal uintVal_mut: UINT,
decVal decVal_mut: DECIMAL,
pdecVal pdecVal_mut: *
mut DECIMAL,
pcVal pcVal_mut: *
mut CHAR,
puiVal puiVal_mut: *
mut USHORT,
pulVal pulVal_mut: *
mut ULONG,
pullVal pullVal_mut: *
mut ULONGLONG,
pintVal pintVal_mut: *
mut INT,
puintVal puintVal_mut: *
mut UINT,
}}
STRUCT !{
struct _wireVARIANT {
clSize: DWORD,
rpcReserved: DWORD,
vt: USHORT,
wReserved1: USHORT,
wReserved2: USHORT,
wReserved3: USHORT,
u: _wireVARIANT_u,
}}
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,
}}
UNION!{union TYPEDESC_u {
[usize;
1 ],
lptdesc lptdesc_mut: *
mut TYPEDESC,
lpadesc lpadesc_mut: *
mut ARRAYDESC,
hreftype hreftype_mut: HREFTYPE,
}}
STRUCT !{
struct TYPEDESC {
u: TYPEDESC_u,
vt: VARTYPE,
}}
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 =
0 x1;
pub const PARAMFLAG_FOUT: DWORD =
0 x2;
pub const PARAMFLAG_FLCID: DWORD =
0 x4;
pub const PARAMFLAG_FRETVAL: DWORD =
0 x8;
pub const PARAMFLAG_FOPT: DWORD =
0 x10;
pub const PARAMFLAG_FHASDEFAULT: DWORD =
0 x20;
pub const PARAMFLAG_FHASCUSTDATA: DWORD =
0 x40;
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;
UNION!{union ELEMDESC_u {
[usize;
2 ],
idldesc idldesc_mut: IDLDESC,
paramdesc paramdesc_mut: PARAMDESC,
}}
STRUCT !{
struct ELEMDESC {
tdesc: TYPEDESC,
u: ELEMDESC_u,
}}
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 !{
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,
}}
ENUM !{
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 =
0 x1;
pub const IMPLTYPEFLAG_FSOURCE: DWORD =
0 x2;
pub const IMPLTYPEFLAG_FRESTRICTED: DWORD =
0 x4;
pub const IMPLTYPEFLAG_FDEFAULTVTABLE: DWORD =
0 x8;
UNION!{union VARDESC_u {
[usize;
1 ],
oInst oInst_mut: ULONG,
lpvarValue lpvarValue_mut: *
mut VARIANT,
}}
STRUCT !{
struct VARDESC {
memid: MEMBERID,
lpstrSchema: LPOLESTR,
u: VARDESC_u,
elemdescVar: ELEMDESC,
wVarFlags: WORD,
varkind: VARKIND,
}}
pub type LPVARDESC = *
mut VARDESC;
ENUM !{
enum TYPEFLAGS {
TYPEFLAG_FAPPOBJECT =
0 x1,
TYPEFLAG_FCANCREATE =
0 x2,
TYPEFLAG_FLICENSED =
0 x4,
TYPEFLAG_FPREDECLID =
0 x8,
TYPEFLAG_FHIDDEN =
0 x10,
TYPEFLAG_FCONTROL =
0 x20,
TYPEFLAG_FDUAL =
0 x40,
TYPEFLAG_FNONEXTENSIBLE =
0 x80,
TYPEFLAG_FOLEAUTOMATION =
0 x100,
TYPEFLAG_FRESTRICTED =
0 x200,
TYPEFLAG_FAGGREGATABLE =
0 x400,
TYPEFLAG_FREPLACEABLE =
0 x800,
TYPEFLAG_FDISPATCHABLE =
0 x1000,
TYPEFLAG_FREVERSEBIND =
0 x2000,
TYPEFLAG_FPROXY =
0 x4000,
}}
ENUM !{
enum FUNCFLAGS {
FUNCFLAG_FRESTRICTED =
0 x1,
FUNCFLAG_FSOURCE =
0 x2,
FUNCFLAG_FBINDABLE =
0 x4,
FUNCFLAG_FREQUESTEDIT =
0 x8,
FUNCFLAG_FDISPLAYBIND =
0 x10,
FUNCFLAG_FDEFAULTBIND =
0 x20,
FUNCFLAG_FHIDDEN =
0 x40,
FUNCFLAG_FUSESGETLASTERROR =
0 x80,
FUNCFLAG_FDEFAULTCOLLELEM =
0 x100,
FUNCFLAG_FUIDEFAULT =
0 x200,
FUNCFLAG_FNONBROWSABLE =
0 x400,
FUNCFLAG_FREPLACEABLE =
0 x800,
FUNCFLAG_FIMMEDIATEBIND =
0 x1000,
}}
ENUM !{
enum VARFLAGS {
VARFLAG_FREADONLY =
0 x1,
VARFLAG_FSOURCE =
0 x2,
VARFLAG_FBINDABLE =
0 x4,
VARFLAG_FREQUESTEDIT =
0 x8,
VARFLAG_FDISPLAYBIND =
0 x10,
VARFLAG_FDEFAULTBIND =
0 x20,
VARFLAG_FHIDDEN =
0 x40,
VARFLAG_FRESTRICTED =
0 x80,
VARFLAG_FDEFAULTCOLLELEM =
0 x100,
VARFLAG_FUIDEFAULT =
0 x200,
VARFLAG_FNONBROWSABLE =
0 x400,
VARFLAG_FREPLACEABLE =
0 x800,
VARFLAG_FIMMEDIATEBIND =
0 x1000,
}}
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!{
#[ uuid(
0 x00020405,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface ICreateTypeInfo(ICreateTypeInfoVtbl): IUnknown(IUnknownVtbl) {
fn SetGuid(
guid: REFGUID,
) -> HRESULT,
fn SetTypeFlags(
uTypeFlags: UINT,
) -> HRESULT,
fn SetDocString(
pStrDoc: LPOLESTR,
) -> HRESULT,
fn SetHelpContext(
dwHelpContext: DWORD,
) -> HRESULT,
fn SetVersion(
wMajorVerNum: WORD,
wMinorVerNum: WORD,
) -> HRESULT,
fn AddRefTypeInfo(
pTInfo: *
mut ITypeInfo,
) -> HRESULT,
fn AddFuncDesc(
index: UINT,
pFuncDesc: *
mut FUNCDESC,
) -> HRESULT,
fn SetImplTypeFlags(
index: UINT,
implTypeFlags: INT,
) -> HRESULT,
fn SetAlignment(
cbAlignment: WORD,
) -> HRESULT,
fn SetSchema(
pStrSchema: LPOLESTR,
) -> HRESULT,
fn AddVarDesc(
index: UINT,
pVarDesc: *
mut VARDESC,
) -> HRESULT,
fn SetFuncAndParamNames(
index: UINT,
rgszNames: *
mut LPOLESTR,
cNames: UINT,
) -> HRESULT,
fn SetVarName(
index: UINT,
szName: LPOLESTR,
) -> HRESULT,
fn SetTypeDescAlias(
pTDescAlias: *
mut TYPEDESC,
) -> HRESULT,
fn DefineFuncAsDllEntry(
index: UINT,
szDllName: LPOLESTR,
szProcName: LPOLESTR,
) -> HRESULT,
fn SetFuncDocString(
index: UINT,
szDocString: LPOLESTR,
) -> HRESULT,
fn SetVarDocString(
index: UINT,
szDocString: LPOLESTR,
) -> HRESULT,
fn SetFuncHelpContext(
index: UINT,
dwHelpContext: DWORD,
) -> HRESULT,
fn SetVarHelpContext(
index: UINT,
dwHelpContext: DWORD,
) -> HRESULT,
fn SetMops(
index: UINT,
bstrMops: BSTR,
) -> HRESULT,
fn SetTypeIdldesc(
pIdlDesc: *
mut IDLDESC,
) -> HRESULT,
fn LayOut() -> HRESULT,
}}
// LPCREATETYPEINFO2
// ICreateTypeInfo2
// LPCREATETYPELIB
// ICreateTypeLib
// LPCREATETYPELIB2
// 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!{
#[ uuid(
0 x00020400,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IDispatch(IDispatchVtbl): IUnknown(IUnknownVtbl) {
fn GetTypeInfoCount(
pctinfo: *
mut UINT,
) -> HRESULT,
fn GetTypeInfo(
iTInfo: UINT,
lcid: LCID,
ppTInfo: *
mut *
mut ITypeInfo,
) -> HRESULT,
fn GetIDsOfNames(
riid: REFIID,
rgszNames: *
mut LPOLESTR,
cNames: UINT,
lcid: LCID,
rgDispId: *
mut DISPID,
) -> HRESULT,
fn Invoke(
dispIdMember: DISPID,
riid: REFIID,
lcid: LCID,
wFlags: WORD,
pDispParams: *
mut DISPPARAMS,
pVarResult: *
mut VARIANT,
pExcepInfo: *
mut EXCEPINFO,
puArgErr: *
mut UINT,
) -> HRESULT,
}}
// IDispatch_RemoteInvoke_Proxy
// IDispatch_RemoteInvoke_Stub
// LPENUMVARIANT
// IEnumVARIANT
// IEnumVARIANT_RemoteNext_Proxy
// IEnumVARIANT_RemoteNext_Stub
RIDL!{
#[ uuid(
0 x0000002F,
0 x0000,
0 x0000,
0 xC0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IRecordInfo(IRecordInfoVtbl): IUnknown(IUnknownVtbl) {
fn RecordInit(
pvNew: PVOID,
) -> HRESULT,
fn RecordClear(
pvExisting: PVOID,
) -> HRESULT,
fn RecordCopy(
pvExisting: PVOID,
pvNew: PVOID,
) -> HRESULT,
fn GetGuid(
pguid: *
mut GUID,
) -> HRESULT,
fn GetName(
pbstrName: *
mut BSTR,
) -> HRESULT,
fn GetSize(
pcbSize: *
mut ULONG,
) -> HRESULT,
fn GetTypeInfo(
ppTypeInfo: *
mut *
mut ITypeInfo,
) -> HRESULT,
fn GetField(
pvData: PVOID,
szFieldName: LPCOLESTR,
pvarField: *
mut VARIANT,
) -> HRESULT,
fn GetFieldNoCopy(
pvData: PVOID,
szFieldName: LPCOLESTR,
pvarField: *
mut VARIANT,
ppvDataCArray: *
mut PVOID,
) -> HRESULT,
fn PutField(
wFlags: ULONG,
pvData: PVOID,
szFieldName: LPCOLESTR,
pvarField: *
mut VARIANT,
) -> HRESULT,
fn PutFieldNoCopy(
wFlags: ULONG,
pvData: PVOID,
szFieldName: LPCOLESTR,
pvarField: *
mut VARIANT,
) -> HRESULT,
fn GetFieldNames(
pcNames: *
mut ULONG,
rgBstrNames: *
mut BSTR,
) -> HRESULT,
fn IsMatchingType(
pRecordInfo: *
mut IRecordInfo,
) -> BOOL,
fn RecordCreate() -> PVOID,
fn RecordCreateCopy(
pvSource: PVOID,
ppvDest: *
mut PVOID,
) -> HRESULT,
fn RecordDestroy(
pvRecord: PVOID,
) -> HRESULT,
}}
pub type LPTYPECOMP = *
mut ITypeComp;
ENUM !{
enum DESCKIND {
DESCKIND_NONE =
0 ,
DESCKIND_FUNCDESC = DESCKIND_NONE +
1 ,
DESCKIND_VARDESC = DESCKIND_FUNCDESC +
1 ,
DESCKIND_TYPECOMP = DESCKIND_VARDESC +
1 ,
DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP +
1 ,
DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ +
1 ,
}}
UNION!{union BINDPTR {
[usize;
1 ],
lpfuncdesc lpfuncdesc_mut: *
mut FUNCDESC,
lpvardesc lpvardesc_mut: *
mut VARDESC,
lptcomp lptcomp_mut: *
mut ITypeComp,
}}
pub type LPBINDPTR = *
mut BINDPTR;
RIDL!{
#[ uuid(
0 x00020403,
0 x0000,
0 x0000,
0 xC0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface ITypeComp(ITypeCompVtbl): IUnknown(IUnknownVtbl) {
fn Bind(
szName: LPOLESTR,
lHashVal: ULONG,
wFlags: WORD,
ppTInfo: *
mut *
mut ITypeInfo,
pDescKind: *
mut DESCKIND,
pBindPtr: *
mut BINDPTR,
) -> HRESULT,
fn BindType(
szName: LPOLESTR,
lHashVal: ULONG,
ppTInfo: *
mut *
mut ITypeInfo,
ppTComp: *
mut *
mut ITypeComp,
) -> HRESULT,
}}
ENUM !{
enum SYSKIND {
SYS_WIN16 =
0 ,
SYS_WIN32,
SYS_MAC,
SYS_WIN64,
}}
STRUCT !{
struct TLIBATTR {
guid: GUID,
lcid: LCID,
syskind: SYSKIND,
wMajorVerNum: WORD,
wMinorVerNum: WORD,
wLibFlags: WORD,
}}
RIDL!{
#[ uuid(
0 x00020402,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface ITypeLib(ITypeLibVtbl): IUnknown(IUnknownVtbl) {
fn GetTypeInfoCount() -> UINT,
fn GetTypeInfo(
index: UINT,
ppTInfo: *
mut *
mut ITypeInfo,
) -> HRESULT,
fn GetTypeInfoType(
index: UINT,
pTKind: *
mut TYPEKIND,
) -> HRESULT,
fn GetTypeInfoOfGuid(
guid: REFGUID,
ppTInfo: *
mut *
mut ITypeInfo,
) -> HRESULT,
fn GetLibAttr(
ppTLibAttr: *
mut *
mut TLIBATTR,
) -> HRESULT,
fn GetTypeComp(
ppTComp: *
mut *
mut ITypeComp,
) -> HRESULT,
fn GetDocumentation(
index: INT,
pbstrName: *
mut BSTR,
pBstrDocString: *
mut BSTR,
pdwHelpContext: *
mut DWORD,
pBstrHelpFile: *
mut BSTR,
) -> HRESULT,
fn IsName(
szNameBuf: LPOLESTR,
lHashVal: ULONG,
pfName: *
mut BOOL,
) -> HRESULT,
fn FindName(
szNameBuf: LPOLESTR,
lHashVal: ULONG,
ppTInfo: *
mut *
mut ITypeInfo,
rgMemId: *
mut MEMBERID,
pcFound: *
mut USHORT,
) -> HRESULT,
fn ReleaseTLibAttr(
pTLibAttr: *
const TLIBATTR,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x00020401,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface ITypeInfo(ITypeInfoVtbl): IUnknown(IUnknownVtbl) {
fn GetTypeAttr(
ppTypeAttr: *
mut *
mut TYPEATTR,
) -> HRESULT,
fn GetTypeComp(
ppTComp: *
mut *
mut ITypeComp,
) -> HRESULT,
fn GetFuncDesc(
index: UINT,
ppFunDesc: *
mut *
mut FUNCDESC,
) -> HRESULT,
fn GetVarDesc(
index: UINT,
pPVarDesc: *
mut *
mut VARDESC,
) -> HRESULT,
fn GetNames(
memid: MEMBERID,
rgBstrNames: *
mut BSTR,
cMaxNames: UINT,
pcNames: *
mut UINT,
) -> HRESULT,
fn GetRefTypeOfImplType(
index: UINT,
pRefType: *
mut HREFTYPE,
) -> HRESULT,
fn GetImplTypeFlags(
index: UINT,
pImplTypeFlags: *
mut INT,
) -> HRESULT,
fn GetIDsOfNames(
rgszNames: *
mut LPOLESTR,
cNames: UINT,
pMemId: *
mut MEMBERID,
) -> HRESULT,
fn Invoke(
pvInstance: PVOID,
memid: MEMBERID,
wFlags: WORD,
pDispParams: *
mut DISPPARAMS,
pVarResult: *
mut VARIANT,
pExcepInfo: *
mut EXCEPINFO,
puArgErr: *
mut UINT,
) -> HRESULT,
fn GetDocumentation(
memid: MEMBERID,
pBstrName: *
mut BSTR,
pBstrDocString: *
mut BSTR,
pdwHelpContext: *
mut DWORD,
pBstrHelpFile: *
mut BSTR,
) -> HRESULT,
fn GetDllEntry(
memid: MEMBERID,
invKind: INVOKEKIND,
pBstrDllName: *
mut BSTR,
pBstrName: *
mut BSTR,
pwOrdinal: *
mut WORD,
) -> HRESULT,
fn GetRefTypeInfo(
hRefType: HREFTYPE,
ppTInfo: *
mut *
mut ITypeInfo,
) -> HRESULT,
fn AddressOfMember(
memid: MEMBERID,
invKind: INVOKEKIND,
ppv: *
mut PVOID,
) -> HRESULT,
fn CreateInstance(
pUnkOuter: *
mut IUnknown,
riid: REFIID,
ppvObj: *
mut PVOID,
) -> HRESULT,
fn GetMops(
memid: MEMBERID,
pBstrMops: *
mut BSTR,
) -> HRESULT,
fn GetContainingTypeLib(
ppTLib: *
mut *
mut ITypeLib,
pIndex: *
mut UINT,
) -> HRESULT,
fn ReleaseTypeAttr(
pTypeAttr: *
mut TYPEATTR,
) -> (),
fn ReleaseFuncDesc(
pFuncDesc: *
mut FUNCDESC,
) -> (),
fn ReleaseVarDesc(
pVarDesc: *
mut VARDESC,
) -> (),
}}
RIDL!{
#[ uuid(
0 x1cf2b120,
0 x547d,
0 x101b,
0 x8e,
0 x65,
0 x08,
0 x00,
0 x2b,
0 x2b,
0 xd1,
0 x19)]
interface IErrorInfo(IErrorInfoVtbl): IUnknown(IUnknownVtbl) {
fn GetGUID(
pGUID: *
mut GUID,
) -> HRESULT,
fn GetSource(
pBstrSource: *
mut BSTR,
) -> HRESULT,
fn GetDescription(
pBstrDescription: *
mut BSTR,
) -> HRESULT,
fn GetHelpFile(
pBstrHelpFile: *
mut BSTR,
) -> HRESULT,
fn GetHelpContext(
pdwHelpContext: *
mut DWORD,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x22f03340,
0 x547d,
0 x101b,
0 x8e,
0 x65,
0 x08,
0 x00,
0 x2b,
0 x2b,
0 xd1,
0 x19)]
interface ICreateErrorInfo(ICreateErrorInfoVtbl): IUnknown(IUnknownVtbl) {
fn SetGUID(
rguid: REFGUID,
) -> HRESULT,
fn SetSource(
szSource: LPOLESTR,
) -> HRESULT,
fn SetDescription(
szDescription: LPOLESTR,
) -> HRESULT,
fn SetHelpFile(
szHelpFile: LPOLESTR,
) -> HRESULT,
fn SetHelpContext(
dwHelpContext: DWORD,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x3127ca40,
0 x446e,
0 x11ce,
0 x81,
0 x35,
0 x00,
0 xaa,
0 x00,
0 x4b,
0 xb8,
0 x51)]
interface IErrorLog(IErrorLogVtbl): IUnknown(IUnknownVtbl) {
fn AddError(
pszPropName: LPCOLESTR,
pExcepInfo: *
const EXCEPINFO,
) -> HRESULT,
}}
pub type LPERRORLOG = *
mut IErrorLog;
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland