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 use ctypes
::{c_int, c_void}
;
7 use shared
::basetsd
::{SIZE_T, ULONG_PTR}
;
8 use shared
::guiddef
::{CLSID, GUID, IID, REFCLSID, REFGUID, REFIID}
;
9 use shared
::minwindef
::{BOOL, BYTE, DWORD, FILETIME, ULONG}
;
10 use shared
::wtypesbase
::{COAUTHINFO, DOUBLE, LPOLESTR, OLECHAR}
;
11 use um
::unknwnbase
::{IUnknown, IUnknownVtbl}
;
12 use um
::winnt
::{HANDLE, HRESULT, LARGE_INTEGER, LONG, LPWSTR, ULARGE_INTEGER}
;
13 STRUCT
!{struct COSERVERINFO
{
16 pAuthInfo
: *mut COAUTHINFO
,
19 pub type LPMARSHAL
= *mut IMarshal
;
20 RIDL
!{#[uuid(0x00000003, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
21 interface
IMarshal(IMarshalVtbl
): IUnknown(IUnknownVtbl
) {
26 pvDestContext
: *mut c_void
,
34 pvDestContext
: *mut c_void
,
43 pvDestContext
: *mut c_void
,
46 fn UnmarshalInterface(
49 ppv
: *mut *mut c_void
,
51 fn ReleaseMarshalData(
58 RIDL
!{#[uuid(0xecc8691b, 0xc1db, 0x4dc0, 0x85, 0x5e, 0x65, 0xf6, 0xc5, 0x51, 0xaf, 0x49)]
59 interface
INoMarshal(INoMarshalVtbl
): IUnknown(IUnknownVtbl
) {}
}
60 RIDL
!{#[uuid(0x94ea2b94, 0xe9cc, 0x49e0, 0xc0, 0xff, 0xee, 0x64, 0xca, 0x8f, 0x5b, 0x90)]
61 interface
IAgileObject(IAgileObjectVtbl
): IUnknown(IUnknownVtbl
) {}
}
62 ENUM
!{enum ACTIVATIONTYPE
{
63 ACTIVATIONTYPE_UNCATEGORIZED
= 0,
64 ACTIVATIONTYPE_FROM_MONIKER
= 0x1,
65 ACTIVATIONTYPE_FROM_DATA
= 0x2,
66 ACTIVATIONTYPE_FROM_STORAGE
= 0x4,
67 ACTIVATIONTYPE_FROM_STREAM
= 0x8,
68 ACTIVATIONTYPE_FROM_FILE
= 0x10,
70 RIDL
!{#[uuid(0x00000017, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
71 interface
IActivationFilter(IActivationFilterVtbl
): IUnknown(IUnknownVtbl
) {
73 dwActivationType
: DWORD
,
75 pReplacementClsId
: *mut CLSID
,
78 pub type LPMARSHAL2
= *mut IMarshal2
;
79 RIDL
!{#[uuid(0x000001cf, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
80 interface
IMarshal2(IMarshal2Vtbl
): IMarshal(IMarshalVtbl
) {}
}
81 pub type LPMALLOC
= *mut IMalloc
;
82 RIDL
!{#[uuid(0x00000002, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
83 interface
IMalloc(IMallocVtbl
): IUnknown(IUnknownVtbl
) {
100 fn HeapMinimize() -> (),
102 pub type LPSTDMARSHALINFO
= IStdMarshalInfo
;
103 RIDL
!{#[uuid(0x00000018, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
104 interface
IStdMarshalInfo(IStdMarshalInfoVtbl
): IUnknown(IUnknownVtbl
) {
105 fn GetClassForHandler(
106 dwDestContext
: DWORD
,
107 pvDestContext
: *mut c_void
,
112 EXTCONN_STRONG
= 0x1,
114 EXTCONN_CALLABLE
= 0x4,
116 RIDL
!{#[uuid(0x00000019, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
117 interface
IExternalConnection(IExternalConnectionVtbl
): IUnknown(IUnknownVtbl
) {
122 fn ReleaseConnection(
125 fLastReleaseCloses
: BOOL
,
128 pub type LPMULTIQI
= *mut IMultiQI
;
129 STRUCT
!{struct MULTI_QI
{
134 RIDL
!{#[uuid(0x00000020, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
135 interface
IMultiQI(IMultiQIVtbl
): IUnknown(IUnknownVtbl
) {
136 fn QueryMultipleInterfaces(
138 pMQIs
: *mut MULTI_QI
,
141 RIDL
!{#[uuid(0x000e0020, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
142 interface
AsyncIMultiQI(AsyncIMultiQIVtbl
): IUnknown(IUnknownVtbl
) {
143 fn Begin_QueryMultipleInterfaces(
145 pMQIs
: *mut MULTI_QI
,
147 fn Finish_QueryMultipleInterfaces(
148 pMQIs
: *mut MULTI_QI
,
151 RIDL
!{#[uuid(0x00000021, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
152 interface
IInternalUnknown(IInternalUnknownVtbl
): IUnknown(IUnknownVtbl
) {
153 fn QueryInternalInterface(
155 ppv
: *mut *mut c_void
,
158 RIDL
!{#[uuid(0x00000100, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
159 interface
IEnumUnknown(IEnumUnknownVtbl
): IUnknown(IUnknownVtbl
) {
162 rgelt
: *mut *mut IUnknown
,
163 pceltFetched
: *mut ULONG
,
168 fn Reset() -> HRESULT
,
170 ppenum
: *mut *mut IEnumUnknown
,
173 RIDL
!{#[uuid(0x00000101, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
174 interface
IEnumString(IEnumStringVtbl
): IUnknown(IUnknownVtbl
) {
177 rgelt
: *mut LPOLESTR
,
178 pceltFetched
: *mut ULONG
,
183 fn Reset() -> HRESULT
,
185 ppenum
: *mut *mut IEnumString
,
188 RIDL
!{#[uuid(0x0c733a30, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d)]
189 interface
ISequentialStream(ISequentialStreamVtbl
): IUnknown(IUnknownVtbl
) {
198 pcbWritten
: *mut ULONG
,
201 STRUCT
!{struct STATSTG
{
204 cbSize
: ULARGE_INTEGER
,
209 grfLocksSupported
: DWORD
,
220 ENUM
!{enum STREAM_SEEK
{
225 ENUM
!{enum LOCKTYPE
{
230 pub type LPSTREAM
= *mut IStream
;
231 RIDL
!{#[uuid(0x0000000c, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
232 interface
IStream(IStreamVtbl
): ISequentialStream(ISequentialStreamVtbl
) {
234 dlibMove
: LARGE_INTEGER
,
236 plibNewPosition
: *mut ULARGE_INTEGER
,
239 libNewSize
: ULARGE_INTEGER
,
244 pcbRead
: *mut ULARGE_INTEGER
,
245 pcbWritten
: *mut ULARGE_INTEGER
,
248 grfCommitFlags
: DWORD
,
250 fn Revert() -> HRESULT
,
252 libOffset
: ULARGE_INTEGER
,
257 libOffset
: ULARGE_INTEGER
,
262 pstatstg
: *mut STATSTG
,
266 ppstm
: *mut *mut IStream
,
269 pub type RPCOLEDATAREP
= ULONG
;
270 STRUCT
!{struct RPCOLEMESSAGE
{
271 reserved1
: *mut c_void
,
272 dataRepresentation
: RPCOLEDATAREP
,
276 reserved2
: [*mut c_void
; 5],
279 pub type PRPCOLEMESSAGE
= *mut RPCOLEMESSAGE
;
280 RIDL
!{#[uuid(0xd5f56b60, 0x593b, 0x101a, 0xb5, 0x69, 0x08, 0x00, 0x2b, 0x2d, 0xbf, 0x7a)]
281 interface
IRpcChannelBuffer(IRpcChannelBufferVtbl
): IUnknown(IUnknownVtbl
) {
283 pMessage
: *mut RPCOLEMESSAGE
,
287 pMessage
: *mut RPCOLEMESSAGE
,
291 pMessage
: *mut RPCOLEMESSAGE
,
294 pdwDestContext
: *mut DWORD
,
295 ppvDestContext
: *mut *mut c_void
,
297 fn IsConnected() -> HRESULT
,
299 RIDL
!{#[uuid(0x594f31d0, 0x7f19, 0x11d0, 0xb1, 0x94, 0x00, 0xa0, 0xc9, 0x0d, 0xc8, 0xbf)]
300 interface
IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl
): IRpcChannelBuffer(IRpcChannelBufferVtbl
) {
301 fn GetProtocolVersion(
302 pdwVersion
: *mut DWORD
,
305 RIDL
!{#[uuid(0xa5029fb6, 0x3c34, 0x11d1, 0x9c, 0x99, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0xaa)]
306 interface
IAsyncRpcChannelBuffer(IAsyncRpcChannelBufferVtbl
):
307 IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl
) {
309 pMsg
: *mut RPCOLEMESSAGE
,
310 pSync
: *mut ISynchronize
,
311 pulStatus
: *mut ULONG
,
314 pMsg
: *mut RPCOLEMESSAGE
,
315 pulStatus
: *mut ULONG
,
318 pMsg
: *mut RPCOLEMESSAGE
,
319 pdwDestContext
: *mut DWORD
,
320 ppvDestContext
: *mut *mut c_void
,
323 RIDL
!{#[uuid(0x25b15600, 0x0115, 0x11d0, 0xbf, 0x0d, 0x00, 0xaa, 0x00, 0xb8, 0xdf, 0xd2)]
324 interface
IRpcChannelBuffer3(IRpcChannelBuffer3Vtbl
): IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl
) {
326 pMsg
: *mut RPCOLEMESSAGE
,
327 pulStatus
: *mut ULONG
,
330 pMsg
: *mut RPCOLEMESSAGE
,
332 pulStatus
: *mut ULONG
,
335 pMsg
: *mut RPCOLEMESSAGE
,
338 pMsg
: *mut RPCOLEMESSAGE
,
340 pInterface
: *mut *mut c_void
,
343 pMsg
: *mut RPCOLEMESSAGE
,
344 pdwDestContext
: *mut DWORD
,
345 ppvDestContext
: *mut *mut c_void
,
348 pMsg
: *mut RPCOLEMESSAGE
,
352 pMsg
: *mut RPCOLEMESSAGE
,
353 pAsyncMgr
: *mut IAsyncManager
,
356 RIDL
!{#[uuid(0x58a08519, 0x24c8, 0x4935, 0xb4, 0x82, 0x3f, 0xd8, 0x23, 0x33, 0x3a, 0x4f)]
357 interface
IRpcSyntaxNegotiate(IRpcSyntaxNegotiateVtbl
): IUnknown(IUnknownVtbl
) {
359 pMsg
: *mut RPCOLEMESSAGE
,
362 RIDL
!{#[uuid(0xd5f56a34, 0x593b, 0x101a, 0xb5, 0x69, 0x08, 0x00, 0x2b, 0x2d, 0xbf, 0x7a)]
363 interface
IRpcProxyBuffer(IRpcProxyBufferVtbl
): IUnknown(IUnknownVtbl
) {
365 pRpcChannelBuffer
: *mut IRpcChannelBuffer
,
367 fn Disconnect() -> (),
369 RIDL
!{#[uuid(0xd5f56afc, 0x593b, 0x101a, 0xb5, 0x69, 0x08, 0x00, 0x2b, 0x2d, 0xbf, 0x7a)]
370 interface
IRpcStubBuffer(IRpcStubBufferVtbl
): IUnknown(IUnknownVtbl
) {
372 pUnkServer
: *mut IUnknown
,
374 fn Disconnect() -> (),
376 _prpcmsg
: *mut RPCOLEMESSAGE
,
377 _pRpcChannelBuffer
: *mut IRpcChannelBuffer
,
381 ) -> *mut IRpcStubBuffer
,
382 fn CountRefs() -> ULONG
,
383 fn DebugServerQueryInterface(
384 ppv
: *mut *mut c_void
,
386 fn DebugServerRelease(
390 RIDL
!{#[uuid(0xd5f569d0, 0x593b, 0x101a, 0xb5, 0x69, 0x08, 0x00, 0x2b, 0x2d, 0xbf, 0x7a)]
391 interface
IPSFactoryBuffer(IPSFactoryBufferVtbl
): IUnknown(IUnknownVtbl
) {
393 pUnkOuter
: *mut IUnknown
,
395 ppProxy
: *mut *mut IRpcProxyBuffer
,
396 ppv
: *mut *mut c_void
,
400 pUnkServer
: *mut *mut IUnknown
,
401 ppStub
: *mut *mut IRpcStubBuffer
,
404 STRUCT
!{struct SChannelHookCallInfo
{
410 pObject
: *mut c_void
,
412 RIDL
!{#[uuid(0x1008c4a0, 0x7613, 0x11cf, 0x9a, 0xf1, 0x00, 0x20, 0xaf, 0x6e, 0x72, 0xf4)]
413 interface
IChannelHook(IChannelHookVtbl
): IUnknown(IUnknownVtbl
) {
417 pDataSize
: *mut ULONG
,
422 pDataSize
: *mut ULONG
,
423 pDataBuffer
: *mut c_void
,
429 pDataBuffer
: *mut c_void
,
437 pDataBuffer
: *mut c_void
,
444 pDataSize
: *mut ULONG
,
449 pDataSize
: *mut ULONG
,
450 pDataBuffer
: *mut c_void
,
454 STRUCT
!{struct SOLE_AUTHENTICATION_SERVICE
{
457 pPrincipalName
: *mut OLECHAR
,
460 pub type PSOLE_AUTHENTICATION_SERVICE
= *mut SOLE_AUTHENTICATION_SERVICE
;
461 ENUM
!{enum EOLE_AUTHENTICATION_CAPABILITIES
{
463 EOAC_MUTUAL_AUTH
= 0x1,
464 EOAC_STATIC_CLOAKING
= 0x20,
465 EOAC_DYNAMIC_CLOAKING
= 0x40,
466 EOAC_ANY_AUTHORITY
= 0x80,
467 EOAC_MAKE_FULLSIC
= 0x100,
468 EOAC_DEFAULT
= 0x800,
469 EOAC_SECURE_REFS
= 0x2,
470 EOAC_ACCESS_CONTROL
= 0x4,
473 EOAC_REQUIRE_FULLSIC
= 0x200,
474 EOAC_AUTO_IMPERSONATE
= 0x400,
475 EOAC_DISABLE_AAA
= 0x1000,
476 EOAC_NO_CUSTOM_MARSHAL
= 0x2000,
477 EOAC_RESERVED1
= 0x4000,
479 pub const COLE_DEFAULT_PRINCIPAL
: *mut OLECHAR
= -1isize
as *mut OLECHAR
;
480 pub const COLE_DEFAULT_AUTHINFO
: *mut c_void
= -1isize
as *mut c_void
;
481 STRUCT
!{struct SOLE_AUTHENTICATION_INFO
{
484 pAuthInfo
: *mut c_void
,
486 pub type PSOLE_AUTHENTICATION_INFO
= *mut SOLE_AUTHENTICATION_INFO
;
487 STRUCT
!{struct SOLE_AUTHENTICATION_LIST
{
489 aAuthInfo
: *mut SOLE_AUTHENTICATION_INFO
,
491 pub type PSOLE_AUTHENTICATION_LIST
= *mut SOLE_AUTHENTICATION_LIST
;
492 RIDL
!{#[uuid(0x0000013d, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
493 interface
IClientSecurity(IClientSecurityVtbl
): IUnknown(IUnknownVtbl
) {
495 pProxy
: *mut IUnknown
,
496 pAuthnSvc
: *mut DWORD
,
497 pAuthzSvc
: *mut DWORD
,
498 pServerPrincName
: *mut *mut OLECHAR
,
499 pAuthnLevel
: *mut DWORD
,
500 pImpLevel
: *mut DWORD
,
501 pAuthInfo
: *mut *mut c_void
,
502 pCapabilities
: *mut DWORD
,
505 pProxy
: *mut IUnknown
,
508 pServerPrincName
: *mut OLECHAR
,
511 pAuthInfo
: *mut c_void
,
512 dwCapabilities
: DWORD
,
515 pProxy
: *mut IUnknown
,
516 ppCopy
: *mut *mut IUnknown
,
519 RIDL
!{#[uuid(0x0000013e, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
520 interface
IServerSecurity(IServerSecurityVtbl
): IUnknown(IUnknownVtbl
) {
522 pAuthnSvc
: *mut DWORD
,
523 pAuthzSvc
: *mut DWORD
,
524 pServerPrincName
: *mut *mut OLECHAR
,
525 pAuthnLevel
: *mut DWORD
,
526 pImpLevel
: *mut DWORD
,
527 pPrivs
: *mut *mut c_void
,
528 pCapabilities
: *mut DWORD
,
530 fn ImpersonateClient() -> HRESULT
,
531 fn RevertToSelf() -> HRESULT
,
532 fn IsImpersonating() -> BOOL
,
534 ENUM
!{enum RPCOPT_PROPERTIES
{
535 COMBND_RPCTIMEOUT
= 0x1,
536 COMBND_SERVER_LOCALITY
= 0x2,
537 COMBND_RESERVED1
= 0x4,
538 COMBND_RESERVED2
= 0x5,
539 COMBND_RESERVED3
= 0x8,
540 COMBND_RESERVED4
= 0x10,
542 ENUM
!{enum RPCOPT_SERVER_LOCALITY_VALUES
{
543 SERVER_LOCALITY_PROCESS_LOCAL
= 0,
544 SERVER_LOCALITY_MACHINE_LOCAL
= 1,
545 SERVER_LOCALITY_REMOTE
= 2,
547 RIDL
!{#[uuid(0x00000144, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
548 interface
IRpcOptions(IRpcOptionsVtbl
): IUnknown(IUnknownVtbl
) {
551 dwProperty
: RPCOPT_PROPERTIES
,
556 dwProperty
: RPCOPT_PROPERTIES
,
557 pdwValue
: *mut ULONG_PTR
,
560 ENUM
!{enum GLOBALOPT_PROPERTIES
{
561 COMGLB_EXCEPTION_HANDLING
= 1,
563 COMGLB_RPC_THREADPOOL_SETTING
= 3,
564 COMGLB_RO_SETTINGS
= 4,
565 COMGLB_UNMARSHALING_POLICY
= 5,
566 COMGLB_PROPERTIES_RESERVED1
= 6,
568 ENUM
!{enum GLOBALOPT_EH_VALUES
{
569 COMGLB_EXCEPTION_HANDLE
= 0,
570 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
= 1,
571 COMGLB_EXCEPTION_DONOT_HANDLE
= COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
,
572 COMGLB_EXCEPTION_DONOT_HANDLE_ANY
= 2,
574 ENUM
!{enum GLOBALOPT_RPCTP_VALUES
{
575 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL
= 0,
576 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL
= 1,
578 ENUM
!{enum GLOBALOPT_RO_FLAGS
{
579 COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES
= 0x1,
580 COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES
= 0x2,
581 COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES
= 0x4,
582 COMGLB_FAST_RUNDOWN
= 0x8,
583 COMGLB_RESERVED1
= 0x10,
584 COMGLB_RESERVED2
= 0x20,
585 COMGLB_RESERVED3
= 0x40,
586 COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES
= 0x80,
587 COMGLB_RESERVED4
= 0x100,
588 COMGLB_RESERVED5
= 0x200,
589 COMGLB_RESERVED6
= 0x400,
591 ENUM
!{enum GLOBALOPT_UNMARSHALING_POLICY_VALUES
{
592 COMGLB_UNMARSHALING_POLICY_NORMAL
= 0,
593 COMGLB_UNMARSHALING_POLICY_STRONG
= 1,
594 COMGLB_UNMARSHALING_POLICY_HYBRID
= 2,
596 RIDL
!{#[uuid(0x0000015b, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
597 interface
IGlobalOptions(IGlobalOptionsVtbl
): IUnknown(IUnknownVtbl
) {
599 dwProperty
: GLOBALOPT_PROPERTIES
,
603 dwProperty
: GLOBALOPT_PROPERTIES
,
604 pdwValue
: *mut ULONG_PTR
,
607 pub type LPSURROGATE
= *mut ISurrogate
;
608 RIDL
!{#[uuid(0x00000022, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
609 interface
ISurrogate(ISurrogateVtbl
): IUnknown(IUnknownVtbl
) {
613 fn FreeSurrogate() -> HRESULT
,
615 pub type LPGLOBALINTERFACETABLE
= *mut IGlobalInterfaceTable
;
616 RIDL
!{#[uuid(0x00000146, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
617 interface
IGlobalInterfaceTable(IGlobalInterfaceTableVtbl
): IUnknown(IUnknownVtbl
) {
618 fn RegisterInterfaceInGlobal(
621 pdwCookie
: *mut DWORD
,
623 fn RevokeInterfaceFromGlobal(
626 fn GetInterfaceFromGlobal(
629 ppv
: *mut *mut c_void
,
632 RIDL
!{#[uuid(0x00000030, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
633 interface
ISynchronize(ISynchronizeVtbl
): IUnknown(IUnknownVtbl
) {
636 dwMilliseconds
: DWORD
,
638 fn Signal() -> HRESULT
,
639 fn Reset() -> HRESULT
,
641 RIDL
!{#[uuid(0x00000031, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
642 interface
ISynchronizeHandle(ISynchronizeHandleVtbl
): IUnknown(IUnknownVtbl
) {
647 RIDL
!{#[uuid(0x00000032, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
648 interface
ISynchronizeEvent(ISynchronizeEventVtbl
): ISynchronizeHandle(ISynchronizeHandleVtbl
) {
653 RIDL
!{#[uuid(0x00000033, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
654 interface
ISynchronizeContainer(ISynchronizeContainerVtbl
): IUnknown(IUnknownVtbl
) {
656 pSync
: *mut ISynchronize
,
661 ppSync
: *mut *mut ISynchronize
,
664 RIDL
!{#[uuid(0x00000025, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
665 interface
ISynchronizeMutex(ISynchronizeMutexVtbl
): ISynchronize(ISynchronizeVtbl
) {
666 fn ReleaseMutex() -> HRESULT
,
668 pub type LPCANCELMETHODCALLS
= *mut ICancelMethodCalls
;
669 RIDL
!{#[uuid(0x00000029, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
670 interface
ICancelMethodCalls(ICancelMethodCallsVtbl
): IUnknown(IUnknownVtbl
) {
674 fn TestCancel() -> HRESULT
,
676 ENUM
!{enum DCOM_CALL_STATE
{
678 DCOM_CALL_COMPLETE
= 0x1,
679 DCOM_CALL_CANCELED
= 0x2,
681 RIDL
!{#[uuid(0x0000002a, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
682 interface
IAsyncManager(IAsyncManagerVtbl
): IUnknown(IUnknownVtbl
) {
688 pInterface
: *mut *mut c_void
,
691 pulStateFlags
: *mut ULONG
,
694 RIDL
!{#[uuid(0x1c733a30, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d)]
695 interface
ICallFactory(ICallFactoryVtbl
): IUnknown(IUnknownVtbl
) {
698 pCtrlUnk
: *mut IUnknown
,
700 ppv
: *mut *mut IUnknown
,
703 RIDL
!{#[uuid(0x00000149, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
704 interface
IRpcHelper(IRpcHelperVtbl
): IUnknown(IUnknownVtbl
) {
705 fn GetDCOMProtocolVersion(
706 pComVersion
: *mut DWORD
,
709 pObjRef
: *mut c_void
,
713 RIDL
!{#[uuid(0xeb0cb9e8, 0x7996, 0x11d2, 0x87, 0x2e, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x59)]
714 interface
IReleaseMarshalBuffers(IReleaseMarshalBuffersVtbl
): IUnknown(IUnknownVtbl
) {
715 fn ReleaseMarshalBuffer(
716 pMsg
: *mut RPCOLEMESSAGE
,
718 pChnl
: *mut IUnknown
,
721 RIDL
!{#[uuid(0x0000002b, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
722 interface
IWaitMultiple(IWaitMultipleVtbl
): IUnknown(IUnknownVtbl
) {
725 pSync
: *mut *mut ISynchronize
,
728 pSync
: *mut ISynchronize
,
731 pub type LPADDRTRACKINGCONTROL
= *mut IAddrTrackingControl
;
732 RIDL
!{#[uuid(0x00000147, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
733 interface
IAddrTrackingControl(IAddrTrackingControlVtbl
): IUnknown(IUnknownVtbl
) {
734 fn EnableCOMDynamicAddrTracking() -> HRESULT
,
735 fn DisableCOMDynamicAddrTracking() -> HRESULT
,
737 pub type LPADDREXCLUSIONCONTROL
= *mut IAddrExclusionControl
;
738 RIDL
!{#[uuid(0x00000148, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
739 interface
IAddrExclusionControl(IAddrExclusionControlVtbl
): IUnknown(IUnknownVtbl
) {
740 fn GetCurrentAddrExclusionList(
742 ppEnumerator
: *mut *mut c_void
,
744 fn UpdateAddrExclusionList(
745 pEnumerator
: *mut IUnknown
,
748 RIDL
!{#[uuid(0xdb2f3aca, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
749 interface
IPipeByte(IPipeByteVtbl
): IUnknown(IUnknownVtbl
) {
753 pcReturned
: *mut ULONG
,
760 RIDL
!{#[uuid(0xdb2f3acb, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
761 interface
AsyncIPipeByte(AsyncIPipeByteVtbl
): IUnknown(IUnknownVtbl
) {
767 pcReturned
: *mut ULONG
,
773 fn Finish_Push() -> HRESULT
,
775 RIDL
!{#[uuid(0xdb2f3acc, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
776 interface
IPipeLong(IPipeLongVtbl
): IUnknown(IUnknownVtbl
) {
780 pcReturned
: *mut ULONG
,
787 RIDL
!{#[uuid(0xdb2f3acd, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
788 interface
AsyncIPipeLong(AsyncIPipeLongVtbl
): IUnknown(IUnknownVtbl
) {
794 pcReturned
: *mut ULONG
,
800 fn Finish_Push() -> HRESULT
,
802 RIDL
!{#[uuid(0xdb2f3ace, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
803 interface
IPipeDouble(IPipeDoubleVtbl
): IUnknown(IUnknownVtbl
) {
807 pcReturned
: *mut ULONG
,
814 RIDL
!{#[uuid(0xdb2f3acf, 0x2f86, 0x11d1, 0x8e, 0x04, 0x00, 0xc0, 0x4f, 0xb9, 0x98, 0x9a)]
815 interface
AsyncIPipeDouble(AsyncIPipeDoubleVtbl
): IUnknown(IUnknownVtbl
) {
821 pcReturned
: *mut ULONG
,
827 fn Finish_Push() -> HRESULT
,
829 pub type CPFLAGS
= DWORD
;
830 STRUCT
!{struct ContextProperty
{
835 pub type LPENUMCONTEXTPROPS
= *mut IEnumContextProps
;
836 RIDL
!{#[uuid(0x000001c1, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
837 interface
IEnumContextProps(IEnumContextPropsVtbl
): IUnknown(IUnknownVtbl
) {
840 pContextProperties
: *mut ContextProperty
,
841 pceltFetched
: *mut ULONG
,
846 fn Reset() -> HRESULT
,
848 ppEnumContextProps
: *mut *mut IEnumContextProps
,
854 RIDL
!{#[uuid(0x000001c0, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
855 interface
IContext(IContextVtbl
): IUnknown(IUnknownVtbl
) {
866 pFlags
: *mut CPFLAGS
,
867 ppUnk
: *mut *mut IUnknown
,
870 ppEnumContextProps
: *mut *mut IEnumContextProps
,
873 RIDL
!{#[uuid(0x000001c6, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
874 interface
IObjContext(IObjContextVtbl
): IContext(IContextVtbl
) {
875 fn Reserved1() -> (),
876 fn Reserved2() -> (),
877 fn Reserved3() -> (),
878 fn Reserved4() -> (),
879 fn Reserved5() -> (),
880 fn Reserved6() -> (),
881 fn Reserved7() -> (),
883 ENUM
!{enum APTTYPEQUALIFIER
{
884 APTTYPEQUALIFIER_NONE
= 0,
885 APTTYPEQUALIFIER_IMPLICIT_MTA
= 1,
886 APTTYPEQUALIFIER_NA_ON_MTA
= 2,
887 APTTYPEQUALIFIER_NA_ON_STA
= 3,
888 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA
= 4,
889 APTTYPEQUALIFIER_NA_ON_MAINSTA
= 5,
890 APTTYPEQUALIFIER_APPLICATION_STA
= 6,
893 APTTYPE_CURRENT
= -1i32 as u32,
900 THDTYPE_BLOCKMESSAGES
= 0,
901 THDTYPE_PROCESSMESSAGES
= 1,
903 pub type APARTMENTID
= DWORD
;
904 RIDL
!{#[uuid(0x000001ce, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
905 interface
IComThreadingInfo(IComThreadingInfoVtbl
): IUnknown(IUnknownVtbl
) {
906 fn GetCurrentApartmentType(
907 pAptType
: *mut APTTYPE
,
909 fn GetCurrentThreadType(
910 pThreadType
: *mut THDTYPE
,
912 fn GetCurrentLogicalThreadId(
913 pguidLogicalThreadId
: *mut GUID
,
915 fn SetCurrentLogicalThreadId(
919 RIDL
!{#[uuid(0x72380d55, 0x8d2b, 0x43a3, 0x85, 0x13, 0x2b, 0x6e, 0xf3, 0x14, 0x34, 0xe9)]
920 interface
IProcessInitControl(IProcessInitControlVtbl
): IUnknown(IUnknownVtbl
) {
921 fn ResetInitializerTimeout(
922 dwSecondsRemaining
: DWORD
,
925 RIDL
!{#[uuid(0x00000040, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
926 interface
IFastRundown(IFastRundownVtbl
): IUnknown(IUnknownVtbl
) {}
}
927 ENUM
!{enum CO_MARSHALING_CONTEXT_ATTRIBUTES
{
928 CO_MARSHALING_SOURCE_IS_APP_CONTAINER
= 0,
929 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_1
= 0x80000000,
930 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_2
= 0x80000001,
931 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_3
= 0x80000002,
932 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_4
= 0x80000003,
933 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_5
= 0x80000004,
934 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_6
= 0x80000005,
935 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_7
= 0x80000006,
936 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_8
= 0x80000007,
937 CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_9
= 0x80000008,
939 RIDL
!{#[uuid(0xd8f2f5e6, 0x6102, 0x4863, 0x9f, 0x26, 0x38, 0x9a, 0x46, 0x76, 0xef, 0xde)]
940 interface
IMarshalingStream(IMarshalingStreamVtbl
): IStream(IStreamVtbl
) {
941 fn GetMarshalingContextAttribute(
942 attribute
: CO_MARSHALING_CONTEXT_ATTRIBUTES
,
943 pAttributeValue
: *mut ULONG_PTR
,
946 RIDL
!{#[uuid(0xc03f6a43, 0x65a4, 0x9818, 0x98, 0x7e, 0xe0, 0xb8, 0x10, 0xd2, 0xa6, 0xf2)]
947 interface
IAgileReference(IAgileReferenceVtbl
): IUnknown(IUnknownVtbl
) {
950 ppvObjectReference
: *mut *mut c_void
,