Msp.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:8k
- //
- // Copyright (c) Microsoft Corporation. All rights reserved.
- cpp_quote("/* Copyright (c) Microsoft Corporation. All rights reserved.*/")
- ///////////////////////////////////////////////////////////////////////////
- // msp.idl : IDL source for Media Service Provider interface
- /////////////////////////////////////////////////////////////////////////////
- #ifndef __MEDIA_STREAM_PROVIDER_IDL__
- #define __MEDIA_STREAM_PROVIDER_IDL__
- import "tapi3if.idl";
- /////////////////////////////////////////////////////////////////////////////
- // Forward declarations
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- // Type definitions
- /////////////////////////////////////////////////////////////////////////////
- typedef long * MSP_HANDLE;
- typedef enum
- {
- ADDRESS_TERMINAL_AVAILABLE, // new terminal arrived via PNP
- // ITTerminal *
- ADDRESS_TERMINAL_UNAVAILABLE, // terminal gone via PNP
- // ITTerminal *
- } MSP_ADDRESS_EVENT;
- typedef enum
- {
- // In each case the MSP fills in as much as much info as it can. Terminals
- // or error codes may not be available, in which case the MSP fills in zero.
- // The bare-bones info needed is indicated here.
- CALL_NEW_STREAM, // - a new stream is created by the call. The app can
- // choose to select a terminal or delete the stream from the call.
- // ITStream *
- CALL_STREAM_FAIL, // - setup of the stream failed or the stream fails to start.
- // ITStream *
- // Error code
- CALL_TERMINAL_FAIL, // - The terminal failed to connect.
- // ITTerminal *
- // Error code
- CALL_STREAM_NOT_USED, // - The stream is not used in the call (the remote
- // party rejected it).
- // ITStream *
- CALL_STREAM_ACTIVE, // - The app needs this event to decide when a
- // stream can be used to send and receive data.
- // It is fired when the streams enter running state
- // (the timing of which is determined by the TSP).
- // ITStream *
- CALL_STREAM_INACTIVE // - No more data can be sent to or received from
- // this stream. This happens when a send stream
- // has sent all its data, or when a receive stream
- // stops receiving data.
- // ITStream *
- } MSP_CALL_EVENT;
- typedef enum
- {
- CALL_CAUSE_UNKNOWN,
- CALL_CAUSE_BAD_DEVICE,
- // a bad device caused failure, for either STREAM_FAIL or TERMINAL_FAIL.
- CALL_CAUSE_CONNECT_FAIL,
- // either connecting the stream failed or connecting the terminal failed.
- // Note, if a terminal can not be connected to a stream, the app will get
- // a TERMINAL_FAIL event with CMC_CONNECT_FAIL. If this stream failed
- // because the terminal is the only one to use, the app will also get a
- // STREAM_FAIL event with CMC_CONNECT_FAIL.
- CALL_CAUSE_LOCAL_REQUEST,
- // the event is the result of the app抯 calling a method on the stream.
- CALL_CAUSE_REMOTE_REQUEST,
- // the event is the result of the remote endpoint抯 request.
- CALL_CAUSE_MEDIA_TIMEOUT,
- // the media that carries the stream is temporarily not available.
- CALL_CAUSE_MEDIA_RECOVERED,
- // the media goes back to normal from a temporary deny of service.
- CALL_CAUSE_QUALITY_OF_SERVICE
- // the event is because qos does/doesn't allow the media to send.
- } MSP_CALL_EVENT_CAUSE;
- typedef enum
- {
- ME_ADDRESS_EVENT,
- ME_CALL_EVENT,
- ME_TSP_DATA,
- ME_PRIVATE_EVENT,
- ME_ASR_TERMINAL_EVENT,
- ME_TTS_TERMINAL_EVENT,
- ME_FILE_TERMINAL_EVENT,
- ME_TONE_TERMINAL_EVENT
- } MSP_EVENT;
- typedef struct
- {
- DWORD dwSize; // total size
- MSP_EVENT Event; // event type
- MSP_HANDLE hCall; // may be NULL
- [switch_type(MSP_EVENT), switch_is((MSP_EVENT)Event)]
- union
- {
- [case(ME_ADDRESS_EVENT)]
- struct
- {
- MSP_ADDRESS_EVENT Type;
- ITTerminal * pTerminal;
- } MSP_ADDRESS_EVENT_INFO;
- [case(ME_CALL_EVENT)]
- struct
- {
- MSP_CALL_EVENT Type;
- MSP_CALL_EVENT_CAUSE Cause;
- ITStream * pStream;
- ITTerminal * pTerminal;
- HRESULT hrError;
- } MSP_CALL_EVENT_INFO;
- [case(ME_TSP_DATA)]
- struct
- {
- DWORD dwBufferSize;
- BYTE pBuffer[1];
- } MSP_TSP_DATA;
- [case(ME_PRIVATE_EVENT)]
- struct
- {
- IDispatch * pEvent;
- long lEventCode;
- } MSP_PRIVATE_EVENT_INFO;
- [case(ME_FILE_TERMINAL_EVENT)]
- struct
- {
- ITTerminal * pParentFileTerminal;
- ITFileTrack * pFileTrack;
- TERMINAL_MEDIA_STATE TerminalMediaState;
- FT_STATE_EVENT_CAUSE ftecEventCause;
- HRESULT hrErrorCode;
- } MSP_FILE_TERMINAL_EVENT_INFO;
- [case(ME_ASR_TERMINAL_EVENT)]
- struct
- {
- ITTerminal * pASRTerminal;
- HRESULT hrErrorCode;
- } MSP_ASR_TERMINAL_EVENT_INFO;
- [case(ME_TTS_TERMINAL_EVENT)]
- struct
- {
- ITTerminal * pTTSTerminal;
- HRESULT hrErrorCode;
- } MSP_TTS_TERMINAL_EVENT_INFO;
- [case(ME_TONE_TERMINAL_EVENT)]
- struct
- {
- ITTerminal * pToneTerminal;
- HRESULT hrErrorCode;
- } MSP_TONE_TERMINAL_EVENT_INFO;
- };
- } MSP_EVENT_INFO;
- /////////////////////////////////////////////////////////////////////////////
- // Interface definitions
- /////////////////////////////////////////////////////////////////////////////
- [
- uuid(6E0887BE-BA1A-492e-BD10-4020EC5E33E0),
- helpstring("ITPluggableTerminalEventSink"),
- pointer_default(unique)
- ]
- interface ITPluggableTerminalEventSink : IUnknown
- {
- HRESULT FireEvent(
- [in] const MSP_EVENT_INFO *pMspEventInfo
- );
- }
- [
- uuid(F7115709-A216-4957-A759-060AB32A90D1),
- helpstring("ITPluggableTerminalEventSinkRegistration"),
- pointer_default(unique)
- ]
- interface ITPluggableTerminalEventSinkRegistration : IUnknown
- {
- HRESULT RegisterSink(
- [in] ITPluggableTerminalEventSink* pEventSink
- );
- HRESULT UnregisterSink(
- );
- }
- [
- uuid(EE3BD600-3868-11D2-A045-00C04FB6809F),
- helpstring("ITMSPAddress Interface"),
- pointer_default(unique)
- ]
- interface ITMSPAddress : IUnknown
- {
- HRESULT Initialize(
- [in] MSP_HANDLE hEvent
- );
- HRESULT Shutdown();
- HRESULT CreateMSPCall(
- [in] MSP_HANDLE hCall,
- [in] DWORD dwReserved,
- [in] DWORD dwMediaType,
- [in] IUnknown * pOuterUnknown,
- [out] IUnknown ** ppStreamControl
- );
- HRESULT ShutdownMSPCall(
- [in] IUnknown * pStreamControl
- );
- HRESULT ReceiveTSPData(
- [in] IUnknown * pMSPCall,
- [in, size_is(dwSize)] BYTE * pBuffer,
- [in] DWORD dwSize
- );
- HRESULT GetEvent(
- [in,out] DWORD * pdwSize,
- [in, out, size_is(*pdwSize)] byte * pEventBuffer
- );
- }
- #endif // __MEDIA_STREAM_PROVIDER_IDL__