// 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.
use ctypes::{c_int, c_void};
use shared::basetsd::{SIZE_T, ULONG_PTR};
use shared::guiddef::{CLSID, GUID, IID, REFCLSID, REFGUID, REFIID};
use shared::minwindef::{BOOL, BYTE, DWORD, FILETIME, ULONG};
use shared::wtypesbase::{COAUTHINFO, DOUBLE, LPOLESTR, OLECHAR};
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HANDLE, HRESULT, LARGE_INTEGER, LONG, LPWSTR, ULARGE_INTEGER};
STRUCT !{
struct COSERVERINFO {
dwReserved1: DWORD,
pwszName: LPWSTR,
pAuthInfo: *
mut COAUTHINFO,
dwReserved2: DWORD,
}}
pub type LPMARSHAL = *
mut IMarshal;
RIDL!{
#[ uuid(
0 x00000003,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IMarshal(IMarshalVtbl): IUnknown(IUnknownVtbl) {
fn GetUnmarshalClass(
riid: REFIID,
pv: *
mut c_void,
dwDestContext: DWORD,
pvDestContext: *
mut c_void,
mshlflags: DWORD,
pCid: *
mut CLSID,
) -> HRESULT,
fn GetMarshalSizeMax(
riid: REFIID,
pv: *
mut c_void,
dwDestContext: DWORD,
pvDestContext: *
mut c_void,
mshlflags: DWORD,
pSize: *
mut DWORD,
) -> HRESULT,
fn MarshalInterface(
pStm: *
mut IStream,
riid: REFIID,
pv: *
mut c_void,
dwDestContext: DWORD,
pvDestContext: *
mut c_void,
mshlflags: DWORD,
) -> HRESULT,
fn UnmarshalInterface(
pStm: *
mut IStream,
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
fn ReleaseMarshalData(
pStm: *
mut IStream,
) -> HRESULT,
fn DisconnectObject(
dwReserved: DWORD,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 xecc8691b,
0 xc1db,
0 x4dc0,
0 x85,
0 x5e,
0 x65,
0 xf6,
0 xc5,
0 x51,
0 xaf,
0 x49)]
interface INoMarshal(INoMarshalVtbl): IUnknown(IUnknownVtbl) {}}
RIDL!{
#[ uuid(
0 x94ea2b94,
0 xe9cc,
0 x49e0,
0 xc0,
0 xff,
0 xee,
0 x64,
0 xca,
0 x8f,
0 x5b,
0 x90)]
interface IAgileObject(IAgileObjectVtbl): IUnknown(IUnknownVtbl) {}}
ENUM !{
enum ACTIVATIONTYPE {
ACTIVATIONTYPE_UNCATEGORIZED =
0 ,
ACTIVATIONTYPE_FROM_MONIKER =
0 x1,
ACTIVATIONTYPE_FROM_DATA =
0 x2,
ACTIVATIONTYPE_FROM_STORAGE =
0 x4,
ACTIVATIONTYPE_FROM_STREAM =
0 x8,
ACTIVATIONTYPE_FROM_FILE =
0 x10,
}}
RIDL!{
#[ uuid(
0 x00000017,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IActivationFilter(IActivationFilterVtbl): IUnknown(IUnknownVtbl) {
fn HandleActivation(
dwActivationType: DWORD,
rclsid: REFCLSID,
pReplacementClsId: *
mut CLSID,
) -> HRESULT,
}}
pub type LPMARSHAL2 = *
mut IMarshal2;
RIDL!{
#[ uuid(
0 x000001cf,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IMarshal2(IMarshal2Vtbl): IMarshal(IMarshalVtbl) {}}
pub type LPMALLOC = *
mut IMalloc;
RIDL!{
#[ uuid(
0 x00000002,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IMalloc(IMallocVtbl): IUnknown(IUnknownVtbl) {
fn Alloc(
cb: SIZE_T,
) -> *
mut c_void,
fn Realloc(
pv: *
mut c_void,
cb: SIZE_T,
) -> *
mut c_void,
fn Free(
pv: *
mut c_void,
) -> (),
fn GetSize(
pv: *
mut c_void,
) -> SIZE_T,
fn DidAlloc(
pv: *
mut c_void,
) -> c_int,
fn HeapMinimize() -> (),
}}
pub type LPSTDMARSHALINFO = IStdMarshalInfo;
RIDL!{
#[ uuid(
0 x00000018,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IStdMarshalInfo(IStdMarshalInfoVtbl): IUnknown(IUnknownVtbl) {
fn GetClassForHandler(
dwDestContext: DWORD,
pvDestContext: *
mut c_void,
pClsid: *
mut CLSID,
) -> HRESULT,
}}
ENUM !{
enum EXTCONN {
EXTCONN_STRONG =
0 x1,
EXTCONN_WEAK =
0 x2,
EXTCONN_CALLABLE =
0 x4,
}}
RIDL!{
#[ uuid(
0 x00000019,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IExternalConnection(IExternalConnectionVtbl): IUnknown(IUnknownVtbl) {
fn AddConnection(
extconn: DWORD,
reserved: DWORD,
) -> DWORD,
fn ReleaseConnection(
extconn: DWORD,
reserved: DWORD,
fLastReleaseCloses: BOOL,
) -> DWORD,
}}
pub type LPMULTIQI = *
mut IMultiQI;
STRUCT !{
struct MULTI_QI {
pIID: *
const IID,
pItf: *
mut IUnknown,
hr: HRESULT,
}}
RIDL!{
#[ uuid(
0 x00000020,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IMultiQI(IMultiQIVtbl): IUnknown(IUnknownVtbl) {
fn QueryMultipleInterfaces(
cMQIs: ULONG,
pMQIs: *
mut MULTI_QI,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x000e0020,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface AsyncIMultiQI(AsyncIMultiQIVtbl): IUnknown(IUnknownVtbl) {
fn Begin_QueryMultipleInterfaces(
cMQIs: ULONG,
pMQIs: *
mut MULTI_QI,
) -> HRESULT,
fn Finish_QueryMultipleInterfaces(
pMQIs: *
mut MULTI_QI,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x00000021,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IInternalUnknown(IInternalUnknownVtbl): IUnknown(IUnknownVtbl) {
fn QueryInternalInterface(
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x00000100,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IEnumUnknown(IEnumUnknownVtbl): IUnknown(IUnknownVtbl) {
fn Next(
celt: ULONG,
rgelt: *
mut *
mut IUnknown,
pceltFetched: *
mut ULONG,
) -> HRESULT,
fn Skip(
celt: ULONG,
) -> HRESULT,
fn Reset() -> HRESULT,
fn Clone(
ppenum: *
mut *
mut IEnumUnknown,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x00000101,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IEnumString(IEnumStringVtbl): IUnknown(IUnknownVtbl) {
fn Next(
celt: ULONG,
rgelt: *
mut LPOLESTR,
pceltFetched: *
mut ULONG,
) -> HRESULT,
fn Skip(
celt: ULONG,
) -> HRESULT,
fn Reset() -> HRESULT,
fn Clone(
ppenum: *
mut *
mut IEnumString,
) -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x0c733a30,
0 x2a1c,
0 x11ce,
0 xad,
0 xe5,
0 x00,
0 xaa,
0 x00,
0 x44,
0 x77,
0 x3d)]
interface ISequentialStream(ISequentialStreamVtbl): IUnknown(IUnknownVtbl) {
fn Read(
pv: *
mut c_void,
cb: ULONG,
pcbRead: *
mut ULONG,
) -> HRESULT,
fn Write(
pv: *
const c_void,
cb: ULONG,
pcbWritten: *
mut ULONG,
) -> HRESULT,
}}
STRUCT !{
struct STATSTG {
pwcsName: LPOLESTR,
type_: DWORD,
cbSize: ULARGE_INTEGER,
mtime: FILETIME,
ctime: FILETIME,
atime: FILETIME,
grfMode: DWORD,
grfLocksSupported: DWORD,
clsid: CLSID,
grfStateBits: DWORD,
reserved: DWORD,
}}
ENUM !{
enum STGTY {
STGTY_STORAGE =
1 ,
STGTY_STREAM =
2 ,
STGTY_LOCKBYTES =
3 ,
STGTY_PROPERTY =
4 ,
}}
ENUM !{
enum STREAM_SEEK {
STREAM_SEEK_SET =
0 ,
STREAM_SEEK_CUR =
1 ,
STREAM_SEEK_END =
2 ,
}}
ENUM !{
enum LOCKTYPE {
LOCK_WRITE =
1 ,
LOCK_EXCLUSIVE =
2 ,
LOCK_ONLYONCE =
4 ,
}}
pub type LPSTREAM = *
mut IStream;
RIDL!{
#[ uuid(
0 x0000000c,
0 x0000,
0 x0000,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x46)]
interface IStream(IStreamVtbl): ISequentialStream(ISequentialStreamVtbl) {
fn Seek(
dlibMove: LARGE_INTEGER,
dwOrigin: DWORD,
plibNewPosition: *
mut ULARGE_INTEGER,
) -> HRESULT,
fn SetSize(
libNewSize: ULARGE_INTEGER,
) -> HRESULT,
fn CopyTo(
pstm: *
mut IStream,
cb: ULARGE_INTEGER,
pcbRead: *
mut ULARGE_INTEGER,
pcbWritten: *
mut ULARGE_INTEGER,
) -> HRESULT,
fn Commit(
grfCommitFlags: DWORD,
) -> HRESULT,
fn Revert() -> HRESULT,
fn LockRegion(
libOffset: ULARGE_INTEGER,
cb: ULARGE_INTEGER,
dwLockType: DWORD,
) -> HRESULT,
fn UnlockRegion(
libOffset: ULARGE_INTEGER,
cb: ULARGE_INTEGER,
dwLockType: DWORD,
) -> HRESULT,
fn Stat(
pstatstg: *
mut STATSTG,
grfStatFlag: DWORD,
) -> HRESULT,
fn Clone(
ppstm: *
mut *
mut IStream,
) -> HRESULT,
}}
pub type RPCOLEDATAREP = ULONG;
STRUCT !{
struct RPCOLEMESSAGE {
reserved1: *
mut c_void,
dataRepresentation: RPCOLEDATAREP,
Buffer: *
mut c_void,
cbBuffer: ULONG,
iMethod: ULONG,
reserved2: [*
mut c_void;
5 ],
rpcFlags: ULONG,
}}
pub type PRPCOLEMESSAGE = *
mut RPCOLEMESSAGE;
RIDL!{
#[ uuid(
0 xd5f56b60,
0 x593b,
0 x101a,
0 xb5,
0 x69,
0 x08,
0 x00,
0 x2b,
0 x2d,
0 xbf,
0 x7a)]
interface IRpcChannelBuffer(IRpcChannelBufferVtbl): IUnknown(IUnknownVtbl) {
fn GetBuffer(
pMessage: *
mut RPCOLEMESSAGE,
riid: REFIID,
) -> HRESULT,
fn SendReceive(
pMessage: *
mut RPCOLEMESSAGE,
pStatus: *
mut ULONG,
) -> HRESULT,
fn FreeBuffer(
pMessage: *
mut RPCOLEMESSAGE,
) -> HRESULT,
fn GetDestCtx(
pdwDestContext: *
mut DWORD,
ppvDestContext: *
mut *
mut c_void,
) -> HRESULT,
fn IsConnected() -> HRESULT,
}}
RIDL!{
#[ uuid(
0 x594f31d0,
0 x7f19,
0 x11d0,
0 xb1,
0 x94,
0 x00,
0 xa0,
0 xc9,
0 x0d,
0 xc8,
0 xbf)]
interface IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl): IRpcChannelBuffer(IRpcChanne
lBufferVtbl) {
fn GetProtocolVersion(
pdwVersion: *mut DWORD,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xa5029fb6, 0 x3c34, 0 x11d1, 0 x9c, 0 x99, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 xaa)]
interface IAsyncRpcChannelBuffer(IAsyncRpcChannelBufferVtbl):
IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl) {
fn Send(
pMsg: *mut RPCOLEMESSAGE,
pSync: *mut ISynchronize,
pulStatus: *mut ULONG,
) -> HRESULT,
fn Receive(
pMsg: *mut RPCOLEMESSAGE,
pulStatus: *mut ULONG,
) -> HRESULT,
fn GetDestCtxEx(
pMsg: *mut RPCOLEMESSAGE,
pdwDestContext: *mut DWORD,
ppvDestContext: *mut *mut c_void,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x25b15600, 0 x0115, 0 x11d0, 0 xbf, 0 x0d, 0 x00, 0 xaa, 0 x00, 0 xb8, 0 xdf, 0 xd2)]
interface IRpcChannelBuffer3(IRpcChannelBuffer3Vtbl): IRpcChannelBuffer2(IRpcChannelBuffer2Vtbl) {
fn Send(
pMsg: *mut RPCOLEMESSAGE,
pulStatus: *mut ULONG,
) -> HRESULT,
fn Receive(
pMsg: *mut RPCOLEMESSAGE,
ulSize: ULONG,
pulStatus: *mut ULONG,
) -> HRESULT,
fn Cancel(
pMsg: *mut RPCOLEMESSAGE,
) -> HRESULT,
fn GetCallContext(
pMsg: *mut RPCOLEMESSAGE,
riid: REFIID,
pInterface: *mut *mut c_void,
) -> HRESULT,
fn GetDestCtxEx(
pMsg: *mut RPCOLEMESSAGE,
pdwDestContext: *mut DWORD,
ppvDestContext: *mut *mut c_void,
) -> HRESULT,
fn GetState(
pMsg: *mut RPCOLEMESSAGE,
pState: *mut DWORD,
) -> HRESULT,
fn RegisterAsync(
pMsg: *mut RPCOLEMESSAGE,
pAsyncMgr: *mut IAsyncManager,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x58a08519, 0 x24c8, 0 x4935, 0 xb4, 0 x82, 0 x3f, 0 xd8, 0 x23, 0 x33, 0 x3a, 0 x4f)]
interface IRpcSyntaxNegotiate(IRpcSyntaxNegotiateVtbl): IUnknown(IUnknownVtbl) {
fn NegotiateSyntax(
pMsg: *mut RPCOLEMESSAGE,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xd5f56a34, 0 x593b, 0 x101a, 0 xb5, 0 x69, 0 x08, 0 x00, 0 x2b, 0 x2d, 0 xbf, 0 x7a)]
interface IRpcProxyBuffer(IRpcProxyBufferVtbl): IUnknown(IUnknownVtbl) {
fn Connect(
pRpcChannelBuffer: *mut IRpcChannelBuffer,
) -> HRESULT,
fn Disconnect() -> (),
}}
RIDL!{#[ uuid(0 xd5f56afc, 0 x593b, 0 x101a, 0 xb5, 0 x69, 0 x08, 0 x00, 0 x2b, 0 x2d, 0 xbf, 0 x7a)]
interface IRpcStubBuffer(IRpcStubBufferVtbl): IUnknown(IUnknownVtbl) {
fn Connect(
pUnkServer: *mut IUnknown,
) -> HRESULT,
fn Disconnect() -> (),
fn Invoke(
_prpcmsg: *mut RPCOLEMESSAGE,
_pRpcChannelBuffer: *mut IRpcChannelBuffer,
) -> HRESULT,
fn IsIIDSupported(
riid: REFIID,
) -> *mut IRpcStubBuffer,
fn CountRefs() -> ULONG,
fn DebugServerQueryInterface(
ppv: *mut *mut c_void,
) -> HRESULT,
fn DebugServerRelease(
pv: *mut c_void,
) -> (),
}}
RIDL!{#[ uuid(0 xd5f569d0, 0 x593b, 0 x101a, 0 xb5, 0 x69, 0 x08, 0 x00, 0 x2b, 0 x2d, 0 xbf, 0 x7a)]
interface IPSFactoryBuffer(IPSFactoryBufferVtbl): IUnknown(IUnknownVtbl) {
fn CreateProxy(
pUnkOuter: *mut IUnknown,
riid: REFIID,
ppProxy: *mut *mut IRpcProxyBuffer,
ppv: *mut *mut c_void,
) -> HRESULT,
fn CreateStub(
riid: REFIID,
pUnkServer: *mut *mut IUnknown,
ppStub: *mut *mut IRpcStubBuffer,
) -> HRESULT,
}}
STRUCT !{struct SChannelHookCallInfo {
iid: IID,
cbSize: DWORD,
uCausality: GUID,
dwServerPid: DWORD,
iMethod: DWORD,
pObject: *mut c_void,
}}
RIDL!{#[ uuid(0 x1008c4a0, 0 x7613, 0 x11cf, 0 x9a, 0 xf1, 0 x00, 0 x20, 0 xaf, 0 x6e, 0 x72, 0 xf4)]
interface IChannelHook(IChannelHookVtbl): IUnknown(IUnknownVtbl) {
fn ClientGetSize(
uExtent: REFGUID,
riid: REFIID,
pDataSize: *mut ULONG,
) -> (),
fn ClientFillBuffer(
uExtent: REFGUID,
riid: REFIID,
pDataSize: *mut ULONG,
pDataBuffer: *mut c_void,
) -> (),
fn ClientNotify(
uExtent: REFGUID,
riid: REFIID,
cbDataSize: ULONG,
pDataBuffer: *mut c_void,
lDataRep: DWORD,
hrFault: HRESULT,
) -> (),
fn ServerNotify(
uExtent: REFGUID,
riid: REFIID,
cbDataSize: ULONG,
pDataBuffer: *mut c_void,
lDataRep: DWORD,
) -> (),
fn ServerGetSize(
uExtent: REFGUID,
riid: REFIID,
hrFault: HRESULT,
pDataSize: *mut ULONG,
) -> (),
fn ServerFillBuffer(
uExtent: REFGUID,
riid: REFIID,
pDataSize: *mut ULONG,
pDataBuffer: *mut c_void,
hrFault: HRESULT,
) -> (),
}}
STRUCT !{struct SOLE_AUTHENTICATION_SERVICE {
dwAuthnSvc: DWORD,
dwAuthzSvc: DWORD,
pPrincipalName: *mut OLECHAR,
hr: HRESULT,
}}
pub type PSOLE_AUTHENTICATION_SERVICE = *mut SOLE_AUTHENTICATION_SERVICE;
ENUM !{enum EOLE_AUTHENTICATION_CAPABILITIES {
EOAC_NONE = 0 ,
EOAC_MUTUAL_AUTH = 0 x1,
EOAC_STATIC_CLOAKING = 0 x20,
EOAC_DYNAMIC_CLOAKING = 0 x40,
EOAC_ANY_AUTHORITY = 0 x80,
EOAC_MAKE_FULLSIC = 0 x100,
EOAC_DEFAULT = 0 x800,
EOAC_SECURE_REFS = 0 x2,
EOAC_ACCESS_CONTROL = 0 x4,
EOAC_APPID = 0 x8,
EOAC_DYNAMIC = 0 x10,
EOAC_REQUIRE_FULLSIC = 0 x200,
EOAC_AUTO_IMPERSONATE = 0 x400,
EOAC_DISABLE_AAA = 0 x1000,
EOAC_NO_CUSTOM_MARSHAL = 0 x2000,
EOAC_RESERVED1 = 0 x4000,
}}
pub const COLE_DEFAULT_PRINCIPAL: *mut OLECHAR = -1 isize as *mut OLECHAR;
pub const COLE_DEFAULT_AUTHINFO: *mut c_void = -1 isize as *mut c_void;
STRUCT !{struct SOLE_AUTHENTICATION_INFO {
dwAuthnSvc: DWORD,
dwAuthzSvc: DWORD,
pAuthInfo: *mut c_void,
}}
pub type PSOLE_AUTHENTICATION_INFO = *mut SOLE_AUTHENTICATION_INFO;
STRUCT !{struct SOLE_AUTHENTICATION_LIST {
cAuthInfo: DWORD,
aAuthInfo: *mut SOLE_AUTHENTICATION_INFO,
}}
pub type PSOLE_AUTHENTICATION_LIST = *mut SOLE_AUTHENTICATION_LIST;
RIDL!{#[ uuid(0 x0000013d, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IClientSecurity(IClientSecurityVtbl): IUnknown(IUnknownVtbl) {
fn QueryBlanket(
pProxy: *mut IUnknown,
pAuthnSvc: *mut DWORD,
pAuthzSvc: *mut DWORD,
pServerPrincName: *mut *mut OLECHAR,
pAuthnLevel: *mut DWORD,
pImpLevel: *mut DWORD,
pAuthInfo: *mut *mut c_void,
pCapabilities: *mut DWORD,
) -> HRESULT,
fn SetBlanket(
pProxy: *mut IUnknown,
dwAuthnSvc: DWORD,
dwAuthzSvc: DWORD,
pServerPrincName: *mut OLECHAR,
dwAuthnLevel: DWORD,
dwImpLevel: DWORD,
pAuthInfo: *mut c_void,
dwCapabilities: DWORD,
) -> HRESULT,
fn CopyProxy(
pProxy: *mut IUnknown,
ppCopy: *mut *mut IUnknown,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x0000013e, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IServerSecurity(IServerSecurityVtbl): IUnknown(IUnknownVtbl) {
fn QueryBlanket(
pAuthnSvc: *mut DWORD,
pAuthzSvc: *mut DWORD,
pServerPrincName: *mut *mut OLECHAR,
pAuthnLevel: *mut DWORD,
pImpLevel: *mut DWORD,
pPrivs: *mut *mut c_void,
pCapabilities: *mut DWORD,
) -> HRESULT,
fn ImpersonateClient() -> HRESULT,
fn RevertToSelf() -> HRESULT,
fn IsImpersonating() -> BOOL,
}}
ENUM !{enum RPCOPT_PROPERTIES {
COMBND_RPCTIMEOUT = 0 x1,
COMBND_SERVER_LOCALITY = 0 x2,
COMBND_RESERVED1 = 0 x4,
COMBND_RESERVED2 = 0 x5,
COMBND_RESERVED3 = 0 x8,
COMBND_RESERVED4 = 0 x10,
}}
ENUM !{enum RPCOPT_SERVER_LOCALITY_VALUES {
SERVER_LOCALITY_PROCESS_LOCAL = 0 ,
SERVER_LOCALITY_MACHINE_LOCAL = 1 ,
SERVER_LOCALITY_REMOTE = 2 ,
}}
RIDL!{#[ uuid(0 x00000144, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IRpcOptions(IRpcOptionsVtbl): IUnknown(IUnknownVtbl) {
fn Set(
pPrx: *mut IUnknown,
dwProperty: RPCOPT_PROPERTIES,
dwValue: ULONG_PTR,
) -> HRESULT,
fn Query(
pPrx: *mut IUnknown,
dwProperty: RPCOPT_PROPERTIES,
pdwValue: *mut ULONG_PTR,
) -> HRESULT,
}}
ENUM !{enum GLOBALOPT_PROPERTIES {
COMGLB_EXCEPTION_HANDLING = 1 ,
COMGLB_APPID = 2 ,
COMGLB_RPC_THREADPOOL_SETTING = 3 ,
COMGLB_RO_SETTINGS = 4 ,
COMGLB_UNMARSHALING_POLICY = 5 ,
COMGLB_PROPERTIES_RESERVED1 = 6 ,
}}
ENUM !{enum GLOBALOPT_EH_VALUES {
COMGLB_EXCEPTION_HANDLE = 0 ,
COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1 ,
COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2 ,
}}
ENUM !{enum GLOBALOPT_RPCTP_VALUES {
COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0 ,
COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1 ,
}}
ENUM !{enum GLOBALOPT_RO_FLAGS {
COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES = 0 x1,
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES = 0 x2,
COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 0 x4,
COMGLB_FAST_RUNDOWN = 0 x8,
COMGLB_RESERVED1 = 0 x10,
COMGLB_RESERVED2 = 0 x20,
COMGLB_RESERVED3 = 0 x40,
COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES = 0 x80,
COMGLB_RESERVED4 = 0 x100,
COMGLB_RESERVED5 = 0 x200,
COMGLB_RESERVED6 = 0 x400,
}}
ENUM !{enum GLOBALOPT_UNMARSHALING_POLICY_VALUES {
COMGLB_UNMARSHALING_POLICY_NORMAL = 0 ,
COMGLB_UNMARSHALING_POLICY_STRONG = 1 ,
COMGLB_UNMARSHALING_POLICY_HYBRID = 2 ,
}}
RIDL!{#[ uuid(0 x0000015b, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IGlobalOptions(IGlobalOptionsVtbl): IUnknown(IUnknownVtbl) {
fn Set(
dwProperty: GLOBALOPT_PROPERTIES,
dwValue: ULONG_PTR,
) -> HRESULT,
fn Query(
dwProperty: GLOBALOPT_PROPERTIES,
pdwValue: *mut ULONG_PTR,
) -> HRESULT,
}}
pub type LPSURROGATE = *mut ISurrogate;
RIDL!{#[ uuid(0 x00000022, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISurrogate(ISurrogateVtbl): IUnknown(IUnknownVtbl) {
fn LoadDllServer(
Clsid: REFCLSID,
) -> HRESULT,
fn FreeSurrogate() -> HRESULT,
}}
pub type LPGLOBALINTERFACETABLE = *mut IGlobalInterfaceTable;
RIDL!{#[ uuid(0 x00000146, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IGlobalInterfaceTable(IGlobalInterfaceTableVtbl): IUnknown(IUnknownVtbl) {
fn RegisterInterfaceInGlobal(
pUnk: *mut IUnknown,
riid: REFIID,
pdwCookie: *mut DWORD,
) -> HRESULT,
fn RevokeInterfaceFromGlobal(
dwCookie: DWORD,
) -> HRESULT,
fn GetInterfaceFromGlobal(
dwCookie: DWORD,
riid: REFIID,
ppv: *mut *mut c_void,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000030, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISynchronize(ISynchronizeVtbl): IUnknown(IUnknownVtbl) {
fn Wait(
dwFlags: DWORD,
dwMilliseconds: DWORD,
) -> HRESULT,
fn Signal() -> HRESULT,
fn Reset() -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000031, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISynchronizeHandle(ISynchronizeHandleVtbl): IUnknown(IUnknownVtbl) {
fn GetHandle(
ph: *mut HANDLE,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000032, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISynchronizeEvent(ISynchronizeEventVtbl): ISynchronizeHandle(ISynchronizeHandleVtbl) {
fn SetEventHandle(
ph: *mut HANDLE,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000033, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISynchronizeContainer(ISynchronizeContainerVtbl): IUnknown(IUnknownVtbl) {
fn AddSynchronize(
pSync: *mut ISynchronize,
) -> HRESULT,
fn WaitMultiple(
dwFlags: DWORD,
dwTimeOut: DWORD,
ppSync: *mut *mut ISynchronize,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000025, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ISynchronizeMutex(ISynchronizeMutexVtbl): ISynchronize(ISynchronizeVtbl) {
fn ReleaseMutex() -> HRESULT,
}}
pub type LPCANCELMETHODCALLS = *mut ICancelMethodCalls;
RIDL!{#[ uuid(0 x00000029, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface ICancelMethodCalls(ICancelMethodCallsVtbl): IUnknown(IUnknownVtbl) {
fn Cancel(
ulSeconds: ULONG,
) -> HRESULT,
fn TestCancel() -> HRESULT,
}}
ENUM !{enum DCOM_CALL_STATE {
DCOM_NONE = 0 ,
DCOM_CALL_COMPLETE = 0 x1,
DCOM_CALL_CANCELED = 0 x2,
}}
RIDL!{#[ uuid(0 x0000002a, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IAsyncManager(IAsyncManagerVtbl): IUnknown(IUnknownVtbl) {
fn CompleteCall(
Result: HRESULT,
) -> HRESULT,
fn GetCallContext(
riid: REFIID,
pInterface: *mut *mut c_void,
) -> HRESULT,
fn GetState(
pulStateFlags: *mut ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x1c733a30, 0 x2a1c, 0 x11ce, 0 xad, 0 xe5, 0 x00, 0 xaa, 0 x00, 0 x44, 0 x77, 0 x3d)]
interface ICallFactory(ICallFactoryVtbl): IUnknown(IUnknownVtbl) {
fn CreateCall(
riid: REFIID,
pCtrlUnk: *mut IUnknown,
riid2: REFIID,
ppv: *mut *mut IUnknown,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000149, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IRpcHelper(IRpcHelperVtbl): IUnknown(IUnknownVtbl) {
fn GetDCOMProtocolVersion(
pComVersion: *mut DWORD,
) -> HRESULT,
fn GetIIDFromOBJREF(
pObjRef: *mut c_void,
piid: *mut *mut IID,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xeb0cb9e8, 0 x7996, 0 x11d2, 0 x87, 0 x2e, 0 x00, 0 x00, 0 xf8, 0 x08, 0 x08, 0 x59)]
interface IReleaseMarshalBuffers(IReleaseMarshalBuffersVtbl): IUnknown(IUnknownVtbl) {
fn ReleaseMarshalBuffer(
pMsg: *mut RPCOLEMESSAGE,
dwFlags: DWORD,
pChnl: *mut IUnknown,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x0000002b, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IWaitMultiple(IWaitMultipleVtbl): IUnknown(IUnknownVtbl) {
fn WaitMultiple(
timeout: DWORD,
pSync: *mut *mut ISynchronize,
) -> HRESULT,
fn AddSynchronize(
pSync: *mut ISynchronize,
) -> HRESULT,
}}
pub type LPADDRTRACKINGCONTROL = *mut IAddrTrackingControl;
RIDL!{#[ uuid(0 x00000147, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IAddrTrackingControl(IAddrTrackingControlVtbl): IUnknown(IUnknownVtbl) {
fn EnableCOMDynamicAddrTracking() -> HRESULT,
fn DisableCOMDynamicAddrTracking() -> HRESULT,
}}
pub type LPADDREXCLUSIONCONTROL = *mut IAddrExclusionControl;
RIDL!{#[ uuid(0 x00000148, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IAddrExclusionControl(IAddrExclusionControlVtbl): IUnknown(IUnknownVtbl) {
fn GetCurrentAddrExclusionList(
riid: REFIID,
ppEnumerator: *mut *mut c_void,
) -> HRESULT,
fn UpdateAddrExclusionList(
pEnumerator: *mut IUnknown,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3aca, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface IPipeByte(IPipeByteVtbl): IUnknown(IUnknownVtbl) {
fn Pull(
buf: *mut BYTE,
cRequest: ULONG,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Push(
buf: *mut BYTE,
cSent: ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3acb, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface AsyncIPipeByte(AsyncIPipeByteVtbl): IUnknown(IUnknownVtbl) {
fn Begin_Pull(
cRequest: ULONG,
) -> HRESULT,
fn Finish_Pull(
buf: *mut BYTE,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Begin_Push(
buf: *mut BYTE,
cSent: ULONG,
) -> HRESULT,
fn Finish_Push() -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3acc, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface IPipeLong(IPipeLongVtbl): IUnknown(IUnknownVtbl) {
fn Pull(
buf: *mut LONG,
cRequest: ULONG,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Push(
buf: *mut LONG,
cSent: ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3acd, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface AsyncIPipeLong(AsyncIPipeLongVtbl): IUnknown(IUnknownVtbl) {
fn Begin_Pull(
cRequest: ULONG,
) -> HRESULT,
fn Finish_Pull(
buf: *mut LONG,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Begin_Push(
buf: *mut LONG,
cSent: ULONG,
) -> HRESULT,
fn Finish_Push() -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3ace, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface IPipeDouble(IPipeDoubleVtbl): IUnknown(IUnknownVtbl) {
fn Pull(
buf: *mut DOUBLE,
cRequest: ULONG,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Push(
buf: *mut DOUBLE,
cSent: ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb2f3acf, 0 x2f86, 0 x11d1, 0 x8e, 0 x04, 0 x00, 0 xc0, 0 x4f, 0 xb9, 0 x98, 0 x9a)]
interface AsyncIPipeDouble(AsyncIPipeDoubleVtbl): IUnknown(IUnknownVtbl) {
fn Begin_Pull(
cRequest: ULONG,
) -> HRESULT,
fn Finish_Pull(
buf: *mut DOUBLE,
pcReturned: *mut ULONG,
) -> HRESULT,
fn Begin_Push(
buf: *mut DOUBLE,
cSent: ULONG,
) -> HRESULT,
fn Finish_Push() -> HRESULT,
}}
pub type CPFLAGS = DWORD;
STRUCT !{struct ContextProperty {
policyId: GUID,
flags: CPFLAGS,
pUnk: *mut IUnknown,
}}
pub type LPENUMCONTEXTPROPS = *mut IEnumContextProps;
RIDL!{#[ uuid(0 x000001c1, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IEnumContextProps(IEnumContextPropsVtbl): IUnknown(IUnknownVtbl) {
fn Next(
celt: ULONG,
pContextProperties: *mut ContextProperty,
pceltFetched: *mut ULONG,
) -> HRESULT,
fn Skip(
celt: ULONG,
) -> HRESULT,
fn Reset() -> HRESULT,
fn Clone(
ppEnumContextProps: *mut *mut IEnumContextProps,
) -> HRESULT,
fn Count(
pcelt: *mut ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x000001c0, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IContext(IContextVtbl): IUnknown(IUnknownVtbl) {
fn SetProperty(
rpolicyId: REFGUID,
flags: CPFLAGS,
pUnk: *mut IUnknown,
) -> HRESULT,
fn RemoveProperty(
rPolicyId: REFGUID,
) -> HRESULT,
fn GetProperty(
policyId: REFGUID,
pFlags: *mut CPFLAGS,
ppUnk: *mut *mut IUnknown,
) -> HRESULT,
fn EnumContextProps(
ppEnumContextProps: *mut *mut IEnumContextProps,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x000001c6, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IObjContext(IObjContextVtbl): IContext(IContextVtbl) {
fn Reserved1() -> (),
fn Reserved2() -> (),
fn Reserved3() -> (),
fn Reserved4() -> (),
fn Reserved5() -> (),
fn Reserved6() -> (),
fn Reserved7() -> (),
}}
ENUM !{enum APTTYPEQUALIFIER {
APTTYPEQUALIFIER_NONE = 0 ,
APTTYPEQUALIFIER_IMPLICIT_MTA = 1 ,
APTTYPEQUALIFIER_NA_ON_MTA = 2 ,
APTTYPEQUALIFIER_NA_ON_STA = 3 ,
APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4 ,
APTTYPEQUALIFIER_NA_ON_MAINSTA = 5 ,
APTTYPEQUALIFIER_APPLICATION_STA= 6 ,
}}
ENUM !{enum APTTYPE {
APTTYPE_CURRENT = -1 i32 as u32,
APTTYPE_STA = 0 ,
APTTYPE_MTA = 1 ,
APTTYPE_NA = 2 ,
APTTYPE_MAINSTA = 3 ,
}}
ENUM !{enum THDTYPE {
THDTYPE_BLOCKMESSAGES = 0 ,
THDTYPE_PROCESSMESSAGES = 1 ,
}}
pub type APARTMENTID = DWORD;
RIDL!{#[ uuid(0 x000001ce, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IComThreadingInfo(IComThreadingInfoVtbl): IUnknown(IUnknownVtbl) {
fn GetCurrentApartmentType(
pAptType: *mut APTTYPE,
) -> HRESULT,
fn GetCurrentThreadType(
pThreadType: *mut THDTYPE,
) -> HRESULT,
fn GetCurrentLogicalThreadId(
pguidLogicalThreadId: *mut GUID,
) -> HRESULT,
fn SetCurrentLogicalThreadId(
rguid: REFGUID,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x72380d55, 0 x8d2b, 0 x43a3, 0 x85, 0 x13, 0 x2b, 0 x6e, 0 xf3, 0 x14, 0 x34, 0 xe9)]
interface IProcessInitControl(IProcessInitControlVtbl): IUnknown(IUnknownVtbl) {
fn ResetInitializerTimeout(
dwSecondsRemaining: DWORD,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x00000040, 0 x0000, 0 x0000, 0 xc0, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x46)]
interface IFastRundown(IFastRundownVtbl): IUnknown(IUnknownVtbl) {}}
ENUM !{enum CO_MARSHALING_CONTEXT_ATTRIBUTES {
CO_MARSHALING_SOURCE_IS_APP_CONTAINER = 0 ,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_1 = 0 x80000000,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_2 = 0 x80000001,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_3 = 0 x80000002,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_4 = 0 x80000003,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_5 = 0 x80000004,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_6 = 0 x80000005,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_7 = 0 x80000006,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_8 = 0 x80000007,
CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_9 = 0 x80000008,
}}
RIDL!{#[ uuid(0 xd8f2f5e6, 0 x6102, 0 x4863, 0 x9f, 0 x26, 0 x38, 0 x9a, 0 x46, 0 x76, 0 xef, 0 xde)]
interface IMarshalingStream(IMarshalingStreamVtbl): IStream(IStreamVtbl) {
fn GetMarshalingContextAttribute(
attribute: CO_MARSHALING_CONTEXT_ATTRIBUTES,
pAttributeValue: *mut ULONG_PTR,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xc03f6a43, 0 x65a4, 0 x9818, 0 x98, 0 x7e, 0 xe0, 0 xb8, 0 x10, 0 xd2, 0 xa6, 0 xf2)]
interface IAgileReference(IAgileReferenceVtbl): IUnknown(IUnknownVtbl) {
fn Resolve(
riid: REFIID,
ppvObjectReference: *mut *mut c_void,
) -> HRESULT,
}}
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland