1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! Mappings for the contents of OAIdl.h 7 use shared::basetsd::ULONG_PTR; 8 use shared::guiddef::{GUID, IID, REFGUID, REFIID}; 9 use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT, ULONG, USHORT, WORD}; 10 use shared::rpcndr::byte; 11 use shared::wtypes::{ 12 BSTR, CY, DATE, DECIMAL, VARIANT_BOOL, VARTYPE, VT_BSTR, VT_DISPATCH, VT_ERROR, 13 VT_I1, VT_I2, VT_I4, VT_I8, VT_RECORD, VT_RESERVED, VT_UNKNOWN, VT_VARIANT, 14 wireBSTR 15 }; 16 use shared::wtypesbase::{ 17 BYTE_SIZEDARR, DOUBLE, DWORD_SIZEDARR, HYPER_SIZEDARR, LPCOLESTR, LPOLESTR, SCODE, 18 WORD_SIZEDARR 19 }; 20 use um::unknwnbase::{IUnknown, IUnknownVtbl}; 21 use um::winnt::{CHAR, HRESULT, LCID, LONG, LONGLONG, PVOID, SHORT, ULONGLONG}; 22 pub type CURRENCY = CY; 23 STRUCT!{struct SAFEARRAYBOUND { 24 cElements: ULONG, 25 lLbound: LONG, 26 }} 27 pub type LPSAFEARRAYBOUND = *mut SAFEARRAYBOUND; 28 pub type wireBRECORD = *mut _wireBRECORD; 29 pub type wireVARIANT = *mut _wireVARIANT; 30 STRUCT!{struct SAFEARR_BSTR { 31 Size: ULONG, 32 aBstr: *mut wireBSTR, 33 }} 34 STRUCT!{struct SAFEARR_UNKNOWN { 35 Size: ULONG, 36 apUnknown: *mut *mut IUnknown, 37 }} 38 STRUCT!{struct SAFEARR_DISPATCH { 39 Size: ULONG, 40 apDispatch: *mut *mut IDispatch, 41 }} 42 STRUCT!{struct SAFEARR_VARIANT { 43 Size: ULONG, 44 aVariant: *mut wireVARIANT, 45 }} 46 STRUCT!{struct SAFEARR_BRECORD { 47 Size: ULONG, 48 aRecord: *mut wireBRECORD, 49 }} 50 STRUCT!{struct SAFEARR_HAVEIID { 51 Size: ULONG, 52 apUnknown: *mut *mut IUnknown, 53 iid: IID, 54 }} 55 ENUM!{enum SF_TYPE { 56 SF_ERROR = VT_ERROR, 57 SF_I1 = VT_I1, 58 SF_I2 = VT_I2, 59 SF_I4 = VT_I4, 60 SF_I8 = VT_I8, 61 SF_BSTR = VT_BSTR, 62 SF_UNKNOWN = VT_UNKNOWN, 63 SF_DISPATCH = VT_DISPATCH, 64 SF_VARIANT = VT_VARIANT, 65 SF_RECORD = VT_RECORD, 66 SF_HAVEIID = VT_UNKNOWN | VT_RESERVED, 67 }} 68 #[cfg(target_pointer_width = "32")] 69 UNION!{union __MIDL_IOleAutomationTypes_0001 { 70 [u32; 6], 71 BstrStr BstrStr_mut: SAFEARR_BSTR, 72 UnknownStr UnknownStr_mut: SAFEARR_UNKNOWN, 73 DispatchStr DispatchStr_mut: SAFEARR_DISPATCH, 74 VariantStr VariantStr_mut: SAFEARR_VARIANT, 75 RecordStr RecordStr_mut: SAFEARR_BRECORD, 76 HaveIidStr HaveIidStr_mut: SAFEARR_HAVEIID, 77 ByteStr ByteStr_mut: BYTE_SIZEDARR, 78 WordStr WordStr_mut: WORD_SIZEDARR, 79 LongStr LongStr_mut: DWORD_SIZEDARR, 80 HyperStr HyperStr_mut: HYPER_SIZEDARR, 81 }} 82 #[cfg(target_pointer_width = "64")] 83 UNION!{union __MIDL_IOleAutomationTypes_0001 { 84 [u64; 4], 85 BstrStr BstrStr_mut: SAFEARR_BSTR, 86 UnknownStr UnknownStr_mut: SAFEARR_UNKNOWN, 87 DispatchStr DispatchStr_mut: SAFEARR_DISPATCH, 88 VariantStr VariantStr_mut: SAFEARR_VARIANT, 89 RecordStr RecordStr_mut: SAFEARR_BRECORD, 90 HaveIidStr HaveIidStr_mut: SAFEARR_HAVEIID, 91 ByteStr ByteStr_mut: BYTE_SIZEDARR, 92 WordStr WordStr_mut: WORD_SIZEDARR, 93 LongStr LongStr_mut: DWORD_SIZEDARR, 94 HyperStr HyperStr_mut: HYPER_SIZEDARR, 95 }} 96 STRUCT!{struct SAFEARRAYUNION { 97 sfType: ULONG, 98 u: __MIDL_IOleAutomationTypes_0001, 99 }} 100 STRUCT!{struct _wireSAFEARRAY { 101 cDims: USHORT, 102 fFeatures: USHORT, 103 cbElements: ULONG, 104 cLocks: ULONG, 105 uArrayStructs: SAFEARRAYUNION, 106 rgsaBound: [SAFEARRAYBOUND; 1], 107 }} 108 pub type wireSAFEARRAY = *mut _wireSAFEARRAY; 109 pub type wirePSAFEARRAY = *mut wireSAFEARRAY; 110 STRUCT!{struct SAFEARRAY { 111 cDims: USHORT, 112 fFeatures: USHORT, 113 cbElements: ULONG, 114 cLocks: ULONG, 115 pvData: PVOID, 116 rgsabound: [SAFEARRAYBOUND; 1], 117 }} 118 pub type LPSAFEARRAY = *mut SAFEARRAY; 119 pub const FADF_AUTO: DWORD = 0x1; 120 pub const FADF_STATIC: DWORD = 0x2; 121 pub const FADF_EMBEDDED: DWORD = 0x4; 122 pub const FADF_FIXEDSIZE: DWORD = 0x10; 123 pub const FADF_RECORD: DWORD = 0x20; 124 pub const FADF_HAVEIID: DWORD = 0x40; 125 pub const FADF_HAVEVARTYPE: DWORD = 0x80; 126 pub const FADF_BSTR: DWORD = 0x100; 127 pub const FADF_UNKNOWN: DWORD = 0x200; 128 pub const FADF_DISPATCH: DWORD = 0x400; 129 pub const FADF_VARIANT: DWORD = 0x800; 130 pub const FADF_RESERVED: DWORD = 0xf008; 131 STRUCT!{struct __tagBRECORD { 132 pvRecord: PVOID, 133 pRecInfo: *mut IRecordInfo, 134 }} 135 UNION!{union VARIANT_n3 { 136 [u64; 1] [u64; 2], 137 llVal llVal_mut: LONGLONG, 138 lVal lVal_mut: LONG, 139 bVal bVal_mut: BYTE, 140 iVal iVal_mut: SHORT, 141 fltVal fltVal_mut: FLOAT, 142 dblVal dblVal_mut: DOUBLE, 143 boolVal boolVal_mut: VARIANT_BOOL, 144 scode scode_mut: SCODE, 145 cyVal cyVal_mut: CY, 146 date date_mut: DATE, 147 bstrVal bstrVal_mut: BSTR, 148 punkVal punkVal_mut: *mut IUnknown, 149 pdispVal pdispVal_mut: *mut IDispatch, 150 parray parray_mut: *mut SAFEARRAY, 151 pbVal pbVal_mut: *mut BYTE, 152 piVal piVal_mut: *mut SHORT, 153 plVal plVal_mut: *mut LONG, 154 pllVal pllVal_mut: *mut LONGLONG, 155 pfltVal pfltVal_mut: *mut FLOAT, 156 pdblVal pdblVal_mut: *mut DOUBLE, 157 pboolVal pboolVal_mut: *mut VARIANT_BOOL, 158 pscode pscode_mut: *mut SCODE, 159 pcyVal pcyVal_mut: *mut CY, 160 pdate pdate_mut: *mut DATE, 161 pbstrVal pbstrVal_mut: *mut BSTR, 162 ppunkVal ppunkVal_mut: *mut *mut IUnknown, 163 ppdispVal ppdispVal_mut: *mut *mut IDispatch, 164 pparray pparray_mut: *mut *mut SAFEARRAY, 165 pvarVal pvarVal_mut: *mut VARIANT, 166 byref byref_mut: PVOID, 167 cVal cVal_mut: CHAR, 168 uiVal uiVal_mut: USHORT, 169 ulVal ulVal_mut: ULONG, 170 ullVal ullVal_mut: ULONGLONG, 171 intVal intVal_mut: INT, 172 uintVal uintVal_mut: UINT, 173 pdecVal pdecVal_mut: *mut DECIMAL, 174 pcVal pcVal_mut: *mut CHAR, 175 puiVal puiVal_mut: *mut USHORT, 176 pulVal pulVal_mut: *mut ULONG, 177 pullVal pullVal_mut: *mut ULONGLONG, 178 pintVal pintVal_mut: *mut INT, 179 puintVal puintVal_mut: *mut UINT, 180 n4 n4_mut: __tagBRECORD, 181 }} 182 STRUCT!{struct __tagVARIANT { 183 vt: VARTYPE, 184 wReserved1: WORD, 185 wReserved2: WORD, 186 wReserved3: WORD, 187 n3: VARIANT_n3, 188 }} 189 UNION!{union VARIANT_n1 { 190 [u64; 2] [u64; 3], 191 n2 n2_mut: __tagVARIANT, 192 decVal decVal_mut: DECIMAL, 193 }} 194 STRUCT!{struct VARIANT { 195 n1: VARIANT_n1, 196 }} 197 pub type LPVARIANT = *mut VARIANT; 198 pub type VARIANTARG = VARIANT; 199 pub type LPVARIANTARG = *mut VARIANT; 200 pub type REFVARIANT = *const VARIANT; 201 STRUCT!{struct _wireBRECORD { 202 fFlags: ULONG, 203 clSize: ULONG, 204 pRecInfo: *mut IRecordInfo, 205 pRecord: *mut byte, 206 }} 207 UNION!{union _wireVARIANT_u { 208 [u64; 2], 209 llVal llVal_mut: LONGLONG, 210 lVal lVal_mut: LONG, 211 bVal bVal_mut: BYTE, 212 iVal iVal_mut: SHORT, 213 fltVal fltVal_mut: FLOAT, 214 dblVal dblVal_mut: DOUBLE, 215 boolVal boolVal_mut: VARIANT_BOOL, 216 scode scode_mut: SCODE, 217 cyVal cyVal_mut: CY, 218 date date_mut: DATE, 219 bstrVal bstrVal_mut: wireBSTR, 220 punkVal punkVal_mut: *mut IUnknown, 221 pdispVal pdispVal_mut: *mut IDispatch, 222 parray parray_mut: wirePSAFEARRAY, 223 brecVal brecVal_mut: wireBRECORD, 224 pbVal pbVal_mut: *mut BYTE, 225 piVal piVal_mut: *mut SHORT, 226 plVal plVal_mut: *mut LONG, 227 pllVal pllVal_mut: *mut LONGLONG, 228 pfltVal pfltVal_mut: *mut FLOAT, 229 pdblVal pdblVal_mut: *mut DOUBLE, 230 pboolVal pboolVal_mut: *mut VARIANT_BOOL, 231 pscode pscode_mut: *mut SCODE, 232 pcyVal pcyVal_mut: *mut CY, 233 pdate pdate_mut: *mut DATE, 234 pbstrVal pbstrVal_mut: *mut wireBSTR, 235 ppunkVal ppunkVal_mut: *mut *mut IUnknown, 236 ppdispVal ppdispVal_mut: *mut *mut IDispatch, 237 pparray pparray_mut: *mut wirePSAFEARRAY, 238 pvarVal pvarVal_mut: *mut wireVARIANT, 239 cVal cVal_mut: CHAR, 240 uiVal uiVal_mut: USHORT, 241 ulVal ulVal_mut: ULONG, 242 ullVal ullVal_mut: ULONGLONG, 243 intVal intVal_mut: INT, 244 uintVal uintVal_mut: UINT, 245 decVal decVal_mut: DECIMAL, 246 pdecVal pdecVal_mut: *mut DECIMAL, 247 pcVal pcVal_mut: *mut CHAR, 248 puiVal puiVal_mut: *mut USHORT, 249 pulVal pulVal_mut: *mut ULONG, 250 pullVal pullVal_mut: *mut ULONGLONG, 251 pintVal pintVal_mut: *mut INT, 252 puintVal puintVal_mut: *mut UINT, 253 }} 254 STRUCT!{struct _wireVARIANT { 255 clSize: DWORD, 256 rpcReserved: DWORD, 257 vt: USHORT, 258 wReserved1: USHORT, 259 wReserved2: USHORT, 260 wReserved3: USHORT, 261 u: _wireVARIANT_u, 262 }} 263 pub type DISPID = LONG; 264 pub type MEMBERID = DISPID; 265 pub type HREFTYPE = DWORD; 266 ENUM!{enum TYPEKIND { 267 TKIND_ENUM = 0, 268 TKIND_RECORD, 269 TKIND_MODULE, 270 TKIND_INTERFACE, 271 TKIND_DISPATCH, 272 TKIND_COCLASS, 273 TKIND_ALIAS, 274 TKIND_UNION, 275 TKIND_MAX, 276 }} 277 UNION!{union TYPEDESC_u { 278 [usize; 1], 279 lptdesc lptdesc_mut: *mut TYPEDESC, 280 lpadesc lpadesc_mut: *mut ARRAYDESC, 281 hreftype hreftype_mut: HREFTYPE, 282 }} 283 STRUCT!{struct TYPEDESC { 284 u: TYPEDESC_u, 285 vt: VARTYPE, 286 }} 287 STRUCT!{struct ARRAYDESC { 288 tdescElem: TYPEDESC, 289 cDims: USHORT, 290 rgbounds: [SAFEARRAYBOUND; 1], 291 }} 292 STRUCT!{struct PARAMDESCEX { 293 cBytes: ULONG, 294 varDefaultValue: VARIANTARG, 295 }} 296 pub type LPPARAMDESCEX = *mut PARAMDESCEX; 297 STRUCT!{struct PARAMDESC { 298 pparamdescex: LPPARAMDESCEX, 299 wParamFlags: USHORT, 300 }} 301 pub type LPPARAMDESC = *mut PARAMDESC; 302 pub const PARAMFLAG_NONE: DWORD = 0; 303 pub const PARAMFLAG_FIN: DWORD = 0x1; 304 pub const PARAMFLAG_FOUT: DWORD = 0x2; 305 pub const PARAMFLAG_FLCID: DWORD = 0x4; 306 pub const PARAMFLAG_FRETVAL: DWORD = 0x8; 307 pub const PARAMFLAG_FOPT: DWORD = 0x10; 308 pub const PARAMFLAG_FHASDEFAULT: DWORD = 0x20; 309 pub const PARAMFLAG_FHASCUSTDATA: DWORD = 0x40; 310 STRUCT!{struct IDLDESC { 311 dwReserved: ULONG_PTR, 312 wIDLFlags: USHORT, 313 }} 314 pub type LPIDLDESC = *mut IDLDESC; 315 pub const IDLFLAG_NONE: DWORD = PARAMFLAG_NONE; 316 pub const IDLFLAG_FIN: DWORD = PARAMFLAG_FIN; 317 pub const IDLFLAG_FOUT: DWORD = PARAMFLAG_FOUT; 318 pub const IDLFLAG_FLCID: DWORD = PARAMFLAG_FLCID; 319 pub const IDLFLAG_FRETVAL: DWORD = PARAMFLAG_FRETVAL; 320 UNION!{union ELEMDESC_u { 321 [usize; 2], 322 idldesc idldesc_mut: IDLDESC, 323 paramdesc paramdesc_mut: PARAMDESC, 324 }} 325 STRUCT!{struct ELEMDESC { 326 tdesc: TYPEDESC, 327 u: ELEMDESC_u, 328 }} 329 pub type LPELEMDESC = *mut ELEMDESC; 330 STRUCT!{struct TYPEATTR { 331 guid: GUID, 332 lcid: LCID, 333 dwReserved: DWORD, 334 memidConstructor: MEMBERID, 335 memidDestructor: MEMBERID, 336 lpstrSchema: LPOLESTR, 337 cbSizeInstance: ULONG, 338 typekind: TYPEKIND, 339 cFuncs: WORD, 340 cVars: WORD, 341 cImplTypes: WORD, 342 cbSizeVft: WORD, 343 cbAlignment: WORD, 344 wTypeFlags: WORD, 345 wMajorVerNum: WORD, 346 wMinorVerNum: WORD, 347 tdescAlias: TYPEDESC, 348 idldescType: IDLDESC, 349 }} 350 pub type LPTYPEATTR = *mut TYPEATTR; 351 STRUCT!{struct DISPPARAMS { 352 rgvarg: *mut VARIANTARG, 353 rgdispidNamedArgs: *mut DISPID, 354 cArgs: UINT, 355 cNamedArgs: UINT, 356 }} 357 STRUCT!{struct EXCEPINFO { 358 wCode: WORD, 359 wReserved: WORD, 360 bstrSource: BSTR, 361 bstrDescription: BSTR, 362 bstrHelpFile: BSTR, 363 dwHelpContext: DWORD, 364 pvReserved: PVOID, 365 pfnDeferredFillIn: Option<unsafe extern "system" fn( 366 einfo: *mut EXCEPINFO, 367 ) -> HRESULT>, 368 scode: SCODE, 369 }} 370 ENUM!{enum CALLCONV { 371 CC_FASTCALL = 0, 372 CC_CDECL = 1, 373 CC_MSCPASCAL, 374 CC_PASCAL, 375 CC_MACPASCAL, 376 CC_STDCALL, 377 CC_FPFASTCALL, 378 CC_SYSCALL, 379 CC_MPWCDECL, 380 CC_MPWPASCAL, 381 CC_MAX, 382 }} 383 ENUM!{enum FUNCKIND { 384 FUNC_VIRTUAL = 0, 385 FUNC_PUREVIRTUAL, 386 FUNC_NONVIRTUAL, 387 FUNC_STATIC, 388 FUNC_DISPATCH, 389 }} 390 ENUM!{enum INVOKEKIND { 391 INVOKE_FUNC = 1, 392 INVOKE_PROPERTYGET = 2, 393 INVOKE_PROPERTYPUT = 4, 394 INVOKE_PROPERTYPUTREF = 8, 395 }} 396 STRUCT!{struct FUNCDESC { 397 memid: MEMBERID, 398 lprgscode: *mut SCODE, 399 lprgelemdescParam: *mut ELEMDESC, 400 funckind: FUNCKIND, 401 invkind: INVOKEKIND, 402 callconv: CALLCONV, 403 cParams: SHORT, 404 cParamsOpt: SHORT, 405 oVft: SHORT, 406 cScodes: SHORT, 407 elemdescFunc: ELEMDESC, 408 wFuncFlags: WORD, 409 }} 410 pub type LPFUNCDESC = *mut FUNCDESC; 411 ENUM!{enum VARKIND { 412 VAR_PERINSTANCE = 0, 413 VAR_STATIC, 414 VAR_CONST, 415 VAR_DISPATCH, 416 }} 417 pub const IMPLTYPEFLAG_FDEFAULT: DWORD = 0x1; 418 pub const IMPLTYPEFLAG_FSOURCE: DWORD = 0x2; 419 pub const IMPLTYPEFLAG_FRESTRICTED: DWORD = 0x4; 420 pub const IMPLTYPEFLAG_FDEFAULTVTABLE: DWORD = 0x8; 421 UNION!{union VARDESC_u { 422 [usize; 1], 423 oInst oInst_mut: ULONG, 424 lpvarValue lpvarValue_mut: *mut VARIANT, 425 }} 426 STRUCT!{struct VARDESC { 427 memid: MEMBERID, 428 lpstrSchema: LPOLESTR, 429 u: VARDESC_u, 430 elemdescVar: ELEMDESC, 431 wVarFlags: WORD, 432 varkind: VARKIND, 433 }} 434 pub type LPVARDESC = *mut VARDESC; 435 ENUM!{enum TYPEFLAGS { 436 TYPEFLAG_FAPPOBJECT = 0x1, 437 TYPEFLAG_FCANCREATE = 0x2, 438 TYPEFLAG_FLICENSED = 0x4, 439 TYPEFLAG_FPREDECLID = 0x8, 440 TYPEFLAG_FHIDDEN = 0x10, 441 TYPEFLAG_FCONTROL = 0x20, 442 TYPEFLAG_FDUAL = 0x40, 443 TYPEFLAG_FNONEXTENSIBLE = 0x80, 444 TYPEFLAG_FOLEAUTOMATION = 0x100, 445 TYPEFLAG_FRESTRICTED = 0x200, 446 TYPEFLAG_FAGGREGATABLE = 0x400, 447 TYPEFLAG_FREPLACEABLE = 0x800, 448 TYPEFLAG_FDISPATCHABLE = 0x1000, 449 TYPEFLAG_FREVERSEBIND = 0x2000, 450 TYPEFLAG_FPROXY = 0x4000, 451 }} 452 ENUM!{enum FUNCFLAGS { 453 FUNCFLAG_FRESTRICTED = 0x1, 454 FUNCFLAG_FSOURCE = 0x2, 455 FUNCFLAG_FBINDABLE = 0x4, 456 FUNCFLAG_FREQUESTEDIT = 0x8, 457 FUNCFLAG_FDISPLAYBIND = 0x10, 458 FUNCFLAG_FDEFAULTBIND = 0x20, 459 FUNCFLAG_FHIDDEN = 0x40, 460 FUNCFLAG_FUSESGETLASTERROR = 0x80, 461 FUNCFLAG_FDEFAULTCOLLELEM = 0x100, 462 FUNCFLAG_FUIDEFAULT = 0x200, 463 FUNCFLAG_FNONBROWSABLE = 0x400, 464 FUNCFLAG_FREPLACEABLE = 0x800, 465 FUNCFLAG_FIMMEDIATEBIND = 0x1000, 466 }} 467 ENUM!{enum VARFLAGS { 468 VARFLAG_FREADONLY = 0x1, 469 VARFLAG_FSOURCE = 0x2, 470 VARFLAG_FBINDABLE = 0x4, 471 VARFLAG_FREQUESTEDIT = 0x8, 472 VARFLAG_FDISPLAYBIND = 0x10, 473 VARFLAG_FDEFAULTBIND = 0x20, 474 VARFLAG_FHIDDEN = 0x40, 475 VARFLAG_FRESTRICTED = 0x80, 476 VARFLAG_FDEFAULTCOLLELEM = 0x100, 477 VARFLAG_FUIDEFAULT = 0x200, 478 VARFLAG_FNONBROWSABLE = 0x400, 479 VARFLAG_FREPLACEABLE = 0x800, 480 VARFLAG_FIMMEDIATEBIND = 0x1000, 481 }} 482 STRUCT!{struct CLEANLOCALSTORAGE { 483 pInterface: *mut IUnknown, 484 pStorage: PVOID, 485 flags: DWORD, 486 }} 487 STRUCT!{struct CUSTDATAITEM { 488 guid: GUID, 489 varValue: VARIANTARG, 490 }} 491 pub type LPCUSTDATAITEM = *mut CUSTDATAITEM; 492 STRUCT!{struct CUSTDATA { 493 cCustData: DWORD, 494 prgCustData: LPCUSTDATAITEM, 495 }} 496 pub type LPCUSTDATA = *mut CUSTDATA; 497 pub type LPCREATETYPEINFO = *mut ICreateTypeInfo; 498 RIDL!{#[uuid(0x00020405, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 499 interface ICreateTypeInfo(ICreateTypeInfoVtbl): IUnknown(IUnknownVtbl) { 500 fn SetGuid( 501 guid: REFGUID, 502 ) -> HRESULT, 503 fn SetTypeFlags( 504 uTypeFlags: UINT, 505 ) -> HRESULT, 506 fn SetDocString( 507 pStrDoc: LPOLESTR, 508 ) -> HRESULT, 509 fn SetHelpContext( 510 dwHelpContext: DWORD, 511 ) -> HRESULT, 512 fn SetVersion( 513 wMajorVerNum: WORD, 514 wMinorVerNum: WORD, 515 ) -> HRESULT, 516 fn AddRefTypeInfo( 517 pTInfo: *mut ITypeInfo, 518 ) -> HRESULT, 519 fn AddFuncDesc( 520 index: UINT, 521 pFuncDesc: *mut FUNCDESC, 522 ) -> HRESULT, 523 fn SetImplTypeFlags( 524 index: UINT, 525 implTypeFlags: INT, 526 ) -> HRESULT, 527 fn SetAlignment( 528 cbAlignment: WORD, 529 ) -> HRESULT, 530 fn SetSchema( 531 pStrSchema: LPOLESTR, 532 ) -> HRESULT, 533 fn AddVarDesc( 534 index: UINT, 535 pVarDesc: *mut VARDESC, 536 ) -> HRESULT, 537 fn SetFuncAndParamNames( 538 index: UINT, 539 rgszNames: *mut LPOLESTR, 540 cNames: UINT, 541 ) -> HRESULT, 542 fn SetVarName( 543 index: UINT, 544 szName: LPOLESTR, 545 ) -> HRESULT, 546 fn SetTypeDescAlias( 547 pTDescAlias: *mut TYPEDESC, 548 ) -> HRESULT, 549 fn DefineFuncAsDllEntry( 550 index: UINT, 551 szDllName: LPOLESTR, 552 szProcName: LPOLESTR, 553 ) -> HRESULT, 554 fn SetFuncDocString( 555 index: UINT, 556 szDocString: LPOLESTR, 557 ) -> HRESULT, 558 fn SetVarDocString( 559 index: UINT, 560 szDocString: LPOLESTR, 561 ) -> HRESULT, 562 fn SetFuncHelpContext( 563 index: UINT, 564 dwHelpContext: DWORD, 565 ) -> HRESULT, 566 fn SetVarHelpContext( 567 index: UINT, 568 dwHelpContext: DWORD, 569 ) -> HRESULT, 570 fn SetMops( 571 index: UINT, 572 bstrMops: BSTR, 573 ) -> HRESULT, 574 fn SetTypeIdldesc( 575 pIdlDesc: *mut IDLDESC, 576 ) -> HRESULT, 577 fn LayOut() -> HRESULT, 578 }} 579 // LPCREATETYPEINFO2 580 // ICreateTypeInfo2 581 // LPCREATETYPELIB 582 // ICreateTypeLib 583 // LPCREATETYPELIB2 584 // ICreateTypeLib2 585 pub type LPDISPATCH = *mut IDispatch; 586 pub const DISPID_UNKNOWN: INT = -1; 587 pub const DISPID_VALUE: INT = 0; 588 pub const DISPID_PROPERTYPUT: INT = -3; 589 pub const DISPID_NEWENUM: INT = -4; 590 pub const DISPID_EVALUATE: INT = -5; 591 pub const DISPID_CONSTRUCTOR: INT = -6; 592 pub const DISPID_DESTRUCTOR: INT = -7; 593 pub const DISPID_COLLECT: INT = -8; 594 RIDL!{#[uuid(0x00020400, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 595 interface IDispatch(IDispatchVtbl): IUnknown(IUnknownVtbl) { 596 fn GetTypeInfoCount( 597 pctinfo: *mut UINT, 598 ) -> HRESULT, 599 fn GetTypeInfo( 600 iTInfo: UINT, 601 lcid: LCID, 602 ppTInfo: *mut *mut ITypeInfo, 603 ) -> HRESULT, 604 fn GetIDsOfNames( 605 riid: REFIID, 606 rgszNames: *mut LPOLESTR, 607 cNames: UINT, 608 lcid: LCID, 609 rgDispId: *mut DISPID, 610 ) -> HRESULT, 611 fn Invoke( 612 dispIdMember: DISPID, 613 riid: REFIID, 614 lcid: LCID, 615 wFlags: WORD, 616 pDispParams: *mut DISPPARAMS, 617 pVarResult: *mut VARIANT, 618 pExcepInfo: *mut EXCEPINFO, 619 puArgErr: *mut UINT, 620 ) -> HRESULT, 621 }} 622 // IDispatch_RemoteInvoke_Proxy 623 // IDispatch_RemoteInvoke_Stub 624 // LPENUMVARIANT 625 // IEnumVARIANT 626 // IEnumVARIANT_RemoteNext_Proxy 627 // IEnumVARIANT_RemoteNext_Stub 628 RIDL!{#[uuid(0x0000002F, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 629 interface IRecordInfo(IRecordInfoVtbl): IUnknown(IUnknownVtbl) { 630 fn RecordInit( 631 pvNew: PVOID, 632 ) -> HRESULT, 633 fn RecordClear( 634 pvExisting: PVOID, 635 ) -> HRESULT, 636 fn RecordCopy( 637 pvExisting: PVOID, 638 pvNew: PVOID, 639 ) -> HRESULT, 640 fn GetGuid( 641 pguid: *mut GUID, 642 ) -> HRESULT, 643 fn GetName( 644 pbstrName: *mut BSTR, 645 ) -> HRESULT, 646 fn GetSize( 647 pcbSize: *mut ULONG, 648 ) -> HRESULT, 649 fn GetTypeInfo( 650 ppTypeInfo: *mut *mut ITypeInfo, 651 ) -> HRESULT, 652 fn GetField( 653 pvData: PVOID, 654 szFieldName: LPCOLESTR, 655 pvarField: *mut VARIANT, 656 ) -> HRESULT, 657 fn GetFieldNoCopy( 658 pvData: PVOID, 659 szFieldName: LPCOLESTR, 660 pvarField: *mut VARIANT, 661 ppvDataCArray: *mut PVOID, 662 ) -> HRESULT, 663 fn PutField( 664 wFlags: ULONG, 665 pvData: PVOID, 666 szFieldName: LPCOLESTR, 667 pvarField: *mut VARIANT, 668 ) -> HRESULT, 669 fn PutFieldNoCopy( 670 wFlags: ULONG, 671 pvData: PVOID, 672 szFieldName: LPCOLESTR, 673 pvarField: *mut VARIANT, 674 ) -> HRESULT, 675 fn GetFieldNames( 676 pcNames: *mut ULONG, 677 rgBstrNames: *mut BSTR, 678 ) -> HRESULT, 679 fn IsMatchingType( 680 pRecordInfo: *mut IRecordInfo, 681 ) -> BOOL, 682 fn RecordCreate() -> PVOID, 683 fn RecordCreateCopy( 684 pvSource: PVOID, 685 ppvDest: *mut PVOID, 686 ) -> HRESULT, 687 fn RecordDestroy( 688 pvRecord: PVOID, 689 ) -> HRESULT, 690 }} 691 pub type LPTYPECOMP = *mut ITypeComp; 692 ENUM!{enum DESCKIND { 693 DESCKIND_NONE = 0, 694 DESCKIND_FUNCDESC = DESCKIND_NONE + 1, 695 DESCKIND_VARDESC = DESCKIND_FUNCDESC + 1, 696 DESCKIND_TYPECOMP = DESCKIND_VARDESC + 1, 697 DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP + 1, 698 DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ + 1, 699 }} 700 UNION!{union BINDPTR { 701 [usize; 1], 702 lpfuncdesc lpfuncdesc_mut: *mut FUNCDESC, 703 lpvardesc lpvardesc_mut: *mut VARDESC, 704 lptcomp lptcomp_mut: *mut ITypeComp, 705 }} 706 pub type LPBINDPTR = *mut BINDPTR; 707 RIDL!{#[uuid(0x00020403, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 708 interface ITypeComp(ITypeCompVtbl): IUnknown(IUnknownVtbl) { 709 fn Bind( 710 szName: LPOLESTR, 711 lHashVal: ULONG, 712 wFlags: WORD, 713 ppTInfo: *mut *mut ITypeInfo, 714 pDescKind: *mut DESCKIND, 715 pBindPtr: *mut BINDPTR, 716 ) -> HRESULT, 717 fn BindType( 718 szName: LPOLESTR, 719 lHashVal: ULONG, 720 ppTInfo: *mut *mut ITypeInfo, 721 ppTComp: *mut *mut ITypeComp, 722 ) -> HRESULT, 723 }} 724 ENUM!{enum SYSKIND { 725 SYS_WIN16 = 0, 726 SYS_WIN32, 727 SYS_MAC, 728 SYS_WIN64, 729 }} 730 STRUCT!{struct TLIBATTR { 731 guid: GUID, 732 lcid: LCID, 733 syskind: SYSKIND, 734 wMajorVerNum: WORD, 735 wMinorVerNum: WORD, 736 wLibFlags: WORD, 737 }} 738 RIDL!{#[uuid(0x00020402, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 739 interface ITypeLib(ITypeLibVtbl): IUnknown(IUnknownVtbl) { 740 fn GetTypeInfoCount() -> UINT, 741 fn GetTypeInfo( 742 index: UINT, 743 ppTInfo: *mut *mut ITypeInfo, 744 ) -> HRESULT, 745 fn GetTypeInfoType( 746 index: UINT, 747 pTKind: *mut TYPEKIND, 748 ) -> HRESULT, 749 fn GetTypeInfoOfGuid( 750 guid: REFGUID, 751 ppTInfo: *mut *mut ITypeInfo, 752 ) -> HRESULT, 753 fn GetLibAttr( 754 ppTLibAttr: *mut *mut TLIBATTR, 755 ) -> HRESULT, 756 fn GetTypeComp( 757 ppTComp: *mut *mut ITypeComp, 758 ) -> HRESULT, 759 fn GetDocumentation( 760 index: INT, 761 pbstrName: *mut BSTR, 762 pBstrDocString: *mut BSTR, 763 pdwHelpContext: *mut DWORD, 764 pBstrHelpFile: *mut BSTR, 765 ) -> HRESULT, 766 fn IsName( 767 szNameBuf: LPOLESTR, 768 lHashVal: ULONG, 769 pfName: *mut BOOL, 770 ) -> HRESULT, 771 fn FindName( 772 szNameBuf: LPOLESTR, 773 lHashVal: ULONG, 774 ppTInfo: *mut *mut ITypeInfo, 775 rgMemId: *mut MEMBERID, 776 pcFound: *mut USHORT, 777 ) -> HRESULT, 778 fn ReleaseTLibAttr( 779 pTLibAttr: *const TLIBATTR, 780 ) -> HRESULT, 781 }} 782 RIDL!{#[uuid(0x00020401, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 783 interface ITypeInfo(ITypeInfoVtbl): IUnknown(IUnknownVtbl) { 784 fn GetTypeAttr( 785 ppTypeAttr: *mut *mut TYPEATTR, 786 ) -> HRESULT, 787 fn GetTypeComp( 788 ppTComp: *mut *mut ITypeComp, 789 ) -> HRESULT, 790 fn GetFuncDesc( 791 index: UINT, 792 ppFunDesc: *mut *mut FUNCDESC, 793 ) -> HRESULT, 794 fn GetVarDesc( 795 index: UINT, 796 pPVarDesc: *mut *mut VARDESC, 797 ) -> HRESULT, 798 fn GetNames( 799 memid: MEMBERID, 800 rgBstrNames: *mut BSTR, 801 cMaxNames: UINT, 802 pcNames: *mut UINT, 803 ) -> HRESULT, 804 fn GetRefTypeOfImplType( 805 index: UINT, 806 pRefType: *mut HREFTYPE, 807 ) -> HRESULT, 808 fn GetImplTypeFlags( 809 index: UINT, 810 pImplTypeFlags: *mut INT, 811 ) -> HRESULT, 812 fn GetIDsOfNames( 813 rgszNames: *mut LPOLESTR, 814 cNames: UINT, 815 pMemId: *mut MEMBERID, 816 ) -> HRESULT, 817 fn Invoke( 818 pvInstance: PVOID, 819 memid: MEMBERID, 820 wFlags: WORD, 821 pDispParams: *mut DISPPARAMS, 822 pVarResult: *mut VARIANT, 823 pExcepInfo: *mut EXCEPINFO, 824 puArgErr: *mut UINT, 825 ) -> HRESULT, 826 fn GetDocumentation( 827 memid: MEMBERID, 828 pBstrName: *mut BSTR, 829 pBstrDocString: *mut BSTR, 830 pdwHelpContext: *mut DWORD, 831 pBstrHelpFile: *mut BSTR, 832 ) -> HRESULT, 833 fn GetDllEntry( 834 memid: MEMBERID, 835 invKind: INVOKEKIND, 836 pBstrDllName: *mut BSTR, 837 pBstrName: *mut BSTR, 838 pwOrdinal: *mut WORD, 839 ) -> HRESULT, 840 fn GetRefTypeInfo( 841 hRefType: HREFTYPE, 842 ppTInfo: *mut *mut ITypeInfo, 843 ) -> HRESULT, 844 fn AddressOfMember( 845 memid: MEMBERID, 846 invKind: INVOKEKIND, 847 ppv: *mut PVOID, 848 ) -> HRESULT, 849 fn CreateInstance( 850 pUnkOuter: *mut IUnknown, 851 riid: REFIID, 852 ppvObj: *mut PVOID, 853 ) -> HRESULT, 854 fn GetMops( 855 memid: MEMBERID, 856 pBstrMops: *mut BSTR, 857 ) -> HRESULT, 858 fn GetContainingTypeLib( 859 ppTLib: *mut *mut ITypeLib, 860 pIndex: *mut UINT, 861 ) -> HRESULT, 862 fn ReleaseTypeAttr( 863 pTypeAttr: *mut TYPEATTR, 864 ) -> (), 865 fn ReleaseFuncDesc( 866 pFuncDesc: *mut FUNCDESC, 867 ) -> (), 868 fn ReleaseVarDesc( 869 pVarDesc: *mut VARDESC, 870 ) -> (), 871 }} 872 RIDL!{#[uuid(0x1cf2b120, 0x547d, 0x101b, 0x8e, 0x65, 0x08, 0x00, 0x2b, 0x2b, 0xd1, 0x19)] 873 interface IErrorInfo(IErrorInfoVtbl): IUnknown(IUnknownVtbl) { 874 fn GetGUID( 875 pGUID: *mut GUID, 876 ) -> HRESULT, 877 fn GetSource( 878 pBstrSource: *mut BSTR, 879 ) -> HRESULT, 880 fn GetDescription( 881 pBstrDescription: *mut BSTR, 882 ) -> HRESULT, 883 fn GetHelpFile( 884 pBstrHelpFile: *mut BSTR, 885 ) -> HRESULT, 886 fn GetHelpContext( 887 pdwHelpContext: *mut DWORD, 888 ) -> HRESULT, 889 }} 890 RIDL!{#[uuid(0x22f03340, 0x547d, 0x101b, 0x8e, 0x65, 0x08, 0x00, 0x2b, 0x2b, 0xd1, 0x19)] 891 interface ICreateErrorInfo(ICreateErrorInfoVtbl): IUnknown(IUnknownVtbl) { 892 fn SetGUID( 893 rguid: REFGUID, 894 ) -> HRESULT, 895 fn SetSource( 896 szSource: LPOLESTR, 897 ) -> HRESULT, 898 fn SetDescription( 899 szDescription: LPOLESTR, 900 ) -> HRESULT, 901 fn SetHelpFile( 902 szHelpFile: LPOLESTR, 903 ) -> HRESULT, 904 fn SetHelpContext( 905 dwHelpContext: DWORD, 906 ) -> HRESULT, 907 }} 908 RIDL!{#[uuid(0x3127ca40, 0x446e, 0x11ce, 0x81, 0x35, 0x00, 0xaa, 0x00, 0x4b, 0xb8, 0x51)] 909 interface IErrorLog(IErrorLogVtbl): IUnknown(IUnknownVtbl) { 910 fn AddError( 911 pszPropName: LPCOLESTR, 912 pExcepInfo: *const EXCEPINFO, 913 ) -> HRESULT, 914 }} 915 pub type LPERRORLOG = *mut IErrorLog; 916