1 // Copyright © 2017 winapi-rs developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 5 // All files in the project carrying such notice may not be copied, modified, or distributed 6 // except according to those terms. 7 //! Mappings for the contents of OleAuto.h 8 use ctypes::{c_double, c_float, c_int, c_uint, c_void}; 9 use shared::basetsd::{LONG64, ULONG64}; 10 use shared::minwindef::{BYTE, DWORD, FLOAT, UINT, ULONG, USHORT, WORD}; 11 use shared::wtypes::{BSTR, DATE, DECIMAL, LPBSTR, LPDECIMAL, VARTYPE}; 12 use shared::wtypesbase::{DOUBLE, LPCOLESTR, LPOLESTR, OLECHAR}; 13 use um::minwinbase::LPSYSTEMTIME; 14 use um::oaidl::{DISPID_UNKNOWN, ITypeLib, SAFEARRAY, VARIANT, VARIANTARG}; 15 use um::winnt::{CHAR, HRESULT, INT, LCID, LONG, LPCSTR, SHORT}; 16 extern "system" { SysAllocString( psz: *const OLECHAR, ) -> BSTR17 pub fn SysAllocString( 18 psz: *const OLECHAR, 19 ) -> BSTR; SysReAllocString( pbstr: *mut BSTR, psz: *const OLECHAR, ) -> INT20 pub fn SysReAllocString( 21 pbstr: *mut BSTR, 22 psz: *const OLECHAR, 23 ) -> INT; SysAllocStringLen( strIn: *const OLECHAR, ui: UINT, ) -> BSTR24 pub fn SysAllocStringLen( 25 strIn: *const OLECHAR, 26 ui: UINT, 27 ) -> BSTR; SysReAllocStringLen( pbstr: *mut BSTR, psz: *const OLECHAR, len: c_uint, ) -> INT28 pub fn SysReAllocStringLen( 29 pbstr: *mut BSTR, 30 psz: *const OLECHAR, 31 len: c_uint, 32 ) -> INT; SysFreeString( bstrString: BSTR, )33 pub fn SysFreeString( 34 bstrString: BSTR, 35 ); SysStringLen( pbstr: BSTR, ) -> UINT36 pub fn SysStringLen( 37 pbstr: BSTR, 38 ) -> UINT; SysStringByteLen( bstr: BSTR, ) -> UINT39 pub fn SysStringByteLen( 40 bstr: BSTR, 41 ) -> UINT; SysAllocStringByteLen( psz: LPCSTR, len: UINT, ) -> BSTR42 pub fn SysAllocStringByteLen( 43 psz: LPCSTR, 44 len: UINT, 45 ) -> BSTR; DosDateTimeToVariantTime( wDosDate: USHORT, wDosTime: USHORT, pvtime: *mut DOUBLE, ) -> INT46 pub fn DosDateTimeToVariantTime( 47 wDosDate: USHORT, 48 wDosTime: USHORT, 49 pvtime: *mut DOUBLE, 50 ) -> INT; VariantTimeToDosDateTime( vtime: DOUBLE, pwDosDate: *mut USHORT, pwDosTime: *mut USHORT, ) -> INT51 pub fn VariantTimeToDosDateTime( 52 vtime: DOUBLE, 53 pwDosDate: *mut USHORT, 54 pwDosTime: *mut USHORT, 55 ) -> INT; SystemTimeToVariantTime( lpSystemTime: LPSYSTEMTIME, pvtime: *mut DOUBLE, ) -> INT56 pub fn SystemTimeToVariantTime( 57 lpSystemTime: LPSYSTEMTIME, 58 pvtime: *mut DOUBLE, 59 ) -> INT; VariantTimeToSystemTime( vtime: DOUBLE, lpSystemTime: LPSYSTEMTIME, ) -> INT60 pub fn VariantTimeToSystemTime( 61 vtime: DOUBLE, 62 lpSystemTime: LPSYSTEMTIME, 63 ) -> INT; SafeArrayAccessData( psa: *mut SAFEARRAY, ppvData: *mut *mut c_void, ) -> HRESULT64 pub fn SafeArrayAccessData( 65 psa: *mut SAFEARRAY, 66 ppvData: *mut *mut c_void, 67 ) -> HRESULT; SafeArrayUnaccessData( psa: *mut SAFEARRAY, ) -> HRESULT68 pub fn SafeArrayUnaccessData( 69 psa: *mut SAFEARRAY, 70 ) -> HRESULT; SafeArrayCreateVector( vt: VARTYPE, lLbound: LONG, cElements: ULONG, ) -> *mut SAFEARRAY71 pub fn SafeArrayCreateVector( 72 vt: VARTYPE, 73 lLbound: LONG, 74 cElements: ULONG, 75 ) -> *mut SAFEARRAY; VariantInit( pvarg: *mut VARIANTARG, )76 pub fn VariantInit( 77 pvarg: *mut VARIANTARG, 78 ); VariantClear( pvarg: *mut VARIANTARG, ) -> HRESULT79 pub fn VariantClear( 80 pvarg: *mut VARIANTARG, 81 ) -> HRESULT; VariantCopy( pvargDest: *mut VARIANTARG, pvargSrc: *const VARIANTARG, ) -> HRESULT82 pub fn VariantCopy( 83 pvargDest: *mut VARIANTARG, 84 pvargSrc: *const VARIANTARG, 85 ) -> HRESULT; VariantCopyInd( pvarDest: *mut VARIANT, pvargSrc: *const VARIANTARG, ) -> HRESULT86 pub fn VariantCopyInd( 87 pvarDest: *mut VARIANT, 88 pvargSrc: *const VARIANTARG, 89 ) -> HRESULT; VariantChangeType( pvargDest: *mut VARIANTARG, pvarSrc: *const VARIANTARG, wFlags: USHORT, vt: VARTYPE, ) -> HRESULT90 pub fn VariantChangeType( 91 pvargDest: *mut VARIANTARG, 92 pvarSrc: *const VARIANTARG, 93 wFlags: USHORT, 94 vt: VARTYPE, 95 ) -> HRESULT; VariantChangeTypeEx( pvargDest: *mut VARIANTARG, pvarSrc: *const VARIANTARG, lcid: LCID, wFlags: USHORT, vt: VARTYPE, ) -> HRESULT96 pub fn VariantChangeTypeEx( 97 pvargDest: *mut VARIANTARG, 98 pvarSrc: *const VARIANTARG, 99 lcid: LCID, 100 wFlags: USHORT, 101 vt: VARTYPE, 102 ) -> HRESULT; VarUI1FromI2( sIn: SHORT, pbOut: *mut BYTE, )103 pub fn VarUI1FromI2( 104 sIn: SHORT, 105 pbOut: *mut BYTE, 106 ); VarUI1FromI4( lIn: LONG, pbOut: *mut BYTE, )107 pub fn VarUI1FromI4( 108 lIn: LONG, 109 pbOut: *mut BYTE, 110 ); VarUI1FromI8( i64In: LONG64, pbOut: *mut BYTE, )111 pub fn VarUI1FromI8( 112 i64In: LONG64, 113 pbOut: *mut BYTE, 114 ); VarUI1FromR4( fltIn: FLOAT, pbOut: *mut BYTE, )115 pub fn VarUI1FromR4( 116 fltIn: FLOAT, 117 pbOut: *mut BYTE, 118 ); VarUI1FromR8( dblIn: DOUBLE, pbOut: *mut BYTE, )119 pub fn VarUI1FromR8( 120 dblIn: DOUBLE, 121 pbOut: *mut BYTE, 122 ); VarUI1FromDate( dateIn: DATE, pbOut: *mut BYTE, )123 pub fn VarUI1FromDate( 124 dateIn: DATE, 125 pbOut: *mut BYTE, 126 ); VarUI1FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pbOut: *mut BYTE, )127 pub fn VarUI1FromStr( 128 strIn: LPCOLESTR, 129 lcid: LCID, 130 dwFlags: ULONG, 131 pbOut: *mut BYTE, 132 ); VarUI1FromI1( cIn: CHAR, pbOut: *mut BYTE, )133 pub fn VarUI1FromI1( 134 cIn: CHAR, 135 pbOut: *mut BYTE, 136 ); VarUI1FromUI2( uiIn: USHORT, pbOut: *mut BYTE, )137 pub fn VarUI1FromUI2( 138 uiIn: USHORT, 139 pbOut: *mut BYTE, 140 ); VarUI1FromUI4( ulIn: ULONG, pbOut: *mut BYTE, )141 pub fn VarUI1FromUI4( 142 ulIn: ULONG, 143 pbOut: *mut BYTE, 144 ); VarUI1FromUI8( ui64In: ULONG64, pbOut: *mut BYTE, )145 pub fn VarUI1FromUI8( 146 ui64In: ULONG64, 147 pbOut: *mut BYTE, 148 ); VarUI1FromDec( pdecIn: *const DECIMAL, pbOut: *mut BYTE, )149 pub fn VarUI1FromDec( 150 pdecIn: *const DECIMAL, 151 pbOut: *mut BYTE, 152 ); VarI2FromUI1( bIn: BYTE, psOut: *mut SHORT, )153 pub fn VarI2FromUI1( 154 bIn: BYTE, 155 psOut: *mut SHORT, 156 ); VarI2FromI4( lIn: LONG, psOut: *mut SHORT, )157 pub fn VarI2FromI4( 158 lIn: LONG, 159 psOut: *mut SHORT, 160 ); VarI2FromI8( i64In: LONG64, psOut: *mut SHORT, )161 pub fn VarI2FromI8( 162 i64In: LONG64, 163 psOut: *mut SHORT, 164 ); VarI2FromR4( fltIn: FLOAT, psOut: *mut SHORT, )165 pub fn VarI2FromR4( 166 fltIn: FLOAT, 167 psOut: *mut SHORT, 168 ); VarI2FromR8( dblIn: DOUBLE, psOut: *mut SHORT, )169 pub fn VarI2FromR8( 170 dblIn: DOUBLE, 171 psOut: *mut SHORT, 172 ); VarI2FromDate( dateIn: DATE, psOut: *mut SHORT, )173 pub fn VarI2FromDate( 174 dateIn: DATE, 175 psOut: *mut SHORT, 176 ); VarI2FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, psOut: *mut SHORT, )177 pub fn VarI2FromStr( 178 strIn: LPCOLESTR, 179 lcid: LCID, 180 dwFlags: ULONG, 181 psOut: *mut SHORT, 182 ); VarI2FromI1( cIn: CHAR, psOut: *mut SHORT, )183 pub fn VarI2FromI1( 184 cIn: CHAR, 185 psOut: *mut SHORT, 186 ); VarI2FromUI2( uiIn: USHORT, psOut: *mut SHORT, )187 pub fn VarI2FromUI2( 188 uiIn: USHORT, 189 psOut: *mut SHORT, 190 ); VarI2FromUI4( ulIn: ULONG, psOut: *mut SHORT, )191 pub fn VarI2FromUI4( 192 ulIn: ULONG, 193 psOut: *mut SHORT, 194 ); VarI2FromUI8( ui64In: ULONG64, psOut: *mut SHORT, )195 pub fn VarI2FromUI8( 196 ui64In: ULONG64, 197 psOut: *mut SHORT, 198 ); VarI2FromDec( pdecIn: *const DECIMAL, psOut: *mut SHORT, )199 pub fn VarI2FromDec( 200 pdecIn: *const DECIMAL, 201 psOut: *mut SHORT, 202 ); VarI4FromUI1( bIn: BYTE, plOut: *mut LONG, )203 pub fn VarI4FromUI1( 204 bIn: BYTE, 205 plOut: *mut LONG, 206 ); VarI4FromI2( sIn: SHORT, plOut: *mut LONG, )207 pub fn VarI4FromI2( 208 sIn: SHORT, 209 plOut: *mut LONG, 210 ); VarI4FromI8( i64In: LONG64, plOut: *mut LONG, )211 pub fn VarI4FromI8( 212 i64In: LONG64, 213 plOut: *mut LONG, 214 ); VarI4FromR4( fltIn: FLOAT, plOut: *mut LONG, )215 pub fn VarI4FromR4( 216 fltIn: FLOAT, 217 plOut: *mut LONG, 218 ); VarI4FromR8( dblIn: DOUBLE, plOut: *mut LONG, )219 pub fn VarI4FromR8( 220 dblIn: DOUBLE, 221 plOut: *mut LONG, 222 ); VarI4FromDate( dateIn: DATE, plOut: *mut LONG, )223 pub fn VarI4FromDate( 224 dateIn: DATE, 225 plOut: *mut LONG, 226 ); VarI4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, plOut: *mut LONG, )227 pub fn VarI4FromStr( 228 strIn: LPCOLESTR, 229 lcid: LCID, 230 dwFlags: ULONG, 231 plOut: *mut LONG, 232 ); VarI4FromI1( cIn: CHAR, plOut: *mut LONG, )233 pub fn VarI4FromI1( 234 cIn: CHAR, 235 plOut: *mut LONG, 236 ); VarI4FromUI2( uiIn: USHORT, plOut: *mut LONG, )237 pub fn VarI4FromUI2( 238 uiIn: USHORT, 239 plOut: *mut LONG, 240 ); VarI4FromUI4( ulIn: ULONG, plOut: *mut LONG, )241 pub fn VarI4FromUI4( 242 ulIn: ULONG, 243 plOut: *mut LONG, 244 ); VarI4FromUI8( ui64In: ULONG64, plOut: *mut LONG, )245 pub fn VarI4FromUI8( 246 ui64In: ULONG64, 247 plOut: *mut LONG, 248 ); VarI4FromDec( pdecIn: *const DECIMAL, plOut: *mut LONG, )249 pub fn VarI4FromDec( 250 pdecIn: *const DECIMAL, 251 plOut: *mut LONG, 252 ); VarI8FromUI1( bIn: BYTE, pi64Out: *mut LONG64, )253 pub fn VarI8FromUI1( 254 bIn: BYTE, 255 pi64Out: *mut LONG64, 256 ); VarI8FromI2( sIn: SHORT, pi64Out: *mut LONG64, )257 pub fn VarI8FromI2( 258 sIn: SHORT, 259 pi64Out: *mut LONG64, 260 ); VarI8FromR4( fltIn: FLOAT, pi64Out: *mut LONG64, )261 pub fn VarI8FromR4( 262 fltIn: FLOAT, 263 pi64Out: *mut LONG64, 264 ); VarI8FromR8( dblIn: DOUBLE, pi64Out: *mut LONG64, )265 pub fn VarI8FromR8( 266 dblIn: DOUBLE, 267 pi64Out: *mut LONG64, 268 ); VarI8FromDate( dateIn: DATE, pi64Out: *mut LONG64, )269 pub fn VarI8FromDate( 270 dateIn: DATE, 271 pi64Out: *mut LONG64, 272 ); VarI8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pi64Out: *mut LONG64, )273 pub fn VarI8FromStr( 274 strIn: LPCOLESTR, 275 lcid: LCID, 276 dwFlags: ULONG, 277 pi64Out: *mut LONG64, 278 ); VarI8FromI1( cIn: CHAR, pi64Out: *mut LONG64, )279 pub fn VarI8FromI1( 280 cIn: CHAR, 281 pi64Out: *mut LONG64, 282 ); VarI8FromUI2( uiIn: USHORT, pi64Out: *mut LONG64, )283 pub fn VarI8FromUI2( 284 uiIn: USHORT, 285 pi64Out: *mut LONG64, 286 ); VarI8FromUI4( ulIn: ULONG, pi64Out: *mut LONG64, )287 pub fn VarI8FromUI4( 288 ulIn: ULONG, 289 pi64Out: *mut LONG64, 290 ); VarI8FromUI8( ui64In: ULONG64, pi64Out: *mut LONG64, )291 pub fn VarI8FromUI8( 292 ui64In: ULONG64, 293 pi64Out: *mut LONG64, 294 ); VarI8FromDec( pdecIn: *const DECIMAL, pi64Out: *mut LONG64, )295 pub fn VarI8FromDec( 296 pdecIn: *const DECIMAL, 297 pi64Out: *mut LONG64, 298 ); VarR4FromUI1( bIn: BYTE, pfltOut: *mut FLOAT, )299 pub fn VarR4FromUI1( 300 bIn: BYTE, 301 pfltOut: *mut FLOAT, 302 ); VarR4FromI2( sIn: SHORT, pfltOut: *mut FLOAT, )303 pub fn VarR4FromI2( 304 sIn: SHORT, 305 pfltOut: *mut FLOAT, 306 ); VarR4FromI4( lIn: LONG, pfltOut: *mut FLOAT, )307 pub fn VarR4FromI4( 308 lIn: LONG, 309 pfltOut: *mut FLOAT, 310 ); VarR4FromI8( i64In: LONG64, pfltOut: *mut FLOAT, )311 pub fn VarR4FromI8( 312 i64In: LONG64, 313 pfltOut: *mut FLOAT, 314 ); VarR4FromR8( dblIn: DOUBLE, pfltOut: *mut FLOAT, )315 pub fn VarR4FromR8( 316 dblIn: DOUBLE, 317 pfltOut: *mut FLOAT, 318 ); VarR4FromDate( dateIn: DATE, pfltOut: *mut FLOAT, )319 pub fn VarR4FromDate( 320 dateIn: DATE, 321 pfltOut: *mut FLOAT, 322 ); VarR4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pfltOut: *mut FLOAT, )323 pub fn VarR4FromStr( 324 strIn: LPCOLESTR, 325 lcid: LCID, 326 dwFlags: ULONG, 327 pfltOut: *mut FLOAT, 328 ); VarR4FromI1( cIn: CHAR, pfltOut: *mut FLOAT, )329 pub fn VarR4FromI1( 330 cIn: CHAR, 331 pfltOut: *mut FLOAT, 332 ); VarR4FromUI2( uiIn: USHORT, pfltOut: *mut FLOAT, )333 pub fn VarR4FromUI2( 334 uiIn: USHORT, 335 pfltOut: *mut FLOAT, 336 ); VarR4FromUI4( ulIn: ULONG, pfltOut: *mut FLOAT, )337 pub fn VarR4FromUI4( 338 ulIn: ULONG, 339 pfltOut: *mut FLOAT, 340 ); VarR4FromUI8( ui64In: ULONG64, pfltOut: *mut FLOAT, )341 pub fn VarR4FromUI8( 342 ui64In: ULONG64, 343 pfltOut: *mut FLOAT, 344 ); VarR4FromDec( pdecIn: *const DECIMAL, pfltOut: *mut FLOAT, )345 pub fn VarR4FromDec( 346 pdecIn: *const DECIMAL, 347 pfltOut: *mut FLOAT, 348 ); VarR8FromUI1( bIn: BYTE, pdblOut: *mut DOUBLE, )349 pub fn VarR8FromUI1( 350 bIn: BYTE, 351 pdblOut: *mut DOUBLE, 352 ); VarR8FromI2( sIn: SHORT, pdblOut: *mut DOUBLE, )353 pub fn VarR8FromI2( 354 sIn: SHORT, 355 pdblOut: *mut DOUBLE, 356 ); VarR8FromI4( lIn: LONG, pdblOut: *mut DOUBLE, )357 pub fn VarR8FromI4( 358 lIn: LONG, 359 pdblOut: *mut DOUBLE, 360 ); VarR8FromI8( i64In: LONG64, pdblOut: *mut DOUBLE, )361 pub fn VarR8FromI8( 362 i64In: LONG64, 363 pdblOut: *mut DOUBLE, 364 ); VarR8FromR4( fltIn: FLOAT, pdblOut: *mut DOUBLE, )365 pub fn VarR8FromR4( 366 fltIn: FLOAT, 367 pdblOut: *mut DOUBLE, 368 ); VarR8FromDate( dateIn: DATE, pdblOut: *mut DOUBLE, )369 pub fn VarR8FromDate( 370 dateIn: DATE, 371 pdblOut: *mut DOUBLE, 372 ); VarR8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdblOut: *mut DOUBLE, )373 pub fn VarR8FromStr( 374 strIn: LPCOLESTR, 375 lcid: LCID, 376 dwFlags: ULONG, 377 pdblOut: *mut DOUBLE, 378 ); VarR8FromI1( cIn: CHAR, pdblOut: *mut DOUBLE, )379 pub fn VarR8FromI1( 380 cIn: CHAR, 381 pdblOut: *mut DOUBLE, 382 ); VarR8FromUI2( uiIn: USHORT, pdblOut: *mut DOUBLE, )383 pub fn VarR8FromUI2( 384 uiIn: USHORT, 385 pdblOut: *mut DOUBLE, 386 ); VarR8FromUI4( ulIn: ULONG, pdblOut: *mut DOUBLE, )387 pub fn VarR8FromUI4( 388 ulIn: ULONG, 389 pdblOut: *mut DOUBLE, 390 ); VarR8FromUI8( ui64In: ULONG64, pdblOut: *mut DOUBLE, )391 pub fn VarR8FromUI8( 392 ui64In: ULONG64, 393 pdblOut: *mut DOUBLE, 394 ); VarR8FromDec( pdecIn: *const DECIMAL, pdblOut: *mut DOUBLE, )395 pub fn VarR8FromDec( 396 pdecIn: *const DECIMAL, 397 pdblOut: *mut DOUBLE, 398 ); VarDateFromUI1( bIn: BYTE, pdateOut: *mut DATE, )399 pub fn VarDateFromUI1( 400 bIn: BYTE, 401 pdateOut: *mut DATE, 402 ); VarDateFromI2( sIn: SHORT, pdateOut: *mut DATE, )403 pub fn VarDateFromI2( 404 sIn: SHORT, 405 pdateOut: *mut DATE, 406 ); VarDateFromI4( lIn: LONG, pdateOut: *mut DATE, )407 pub fn VarDateFromI4( 408 lIn: LONG, 409 pdateOut: *mut DATE, 410 ); VarDateFromI8( i64In: LONG64, pdateOut: *mut DATE, )411 pub fn VarDateFromI8( 412 i64In: LONG64, 413 pdateOut: *mut DATE, 414 ); VarDateFromR4( fltIn: FLOAT, pdateOut: *mut DATE, )415 pub fn VarDateFromR4( 416 fltIn: FLOAT, 417 pdateOut: *mut DATE, 418 ); VarDateFromR8( dblIn: DOUBLE, pdateOut: *mut DATE, )419 pub fn VarDateFromR8( 420 dblIn: DOUBLE, 421 pdateOut: *mut DATE, 422 ); VarDateFromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdateOut: *mut DATE, )423 pub fn VarDateFromStr( 424 strIn: LPCOLESTR, 425 lcid: LCID, 426 dwFlags: ULONG, 427 pdateOut: *mut DATE, 428 ); VarDateFromI1( cIn: CHAR, pdateOut: *mut DATE, )429 pub fn VarDateFromI1( 430 cIn: CHAR, 431 pdateOut: *mut DATE, 432 ); VarDateFromUI2( uiIn: USHORT, pdateOut: *mut DATE, )433 pub fn VarDateFromUI2( 434 uiIn: USHORT, 435 pdateOut: *mut DATE, 436 ); VarDateFromUI4( ulIn: ULONG, pdateOut: *mut DATE, )437 pub fn VarDateFromUI4( 438 ulIn: ULONG, 439 pdateOut: *mut DATE, 440 ); VarDateFromUI8( ui64In: ULONG64, pdateOut: *mut DATE, )441 pub fn VarDateFromUI8( 442 ui64In: ULONG64, 443 pdateOut: *mut DATE, 444 ); VarDateFromDec( pdecIn: *const DECIMAL, pdateOut: *mut DATE, )445 pub fn VarDateFromDec( 446 pdecIn: *const DECIMAL, 447 pdateOut: *mut DATE, 448 ); VarBstrFromUI1( bVal: BYTE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )449 pub fn VarBstrFromUI1( 450 bVal: BYTE, 451 lcid: LCID, 452 dwFlags: ULONG, 453 pbstrOut: *mut BSTR, 454 ); VarBstrFromI2( iVal: SHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )455 pub fn VarBstrFromI2( 456 iVal: SHORT, 457 lcid: LCID, 458 dwFlags: ULONG, 459 pbstrOut: *mut BSTR, 460 ); VarBstrFromI4( lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )461 pub fn VarBstrFromI4( 462 lIn: LONG, 463 lcid: LCID, 464 dwFlags: ULONG, 465 pbstrOut: *mut BSTR, 466 ); VarBstrFromI8( i64In: LONG64, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )467 pub fn VarBstrFromI8( 468 i64In: LONG64, 469 lcid: LCID, 470 dwFlags: ULONG, 471 pbstrOut: *mut BSTR, 472 ); VarBstrFromR4( fltIn: FLOAT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )473 pub fn VarBstrFromR4( 474 fltIn: FLOAT, 475 lcid: LCID, 476 dwFlags: ULONG, 477 pbstrOut: *mut BSTR, 478 ); VarBstrFromR8( dblIn: DOUBLE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )479 pub fn VarBstrFromR8( 480 dblIn: DOUBLE, 481 lcid: LCID, 482 dwFlags: ULONG, 483 pbstrOut: *mut BSTR, 484 ); VarBstrFromDate( dateIn: DATE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )485 pub fn VarBstrFromDate( 486 dateIn: DATE, 487 lcid: LCID, 488 dwFlags: ULONG, 489 pbstrOut: *mut BSTR, 490 ); VarBstrFromI1( cIn: CHAR, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )491 pub fn VarBstrFromI1( 492 cIn: CHAR, 493 lcid: LCID, 494 dwFlags: ULONG, 495 pbstrOut: *mut BSTR, 496 ); VarBstrFromUI2( uiIn: USHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )497 pub fn VarBstrFromUI2( 498 uiIn: USHORT, 499 lcid: LCID, 500 dwFlags: ULONG, 501 pbstrOut: *mut BSTR, 502 ); VarBstrFromUI4( ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )503 pub fn VarBstrFromUI4( 504 ulIn: ULONG, 505 lcid: LCID, 506 dwFlags: ULONG, 507 pbstrOut: *mut BSTR, 508 ); VarBstrFromUI8( ui64In: ULONG64, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )509 pub fn VarBstrFromUI8( 510 ui64In: ULONG64, 511 lcid: LCID, 512 dwFlags: ULONG, 513 pbstrOut: *mut BSTR, 514 ); VarBstrFromDec( pdecIn: *const DECIMAL, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )515 pub fn VarBstrFromDec( 516 pdecIn: *const DECIMAL, 517 lcid: LCID, 518 dwFlags: ULONG, 519 pbstrOut: *mut BSTR, 520 ); VarUI2FromUI1( bIn: BYTE, puiOut: *mut USHORT, )521 pub fn VarUI2FromUI1( 522 bIn: BYTE, 523 puiOut: *mut USHORT, 524 ); VarUI2FromI2( uiIn: SHORT, puiOut: *mut USHORT, )525 pub fn VarUI2FromI2( 526 uiIn: SHORT, 527 puiOut: *mut USHORT, 528 ); VarUI2FromI4( lIn: LONG, puiOut: *mut USHORT, )529 pub fn VarUI2FromI4( 530 lIn: LONG, 531 puiOut: *mut USHORT, 532 ); VarUI2FromI8( i64In: LONG64, puiOut: *mut USHORT, )533 pub fn VarUI2FromI8( 534 i64In: LONG64, 535 puiOut: *mut USHORT, 536 ); VarUI2FromR4( fltIn: FLOAT, puiOut: *mut USHORT, )537 pub fn VarUI2FromR4( 538 fltIn: FLOAT, 539 puiOut: *mut USHORT, 540 ); VarUI2FromR8( dblIn: DOUBLE, puiOut: *mut USHORT, )541 pub fn VarUI2FromR8( 542 dblIn: DOUBLE, 543 puiOut: *mut USHORT, 544 ); VarUI2FromDate( dateIn: DATE, puiOut: *mut USHORT, )545 pub fn VarUI2FromDate( 546 dateIn: DATE, 547 puiOut: *mut USHORT, 548 ); VarUI2FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, puiOut: *mut USHORT, )549 pub fn VarUI2FromStr( 550 strIn: LPCOLESTR, 551 lcid: LCID, 552 dwFlags: ULONG, 553 puiOut: *mut USHORT, 554 ); VarUI2FromI1( cIn: CHAR, puiOut: *mut USHORT, )555 pub fn VarUI2FromI1( 556 cIn: CHAR, 557 puiOut: *mut USHORT, 558 ); VarUI2FromUI4( ulIn: ULONG, puiOut: *mut USHORT, )559 pub fn VarUI2FromUI4( 560 ulIn: ULONG, 561 puiOut: *mut USHORT, 562 ); VarUI2FromUI8( i64In: ULONG64, puiOut: *mut USHORT, )563 pub fn VarUI2FromUI8( 564 i64In: ULONG64, 565 puiOut: *mut USHORT, 566 ); VarUI2FromDec( pdecIn: *const DECIMAL, puiOut: *mut USHORT, )567 pub fn VarUI2FromDec( 568 pdecIn: *const DECIMAL, 569 puiOut: *mut USHORT, 570 ); VarUI4FromUI1( bIn: BYTE, pulOut: *mut ULONG, )571 pub fn VarUI4FromUI1( 572 bIn: BYTE, 573 pulOut: *mut ULONG, 574 ); VarUI4FromI2( uiIn: SHORT, pulOut: *mut ULONG, )575 pub fn VarUI4FromI2( 576 uiIn: SHORT, 577 pulOut: *mut ULONG, 578 ); VarUI4FromI4( lIn: LONG, pulOut: *mut ULONG, )579 pub fn VarUI4FromI4( 580 lIn: LONG, 581 pulOut: *mut ULONG, 582 ); VarUI4FromI8( i64In: LONG64, plOut: *mut ULONG, )583 pub fn VarUI4FromI8( 584 i64In: LONG64, 585 plOut: *mut ULONG, 586 ); VarUI4FromR4( fltIn: FLOAT, pulOut: *mut ULONG, )587 pub fn VarUI4FromR4( 588 fltIn: FLOAT, 589 pulOut: *mut ULONG, 590 ); VarUI4FromR8( dblIn: DOUBLE, pulOut: *mut ULONG, )591 pub fn VarUI4FromR8( 592 dblIn: DOUBLE, 593 pulOut: *mut ULONG, 594 ); VarUI4FromDate( dateIn: DATE, pulOut: *mut ULONG, )595 pub fn VarUI4FromDate( 596 dateIn: DATE, 597 pulOut: *mut ULONG, 598 ); VarUI4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pulOut: *mut ULONG, )599 pub fn VarUI4FromStr( 600 strIn: LPCOLESTR, 601 lcid: LCID, 602 dwFlags: ULONG, 603 pulOut: *mut ULONG, 604 ); VarUI4FromI1( cIn: CHAR, pulOut: *mut ULONG, )605 pub fn VarUI4FromI1( 606 cIn: CHAR, 607 pulOut: *mut ULONG, 608 ); VarUI4FromUI2( uiIn: USHORT, pulOut: *mut ULONG, )609 pub fn VarUI4FromUI2( 610 uiIn: USHORT, 611 pulOut: *mut ULONG, 612 ); VarUI4FromUI8( ui64In: ULONG64, plOut: *mut ULONG, )613 pub fn VarUI4FromUI8( 614 ui64In: ULONG64, 615 plOut: *mut ULONG, 616 ); VarUI4FromDec( pdecIn: *const DECIMAL, pulOut: *mut ULONG, )617 pub fn VarUI4FromDec( 618 pdecIn: *const DECIMAL, 619 pulOut: *mut ULONG, 620 ); VarUI8FromUI1( bIn: BYTE, pi64Out: *mut ULONG64, )621 pub fn VarUI8FromUI1( 622 bIn: BYTE, 623 pi64Out: *mut ULONG64, 624 ); VarUI8FromI2( sIn: SHORT, pi64Out: *mut ULONG64, )625 pub fn VarUI8FromI2( 626 sIn: SHORT, 627 pi64Out: *mut ULONG64, 628 ); VarUI8FromI4( lIn: LONG, pi64Out: *mut ULONG64, )629 pub fn VarUI8FromI4( 630 lIn: LONG, 631 pi64Out: *mut ULONG64, 632 ); VarUI8FromI8( ui64In: LONG64, pi64Out: *mut ULONG64, )633 pub fn VarUI8FromI8( 634 ui64In: LONG64, 635 pi64Out: *mut ULONG64, 636 ); VarUI8FromR4( fltIn: FLOAT, pi64Out: *mut ULONG64, )637 pub fn VarUI8FromR4( 638 fltIn: FLOAT, 639 pi64Out: *mut ULONG64, 640 ); VarUI8FromR8( dblIn: DOUBLE, pi64Out: *mut ULONG64, )641 pub fn VarUI8FromR8( 642 dblIn: DOUBLE, 643 pi64Out: *mut ULONG64, 644 ); VarUI8FromDate( dateIn: DATE, pi64Out: *mut ULONG64, )645 pub fn VarUI8FromDate( 646 dateIn: DATE, 647 pi64Out: *mut ULONG64, 648 ); VarUI8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pi64Out: *mut ULONG64, )649 pub fn VarUI8FromStr( 650 strIn: LPCOLESTR, 651 lcid: LCID, 652 dwFlags: ULONG, 653 pi64Out: *mut ULONG64, 654 ); VarUI8FromI1( cIn: CHAR, pi64Out: *mut ULONG64, )655 pub fn VarUI8FromI1( 656 cIn: CHAR, 657 pi64Out: *mut ULONG64, 658 ); VarUI8FromUI2( uiIn: USHORT, pi64Out: *mut ULONG64, )659 pub fn VarUI8FromUI2( 660 uiIn: USHORT, 661 pi64Out: *mut ULONG64, 662 ); VarUI8FromUI4( ulIn: ULONG, pi64Out: *mut ULONG64, )663 pub fn VarUI8FromUI4( 664 ulIn: ULONG, 665 pi64Out: *mut ULONG64, 666 ); VarUI8FromDec( pdecIn: *const DECIMAL, pi64Out: *mut ULONG64, )667 pub fn VarUI8FromDec( 668 pdecIn: *const DECIMAL, 669 pi64Out: *mut ULONG64, 670 ); VarDecFromUI1( bIn: BYTE, pdecOut: *mut DECIMAL, )671 pub fn VarDecFromUI1( 672 bIn: BYTE, 673 pdecOut: *mut DECIMAL, 674 ); VarDecFromI2( uiIn: SHORT, pdecOut: *mut DECIMAL, )675 pub fn VarDecFromI2( 676 uiIn: SHORT, 677 pdecOut: *mut DECIMAL, 678 ); VarDecFromI4( lIn: LONG, pdecOut: *mut DECIMAL, )679 pub fn VarDecFromI4( 680 lIn: LONG, 681 pdecOut: *mut DECIMAL, 682 ); VarDecFromI8( i64In: LONG64, pdecOut: *mut DECIMAL, )683 pub fn VarDecFromI8( 684 i64In: LONG64, 685 pdecOut: *mut DECIMAL, 686 ); VarDecFromR4( fltIn: FLOAT, pdecOut: *mut DECIMAL, )687 pub fn VarDecFromR4( 688 fltIn: FLOAT, 689 pdecOut: *mut DECIMAL, 690 ); VarDecFromR8( dblIn: DOUBLE, pdecOut: *mut DECIMAL, )691 pub fn VarDecFromR8( 692 dblIn: DOUBLE, 693 pdecOut: *mut DECIMAL, 694 ); VarDecFromDate( dateIn: DATE, pdecOut: *mut DECIMAL, )695 pub fn VarDecFromDate( 696 dateIn: DATE, 697 pdecOut: *mut DECIMAL, 698 ); VarDecFromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdecOut: *mut DECIMAL, )699 pub fn VarDecFromStr( 700 strIn: LPCOLESTR, 701 lcid: LCID, 702 dwFlags: ULONG, 703 pdecOut: *mut DECIMAL, 704 ); VarDecFromI1( cIn: CHAR, pdecOut: *mut DECIMAL, )705 pub fn VarDecFromI1( 706 cIn: CHAR, 707 pdecOut: *mut DECIMAL, 708 ); VarDecFromUI2( uiIn: USHORT, pdecOut: *mut DECIMAL, )709 pub fn VarDecFromUI2( 710 uiIn: USHORT, 711 pdecOut: *mut DECIMAL, 712 ); VarDecFromUI4( ulIn: ULONG, pdecOut: *mut DECIMAL, )713 pub fn VarDecFromUI4( 714 ulIn: ULONG, 715 pdecOut: *mut DECIMAL, 716 ); VarDecFromUI8( ui64In: ULONG64, pdecOut: *mut DECIMAL, )717 pub fn VarDecFromUI8( 718 ui64In: ULONG64, 719 pdecOut: *mut DECIMAL, 720 ); VarDecAdd( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )721 pub fn VarDecAdd( 722 pdecLeft: LPDECIMAL, 723 pdecRight: LPDECIMAL, 724 pdecResult: LPDECIMAL, 725 ); VarDecDiv( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )726 pub fn VarDecDiv( 727 pdecLeft: LPDECIMAL, 728 pdecRight: LPDECIMAL, 729 pdecResult: LPDECIMAL, 730 ); VarDecMul( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )731 pub fn VarDecMul( 732 pdecLeft: LPDECIMAL, 733 pdecRight: LPDECIMAL, 734 pdecResult: LPDECIMAL, 735 ); VarDecSub( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )736 pub fn VarDecSub( 737 pdecLeft: LPDECIMAL, 738 pdecRight: LPDECIMAL, 739 pdecResult: LPDECIMAL, 740 ); VarDecAbs( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )741 pub fn VarDecAbs( 742 pdecIn: LPDECIMAL, 743 pdecResult: LPDECIMAL, 744 ); VarDecFix( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )745 pub fn VarDecFix( 746 pdecIn: LPDECIMAL, 747 pdecResult: LPDECIMAL, 748 ); VarDecInt( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )749 pub fn VarDecInt( 750 pdecIn: LPDECIMAL, 751 pdecResult: LPDECIMAL, 752 ); VarDecNeg( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )753 pub fn VarDecNeg( 754 pdecIn: LPDECIMAL, 755 pdecResult: LPDECIMAL, 756 ); VarDecRound( pdecIn: LPDECIMAL, cDecimals: c_int, pdecResult: LPDECIMAL, )757 pub fn VarDecRound( 758 pdecIn: LPDECIMAL, 759 cDecimals: c_int, 760 pdecResult: LPDECIMAL, 761 ); VarDecCmp( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, )762 pub fn VarDecCmp( 763 pdecLeft: LPDECIMAL, 764 pdecRight: LPDECIMAL, 765 ); VarDecCmpR8( pdecLeft: LPDECIMAL, dblRight: c_double, )766 pub fn VarDecCmpR8( 767 pdecLeft: LPDECIMAL, 768 dblRight: c_double, 769 ); VarBstrCat( bstrLeft: BSTR, bstrRight: BSTR, pbstrResult: LPBSTR, )770 pub fn VarBstrCat( 771 bstrLeft: BSTR, 772 bstrRight: BSTR, 773 pbstrResult: LPBSTR, 774 ); VarBstrCmp( bstrLeft: BSTR, bstrRight: BSTR, lcid: LCID, dwFlags: ULONG, )775 pub fn VarBstrCmp( 776 bstrLeft: BSTR, 777 bstrRight: BSTR, 778 lcid: LCID, 779 dwFlags: ULONG, 780 ); VarR8Pow( dblLeft: c_double, dblRight: c_double, pdblResult: *mut c_double, )781 pub fn VarR8Pow( 782 dblLeft: c_double, 783 dblRight: c_double, 784 pdblResult: *mut c_double, 785 ); VarR4CmpR8( fltLeft: c_float, dblRight: c_double, )786 pub fn VarR4CmpR8( 787 fltLeft: c_float, 788 dblRight: c_double, 789 ); VarR8Round( dblIn: c_double, cDecimals: c_int, pdblResult: *mut c_double, )790 pub fn VarR8Round( 791 dblIn: c_double, 792 cDecimals: c_int, 793 pdblResult: *mut c_double, 794 ); GetAltMonthNames( lcid: LCID, prgp: *mut LPOLESTR, )795 pub fn GetAltMonthNames( 796 lcid: LCID, 797 prgp: *mut LPOLESTR, 798 ); 799 } 800 pub type DISPID = LONG; 801 pub type MEMBERID = DISPID; 802 pub const MEMBERID_NIL: MEMBERID = DISPID_UNKNOWN; 803 pub const DISPATCH_METHOD: WORD = 0x1; 804 pub const DISPATCH_PROPERTYGET: WORD = 0x2; 805 pub const DISPATCH_PROPERTYPUT: WORD = 0x4; 806 pub const DISPATCH_PROPERTYPUTREF: WORD = 0x8; 807 ENUM!{enum REGKIND { 808 REGKIND_DEFAULT = 0, 809 REGKIND_REGISTER, 810 REGKIND_NONE, 811 }} 812 extern "system" { LoadTypeLibEx( szFile: LPCOLESTR, regkind: REGKIND, pptlib: *mut *mut ITypeLib, ) -> HRESULT813 pub fn LoadTypeLibEx( 814 szFile: LPCOLESTR, 815 regkind: REGKIND, 816 pptlib: *mut *mut ITypeLib, 817 ) -> HRESULT; RevokeActiveObject( dwRegister: DWORD, pvReserved: *mut c_void, )818 pub fn RevokeActiveObject( 819 dwRegister: DWORD, 820 pvReserved: *mut c_void, 821 ); OaBuildVersion() -> ULONG822 pub fn OaBuildVersion() -> ULONG; OaEnablePerUserTLibRegistration()823 pub fn OaEnablePerUserTLibRegistration(); 824 } 825