/*** Autogenerated by WIDL 0.1 from dcom.idl - Do not edit ***/
#ifndef __WIDL_DCOM_H
#define __WIDL_DCOM_H
#ifdef __cplusplus
extern "C" {
#endif
#include "unknwn.h"
typedef MIDL_uhyper ID;

typedef ID MID;

typedef ID OXID;

typedef ID OID;

typedef ID SETID;

typedef GUID IPID;

typedef GUID CID;

typedef REFGUID REFIPID;

#define COM_MINOR_VERSION_1 (1)

#define COM_MINOR_VERSION_2 (2)

#define COM_MAJOR_VERSION (5)

#define COM_MINOR_VERSION (3)

typedef struct tagCOMVERSION {
    unsigned short MajorVersion;
    unsigned short MinorVersion;
} COMVERSION;

#define ORPCF_NULL (0)

#define ORPCF_LOCAL (1)

#define ORPCF_RESERVED1 (2)

#define ORPCF_RESERVED2 (4)

#define ORPCF_RESERVED3 (8)

#define ORPCF_RESERVED4 (16)

typedef struct tagORPC_EXTENT {
    GUID id;
    unsigned long size;
    byte data[1];
} ORPC_EXTENT;

typedef struct tagORPC_EXTENT_ARRAY {
    unsigned long size;
    unsigned long reserved;
    ORPC_EXTENT **extent;
} ORPC_EXTENT_ARRAY;

typedef struct tagORPCTHIS {
    COMVERSION version;
    unsigned long flags;
    unsigned long reserved1;
    CID cid;
    ORPC_EXTENT_ARRAY *extensions;
} ORPCTHIS;

typedef struct tagORPCTHAT {
    unsigned long flags;
    ORPC_EXTENT_ARRAY *extensions;
} ORPCTHAT;

#define NCADG_IP_UDP (0x8)

#define NCACN_IP_TCP (0x7)

#define NCADG_IPX (0xe)

#define NCACN_SPX (0xc)

#define NCACN_NB_NB (0x12)

#define NCACN_NB_IPX (0xd)

#define NCACN_DNET_NSP (0x4)

#define NCACN_HTTP (0x1f)

typedef struct tagSTRINGBINDING {
    unsigned short wTowerId;
    unsigned short aNetworkAddr[1];
} STRINGBINDING;

#define COM_C_AUTHZ_NONE (0xffff)

typedef struct tagSECURITYBINDING {
    unsigned short wAuthnSvc;
    unsigned short wAuthzSvc;
    unsigned short aPrincName[1];
} SECURITYBINDING;

typedef struct tagDUALSTRINGARRAY {
    unsigned short wNumEntries;
    unsigned short wSecurityOffset;
    unsigned short aStringArray[1];
} DUALSTRINGARRAY;

#define OBJREF_SIGNATURE (0x574f454d)

#define OBJREF_STANDARD (0x1)

#define OBJREF_HANDLER (0x2)

#define OBJREF_CUSTOM (0x4)

#define SORF_OXRES1 (0x1)

#define SORF_OXRES2 (0x20)

#define SORF_OXRES3 (0x40)

#define SORF_OXRES4 (0x80)

#define SORF_OXRES5 (0x100)

#define SORF_OXRES6 (0x200)

#define SORF_OXRES7 (0x400)

#define SORF_OXRES8 (0x800)

#define SORF_NULL (0x0)

#define SORF_NOPING (0x1000)

typedef struct tagSTDOBJREF {
    unsigned long flags;
    unsigned long cPublicRefs;
    OXID oxid;
    OID oid;
    IPID ipid;
} STDOBJREF;

typedef struct tagOBJREF {
    unsigned long signature;
    unsigned long flags;
    GUID iid;
    union {
        struct OR_STANDARD {
            STDOBJREF std;
            DUALSTRINGARRAY saResAddr;
        } u_standard;
        struct OR_HANDLER {
            STDOBJREF std;
            CLSID clsid;
            DUALSTRINGARRAY saResAddr;
        } u_handler;
        struct OR_CUSTOM {
            CLSID clsid;
            unsigned long cbExtension;
            unsigned long size;
            byte *pData;
        } u_custom;
    } u_objref;
} OBJREF;

typedef struct tagMInterfacePointer {
    ULONG ulCntData;
    BYTE abData[1];
} MInterfacePointer;

typedef MInterfacePointer *PMInterfacePointer;

typedef struct IRemUnknown IRemUnknown;
typedef IRemUnknown *LPREMUNKNOWN;

typedef struct tagREMQIRESULT {
    HRESULT hResult;
    STDOBJREF std;
} REMQIRESULT;

typedef struct tagREMINTERFACEREF {
    IPID ipid;
    unsigned long cPublicRefs;
    unsigned long cPrivateRefs;
} REMINTERFACEREF;

/*****************************************************************************
 * IRemUnknown interface
 */
DEFINE_GUID(IID_IRemUnknown, 0x00000131, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#define ICOM_INTERFACE IRemUnknown
#define IRemUnknown_METHODS \
    ICOM_METHOD5 (HRESULT,RemQueryInterface,REFIPID,ripid,unsigned long,cRefs,unsigned short,cIids,IID*,iids,REMQIRESULT**,ppQIResults) \
    ICOM_METHOD3 (HRESULT,RemAddRef,unsigned short,cInterfaceRefs,REMINTERFACEREF*,InterfaceRefs,HRESULT*,pResults) \
    ICOM_METHOD2 (HRESULT,RemRelease,unsigned short,cInterfaceRefs,REMINTERFACEREF*,InterfaceRefs)
#define IRemUnknown_IMETHODS \
    IUnknown_IMETHODS \
    IRemUnknown_METHODS
ICOM_DEFINE(IRemUnknown,IUnknown)
#undef ICOM_INTERFACE

/*** IUnknown methods ***/
#define IRemUnknown_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define IRemUnknown_AddRef(p) ICOM_CALL(AddRef,p)
#define IRemUnknown_Release(p) ICOM_CALL(Release,p)
/*** IRemUnknown methods ***/
#define IRemUnknown_RemQueryInterface(p,a,b,c,d,e) ICOM_CALL5(RemQueryInterface,p,a,b,c,d,e)
#define IRemUnknown_RemAddRef(p,a,b,c) ICOM_CALL3(RemAddRef,p,a,b,c)
#define IRemUnknown_RemRelease(p,a,b) ICOM_CALL2(RemRelease,p,a,b)

HRESULT CALLBACK IRemUnknown_RemQueryInterface_Proxy(
    IRemUnknown* This,
    REFIPID ripid,
    unsigned long cRefs,
    unsigned short cIids,
    IID* iids,
    REMQIRESULT** ppQIResults);
void __RPC_STUB IRemUnknown_RemQueryInterface_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRemUnknown_RemAddRef_Proxy(
    IRemUnknown* This,
    unsigned short cInterfaceRefs,
    REMINTERFACEREF* InterfaceRefs,
    HRESULT* pResults);
void __RPC_STUB IRemUnknown_RemAddRef_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRemUnknown_RemRelease_Proxy(
    IRemUnknown* This,
    unsigned short cInterfaceRefs,
    REMINTERFACEREF* InterfaceRefs);
void __RPC_STUB IRemUnknown_RemRelease_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

typedef struct IRemUnknown2 IRemUnknown2;
typedef IRemUnknown2 *LPREMUNKNOWN2;

/*****************************************************************************
 * IRemUnknown2 interface
 */
DEFINE_GUID(IID_IRemUnknown2, 0x00000142, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#define ICOM_INTERFACE IRemUnknown2
#define IRemUnknown2_METHODS \
    ICOM_METHOD5 (HRESULT,RemQueryInterface2,REFIPID,ripid,unsigned short,cIids,IID*,iids,HRESULT*,phr,MInterfacePointer**,ppMIF)
#define IRemUnknown2_IMETHODS \
    IRemUnknown_IMETHODS \
    IRemUnknown2_METHODS
ICOM_DEFINE(IRemUnknown2,IRemUnknown)
#undef ICOM_INTERFACE

/*** IUnknown methods ***/
#define IRemUnknown2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define IRemUnknown2_AddRef(p) ICOM_CALL(AddRef,p)
#define IRemUnknown2_Release(p) ICOM_CALL(Release,p)
/*** IRemUnknown methods ***/
#define IRemUnknown2_RemQueryInterface(p,a,b,c,d,e) ICOM_CALL5(RemQueryInterface,p,a,b,c,d,e)
#define IRemUnknown2_RemAddRef(p,a,b,c) ICOM_CALL3(RemAddRef,p,a,b,c)
#define IRemUnknown2_RemRelease(p,a,b) ICOM_CALL2(RemRelease,p,a,b)
/*** IRemUnknown2 methods ***/
#define IRemUnknown2_RemQueryInterface2(p,a,b,c,d,e) ICOM_CALL5(RemQueryInterface2,p,a,b,c,d,e)

HRESULT CALLBACK IRemUnknown2_RemQueryInterface2_Proxy(
    IRemUnknown2* This,
    REFIPID ripid,
    unsigned short cIids,
    IID* iids,
    HRESULT* phr,
    MInterfacePointer** ppMIF);
void __RPC_STUB IRemUnknown2_RemQueryInterface2_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#if 0
/*****************************************************************************
 * IOXIDResolver interface (v0.0)
 */
DEFINE_GUID(IID_IOXIDResolver, 0x99fcfec4, 0x5260, 0x101b, 0xbb,0xcb, 0x00,0xaa,0x00,0x21,0x34,0x7a);
extern RPC_IF_HANDLE IOXIDResolver_v0_0_c_ifspec;
extern RPC_IF_HANDLE IOXIDResolver_v0_0_s_ifspec;
error_status_t ResolveOxid(
    handle_t hRpc,
    OXID* pOxid,
    unsigned short cRequestedProtseqs,
    unsigned short arRequestedProtseqs,
    DUALSTRINGARRAY** ppdsaOxidBindings,
    IPID* pipidRemUnknown,
    DWORD* pAuthnHint);
error_status_t SimplePing(
    handle_t hRpc,
    SETID* pSetId);
error_status_t ComplexPing(
    handle_t hRpc,
    SETID* pSetId,
    unsigned short SequenceNum,
    unsigned short cAddToSet,
    unsigned short cDelFromSet,
    OID AddToSet,
    OID DelFromSet,
    unsigned short* pPingBackoffFactor);
error_status_t ServerAlive(
    handle_t hRpc);
error_status_t ResolveOxid2(
    handle_t hRpc,
    OXID* pOxid,
    unsigned short cRequestedProtseqs,
    unsigned short arRequestedProtseqs,
    DUALSTRINGARRAY** ppdsaOxidBindings,
    IPID* pipidRemUnknown,
    DWORD* pAuthnHint,
    COMVERSION* pComVersion);

#define MODE_GET_CLASS_OBJECT (0x7fffffff)

/*****************************************************************************
 * IRemoteActivation interface (v0.0)
 */
DEFINE_GUID(IID_IRemoteActivation, 0x4d9f4ab8, 0x7d1c, 0x11cf, 0x86,0x1e, 0x00,0x20,0xaf,0x6e,0x7c,0x57);
extern RPC_IF_HANDLE IRemoteActivation_v0_0_c_ifspec;
extern RPC_IF_HANDLE IRemoteActivation_v0_0_s_ifspec;
HRESULT RemoteActivation(
    handle_t hRpc,
    ORPCTHIS* ORPCthis,
    ORPCTHAT* ORPCthat,
    GUID* Clsid,
    WCHAR* pwszObjectName,
    MInterfacePointer* pObjectStorage,
    DWORD ClientImpLevel,
    DWORD Mode,
    DWORD Interfaces,
    IID* pIIDs,
    unsigned short cRequestedProtseqs,
    unsigned short RequestedProtseqs,
    OXID* pOxid,
    DUALSTRINGARRAY** ppdsaOxidBindings,
    IPID* pipidRemUnknown,
    DWORD* pAuthnHint,
    COMVERSION* pServerVersion,
    HRESULT* phr,
    MInterfacePointer** ppInterfaceData,
    HRESULT* pResults);

#endif
#ifdef __cplusplus
}
#endif
#endif /* __WIDL_DCOM_H */
