WindowsXP-SP1/termsrv/remdsk/rds/h/iplgxprt.idl
2020-09-30 16:53:49 +02:00

100 lines
3.9 KiB
Plaintext

import "oaidl.idl";
import "ocidl.idl";
#define UUID_IPluggableTransport FB7045F0-A4DC-11D2-B724-00104BC51339
////////////////////////////////////////////////////////////////////////////////////////
// NOTE NOTE: this is taken from AxCore.idl
// Win32 HANDLEs have to be cast to these as the MIDL compiler doesn't
// like the HANDLE type or in fact anything remotely associated with
// them. If this ever gets ported to a MAC environment then these will
// have to become an alertable synchronisation object that it supports
typedef unsigned int HCOMMDEV;
typedef unsigned int HEVENT;
typedef enum tagPLUGXPRT_FRAMING
{
FRAMING_LEGACY_PSTN = 0, // legacy PSTN framing
FRAMING_X224 = 1, // X224 Connect + X224 Data Transfer
}
PLUGXPRT_FRAMING;
typedef enum tagPLUGXPRT_CALL_TYPE
{
PLUGXPRT_UNKNOWN_CALL_TYPE = 0,
PLUGXPRT_CALLER = 1,
PLUGXPRT_CALLEE = 2,
}
PLUGXPRT_CALL_TYPE;
typedef enum tagPLUGXPRT_PSTN_CALL_CONTROL
{
PLUGXPRT_PSTN_CALL_CONTROL_PORT_HANDLE = 0, // default, for normal PSTN
PLUGXPRT_PSTN_CALL_CONTROL_MANUAL = 1, // for legacy null modem
}
PLUGXPRT_PSTN_CALL_CONTROL;
typedef struct tagPLUGXPRT_PARAMETERS
{
ULONG cbStructSize; // size of this structure, must be initialized
DWORD dwFlags; // valid fields defined below
/* PSTN framing */
PLUGXPRT_PSTN_CALL_CONTROL eCallControl; // PSTN call control
ULONG cbReadFileBufferSize; // 10K default; must be no less than 1K
ULONG cbPhysicalLayerSendBufferSize; // 1K default; must be no less than the default
ULONG cbPhysicalLayerReceiveBufferSize; // 10K default; must be no less than 1K
ULONG cMaximumT200TimeoutsInQ922; // 5 default; must be no less than the default
ULONG nT203TimeoutInQ922; // must be no less than the default, which is
// 30000 for PLUGXPRT_PSTN_CALL_CONTROL_PORT_HANDLE,
// 600 for PLUGXPRT_PSTN_CALL_CONTROL_MANUAL
/* X.224 framing */
// ...nothing so far...
}
PLUGXPRT_PARAMETERS;
cpp_quote("#define PSTN_PARAM__CALL_CONTROL 0x0001")
cpp_quote("#define PSTN_PARAM__READ_FILE_BUFFER_SIZE 0x0002")
cpp_quote("#define PSTN_PARAM__PHYSICAL_LAYER_SEND_BUFFER_SIZE 0x0004")
cpp_quote("#define PSTN_PARAM__PHSYICAL_LAYER_RECV_BUFFER_SIZE 0x0008")
cpp_quote("#define PSTN_PARAM__MAX_T200_TIMEOUT_COUNT_IN_Q922 0x0010")
cpp_quote("#define PSTN_PARAM__T203_TIMEOUT_IN_Q922 0x0020")
[
object,
uuid(UUID_IPluggableTransport),
pointer_default(unique)
]
interface IPluggableTransport : IUnknown
{
HRESULT CreateConnection(
[out] BSTR *pbstrConnectionID, // For placing a call and closing connection
[in] PLUGXPRT_CALL_TYPE eCaller, // caller vs callee
[in] DWORD dwProcessID, // Used for DuplicateHandle
[in] HCOMMDEV hCommLink, // Handle to communications file handle
[in] HEVENT hevtDataAvailable, // Ready To Read event ( data avail )
[in] HEVENT hevtWriteReady, // Ready To Write event
[in] HEVENT hevtConnectionClosed, // Connection closed ( unexpectedly???)
[in] PLUGXPRT_FRAMING eFraming, // framing of bits sent on link
[in] PLUGXPRT_PARAMETERS *pParams // OPTIONAL framing specific parameters
);
HRESULT CloseConnection(
[in] BSTR bstrConnectionID);
HRESULT EnableWinsock( );
HRESULT DisableWinsock( );
};