/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _INC_RDPENCOMAPI
#define _INC_RDPENCOMAPI

#if (_WIN32_WINNT >= 0x0600)

#ifdef __cplusplus
extern "C" {
#endif

typedef enum _ATTENDEE_DISCONNECT_REASON {
  ATTENDEE_DISCONNECT_REASON_MIN   = 0,
  ATTENDEE_DISCONNECT_REASON_APP   = 0,
  ATTENDEE_DISCONNECT_REASON_ERR   = 1,
  ATTENDEE_DISCONNECT_REASON_CLI   = 2,
  ATTENDEE_DISCONNECT_REASON_MAX   = 2
} ATTENDEE_DISCONNECT_REASON;

typedef enum _CHANNEL_ACCESS_ENUM {
  CHANNEL_ACCESS_ENUM_NONE          = 0,
  CHANNEL_ACCESS_ENUM_SENDRECEIVE   = 1
} CHANNEL_ACCESS_ENUM;

typedef enum _CHANNEL_FLAGS {
  CHANNEL_FLAGS_LEGACY         = 0x01,
  CHANNEL_FLAGS_UNCOMPRESSED   = 0x02
} CHANNEL_FLAGS;

typedef enum _CHANNEL_PRIORITY {
  CHANNEL_PRIORITY_LO    = 0,
  CHANNEL_PRIORITY_MED   = 1,
  CHANNEL_PRIORITY_HI    = 2
} CHANNEL_PRIORITY;

typedef enum _CTRL_LEVEL {
  CTRL_LEVEL_MIN           = 0,
  CTRL_LEVEL_INVALID       = 0,
  CTRL_LEVEL_NONE          = 1,
  CTRL_LEVEL_VIEW          = 2,
  CTRL_LEVEL_INTERACTIVE   = 3,
  CTRL_LEVEL_MAX           = 3
} CTRL_LEVEL;

typedef enum _RDPENCOMAPI_ATTENDEE_FLAGS {
  ATTENDEE_FLAGS_LOCAL   = 1
} RDPENCOMAPI_ATTENDEE_FLAGS;

typedef enum _RDPENCOMAPI_CONSTANTS {
  CONST_MAX_CHANNEL_MESSAGE_SIZE          = 1024,
  CONST_MAX_CHANNEL_NAME_LEN              = 8,
  CONST_MAX_LEGACY_CHANNEL_MESSAGE_SIZE   = 409600,
  CONST_ATTENDEE_ID_EVERYONE              = -1,
  CONST_ATTENDEE_ID_HOST                  = 0,
  CONST_CONN_INTERVAL                     = 50
} RDPENCOMAPI_CONSTANTS;

typedef enum _RDPSRAPI_APP_FLAGS {
  APP_FLAG_PRIVILEGED   = 1
} RDPSRAPI_APP_FLAGS;

typedef enum _RDPSRAPI_WND_FLAGS {
  WND_FLAG_PRIVILEGED   = 1
} RDPSRAPI_WND_FLAGS;

#ifdef __cplusplus
}
#endif

#undef  INTERFACE
#define INTERFACE IRDPSRAPITcpConnectionInfo
#ifdef __GNUC__
#warning COM interfaces layout in this header has not been verified.
#warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
DECLARE_INTERFACE_(IRDPSRAPITcpConnectionInfo,IDispatch)
{
    BEGIN_INTERFACE

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;

    /* IRDPSRAPITcpConnectionInfo methods */
    STDMETHOD_(HRESULT,get_Protocol)(THIS_ long *plProtocol) PURE;
    STDMETHOD_(HRESULT,get_LocalPort)(THIS_ long *plPort) PURE;
    STDMETHOD_(HRESULT,get_LocalIP)(THIS_ BSTR *pbstrLocalIP) PURE;
    STDMETHOD_(HRESULT,get_PeerPort)(THIS_ long *plPort) PURE;
    STDMETHOD_(HRESULT,get_PeerIP)(THIS_ BSTR *pbstrIP) PURE;

    END_INTERFACE
};
#ifdef COBJMACROS
#define IRDPSRAPITcpConnectionInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRDPSRAPITcpConnectionInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRDPSRAPITcpConnectionInfo_Release(This) (This)->lpVtbl->Release(This)
#define IRDPSRAPITcpConnectionInfo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IRDPSRAPITcpConnectionInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IRDPSRAPITcpConnectionInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IRDPSRAPITcpConnectionInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#define IRDPSRAPITcpConnectionInfo_get_Protocol(This,plProtocol) (This)->lpVtbl->get_Protocol(This,plProtocol)
#define IRDPSRAPITcpConnectionInfo_get_LocalPort(This,plPort) (This)->lpVtbl->get_LocalPort(This,plPort)
#define IRDPSRAPITcpConnectionInfo_get_LocalIP(This,pbstrLocalIP) (This)->lpVtbl->get_LocalIP(This,pbstrLocalIP)
#define IRDPSRAPITcpConnectionInfo_get_PeerPort(This,plPort) (This)->lpVtbl->get_PeerPort(This,plPort)
#define IRDPSRAPITcpConnectionInfo_get_PeerIP(This,pbstrIP) (This)->lpVtbl->get_PeerIP(This,pbstrIP)
#endif /*COBJMACROS*/

#undef  INTERFACE
#define INTERFACE IRDPSRAPIAttendee
#ifdef __GNUC__
#warning COM interfaces layout in this header has not been verified.
#warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
DECLARE_INTERFACE_(IRDPSRAPIAttendee,IDispatch)
{
    BEGIN_INTERFACE

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;

    /* IRDPSRAPIAttendee methods */
    STDMETHOD_(HRESULT,get_Id)(THIS_ long *pId) PURE;
    STDMETHOD_(HRESULT,get_RemoteName)(THIS_ BSTR *pVal) PURE;
    STDMETHOD_(HRESULT,get_ControlLevel)(THIS_ CTRL_LEVEL *pVal) PURE;
    STDMETHOD_(HRESULT,put_ControlLevel)(THIS_ CTRL_LEVEL pNewVal) PURE;
    STDMETHOD_(HRESULT,get_Invitation)(THIS_ IRDPSRAPIInvitation **ppVal) PURE;
    STDMETHOD_(HRESULT,TerminateConnection)(THIS) PURE;
    STDMETHOD_(HRESULT,get_Flags)(THIS_ long *plFlags) PURE;
    STDMETHOD_(HRESULT,get_ConnectivityInfo)(THIS_ IUnknown **ppVal) PURE;

    END_INTERFACE
};
#ifdef COBJMACROS
#define IRDPSRAPIAttendee_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRDPSRAPIAttendee_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRDPSRAPIAttendee_Release(This) (This)->lpVtbl->Release(This)
#define IRDPSRAPIAttendee_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IRDPSRAPIAttendee_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IRDPSRAPIAttendee_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IRDPSRAPIAttendee_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#define IRDPSRAPIAttendee_get_Id(This,pId) (This)->lpVtbl->get_Id(This,pId)
#define IRDPSRAPIAttendee_get_RemoteName(This,pVal) (This)->lpVtbl->get_RemoteName(This,pVal)
#define IRDPSRAPIAttendee_get_ControlLevel(This,pVal) (This)->lpVtbl->get_ControlLevel(This,pVal)
#define IRDPSRAPIAttendee_put_ControlLevel(This,pNewVal) (This)->lpVtbl->put_ControlLevel(This,pNewVal)
#define IRDPSRAPIAttendee_get_Invitation(This,ppVal) (This)->lpVtbl->get_Invitation(This,ppVal)
#define IRDPSRAPIAttendee_TerminateConnection() (This)->lpVtbl->TerminateConnection(This)
#define IRDPSRAPIAttendee_get_Flags(This,plFlags) (This)->lpVtbl->get_Flags(This,plFlags)
#define IRDPSRAPIAttendee_get_ConnectivityInfo(This,ppVal) (This)->lpVtbl->get_ConnectivityInfo(This,ppVal)
#endif /*COBJMACROS*/

#endif /*(_WIN32_WINNT >= 0x0600)*/

#endif /*_INC_RDPENCOMAPI */

