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 UINT_PTR HCOMMDEV; typedef UINT_PTR 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( ); };