📄 av_upnp.h
字号:
virtual DWORD Search(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszSearchCriteria,
/* [in] */ LPCWSTR pszFilter,
/* [in] */ unsigned long StartingIndex,
/* [in] */ unsigned long RequestedCount,
/* [in] */ LPCWSTR pszSortCriteria,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pNumberReturned,
/* [in, out] */ unsigned long* pTotalMatches,
/* [in, out] */ unsigned long* pUpdateID);
virtual DWORD CreateObject(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszElements,
/* [in, out] */ wstring* pstrObjectID,
/* [in, out] */ wstring* pstrResult);
virtual DWORD DestroyObject(
/* [in] */ LPCWSTR pszObjectID);
virtual DWORD UpdateObject(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszCurrentTagValue,
/* [in] */ LPCWSTR pszNewTagValue);
virtual DWORD ImportResource(
/* [in] */ LPCWSTR pszSourceURI,
/* [in] */ LPCWSTR pszDestinationURI,
/* [in, out] */ unsigned long* pTransferID);
virtual DWORD ExportResource(
/* [in] */ LPCWSTR pszSourceURI,
/* [in] */ LPCWSTR pszDestinationURI,
/* [in, out] */ unsigned long* pTransferID);
virtual DWORD StopTransferResource(
/* [in] */ unsigned long TransferID);
virtual DWORD GetTransferProgress(
/* [in] */ unsigned long TransferID,
/* [in, out] */ wstring* pstrTransferStatus,
/* [in, out] */ wstring* pstrTransferLength,
/* [in, out] */ wstring* pstrTransferTotal);
virtual DWORD DeleteResource(
/* [in] */ LPCWSTR pszResourceURI);
virtual DWORD CreateReference(
/* [in] */ LPCWSTR pszContainerID,
/* [in] */ LPCWSTR pszObjectID,
/* [in, out] */ wstring* pstrNewID);
protected:
// InvokeVendorAction may be overriden by the toolkit user to extend this service's actions
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
};
//
// Default implementation of AV services
//
class AVTransportServiceImpl :
public IUPnPService_AVTransport1,
public VirtualServiceSupport<IAVTransport>
{
public:
AVTransportServiceImpl();
virtual ~AVTransportServiceImpl();
// IUPnPService_AVTransport1
public:
STDMETHOD(get_TransportState)(BSTR* pTransportState);
STDMETHOD(get_TransportStatus)(BSTR* pTransportStatus);
STDMETHOD(get_PlaybackStorageMedium)(BSTR* pPlaybackStorageMedium);
STDMETHOD(get_RecordStorageMedium)(BSTR* pRecordStorageMedium);
STDMETHOD(get_PossiblePlaybackStorageMedia)(BSTR* pPossiblePlaybackStorageMedia);
STDMETHOD(get_PossibleRecordStorageMedia)(BSTR* pPossibleRecordStorageMedia);
STDMETHOD(get_CurrentPlayMode)(BSTR* pCurrentPlayMode);
STDMETHOD(get_TransportPlaySpeed)(BSTR* pTransportPlaySpeed);
STDMETHOD(get_RecordMediumWriteStatus)(BSTR* pRecordMediumWriteStatus);
STDMETHOD(get_CurrentRecordQualityMode)(BSTR* pCurrentRecordQualityMode);
STDMETHOD(get_PossibleRecordQualityModes)(BSTR* pPossibleRecordQualityModes);
STDMETHOD(get_NumberOfTracks)(unsigned long* pNumberOfTracks);
STDMETHOD(get_CurrentTrack)(unsigned long* pCurrentTrack);
STDMETHOD(get_CurrentTrackDuration)(BSTR* pCurrentTrackDuration);
STDMETHOD(get_CurrentMediaDuration)(BSTR* pCurrentMediaDuration);
STDMETHOD(get_CurrentTrackMetaData)(BSTR* pCurrentTrackMetaData);
STDMETHOD(get_CurrentTrackURI)(BSTR* pCurrentTrackURI);
STDMETHOD(get_AVTransportURI)(BSTR* pAVTransportURI);
STDMETHOD(get_AVTransportURIMetaData)(BSTR* pAVTransportURIMetaData);
STDMETHOD(get_NextAVTransportURI)(BSTR* pNextAVTransportURI);
STDMETHOD(get_NextAVTransportURIMetaData)(BSTR* pNextAVTransportURIMetaData);
STDMETHOD(get_RelativeTimePosition)(BSTR* pRelativeTimePosition);
STDMETHOD(get_AbsoluteTimePosition)(BSTR* pAbsoluteTimePosition);
STDMETHOD(get_RelativeCounterPosition)(long* pRelativeCounterPosition);
STDMETHOD(get_AbsoluteCounterPosition)(long* pAbsoluteCounterPosition);
STDMETHOD(get_CurrentTransportActions)(BSTR* pCurrentTransportActions);
STDMETHOD(get_LastChange)(BSTR* pLastChange);
STDMETHOD(get_A_ARG_TYPE_SeekMode)(BSTR* pA_ARG_TYPE_SeekMode);
STDMETHOD(get_A_ARG_TYPE_SeekTarget)(BSTR* pA_ARG_TYPE_SeekTarget);
STDMETHOD(get_A_ARG_TYPE_InstanceID)(unsigned long* pA_ARG_TYPE_InstanceID);
STDMETHOD(SetAVTransportURI)(unsigned long InstanceID,
BSTR CurrentURI,
BSTR CurrentURIMetaData);
STDMETHOD(SetNextAVTransportURI)(unsigned long InstanceID,
BSTR NextURI,
BSTR NextURIMetaData);
STDMETHOD(GetMediaInfo)(unsigned long InstanceID,
unsigned long* pNrTracks,
BSTR* pMediaDuration,
BSTR* pCurrentURI,
BSTR* pCurrentURIMetaData,
BSTR* pNextURI,
BSTR* pNextURIMetaData,
BSTR* pPlayMedium,
BSTR* pRecordMedium,
BSTR* pWriteStatus);
STDMETHOD(GetTransportInfo)(unsigned long InstanceID,
BSTR* pCurrentTransportState,
BSTR* pCurrentTransportStatus,
BSTR* pCurrentSpeed);
STDMETHOD(GetPositionInfo)(unsigned long InstanceID,
unsigned long* pTrack,
BSTR* pTrackDuration,
BSTR* pTrackMetaData,
BSTR* pTrackURI,
BSTR* pRelTime,
BSTR* pAbsTime,
long* pRelCount,
long* pAbsCount);
STDMETHOD(GetDeviceCapabilities)(unsigned long InstanceID,
BSTR* pPlayMedia,
BSTR* pRecMedia,
BSTR* pRecQualityModes);
STDMETHOD(GetTransportSettings)(unsigned long InstanceID,
BSTR* pPlayMode,
BSTR* pRecQualityMode);
STDMETHOD(Stop)(unsigned long InstanceID);
STDMETHOD(Play)(unsigned long InstanceID,
BSTR Speed);
STDMETHOD(Pause)(unsigned long InstanceID);
STDMETHOD(Record)(unsigned long InstanceID);
STDMETHOD(Seek)(unsigned long InstanceID,
BSTR Unit,
BSTR Target);
STDMETHOD(Next)(unsigned long InstanceID);
STDMETHOD(Previous)(unsigned long InstanceID);
STDMETHOD(SetPlayMode)(unsigned long InstanceID,
BSTR NewPlayMode);
STDMETHOD(SetRecordQualityMode)(unsigned long InstanceID,
BSTR NewRecordQualityMode);
STDMETHOD(GetCurrentTransportActions)(unsigned long InstanceID,
BSTR* pActions);
private:
HRESULT InitErrDescrips();
HRESULT InitToolkitErrs();
};
class RenderingControlServiceImpl :
public IUPnPService_RenderingControl1,
public VirtualServiceSupport<IRenderingControl>
{
public:
RenderingControlServiceImpl();
virtual ~RenderingControlServiceImpl();
// IUPnPService_RenderingControl1
public:
STDMETHOD(get_PresetNameList)(BSTR* pPresetNameList);
STDMETHOD(get_LastChange)(BSTR* pLastChange);
STDMETHOD(get_Brightness)(unsigned short* pBrightness);
STDMETHOD(get_Contrast)(unsigned short* pContrast);
STDMETHOD(get_Sharpness)(unsigned short* pSharpness);
STDMETHOD(get_RedVideoGain)(unsigned short* pRedVideoGain);
STDMETHOD(get_GreenVideoGain)(unsigned short* pGreenVideoGain);
STDMETHOD(get_BlueVideoGain)(unsigned short* pBlueVideoGain);
STDMETHOD(get_RedVideoBlackLevel)(unsigned short* pRedVideoBlackLevel);
STDMETHOD(get_GreenVideoBlackLevel)(unsigned short* pGreenVideoBlackLevel);
STDMETHOD(get_BlueVideoBlackLevel)(unsigned short* pBlueVideoBlackLevel);
STDMETHOD(get_ColorTemperature)(unsigned short* pColorTemperature);
STDMETHOD(get_HorizontalKeystone)(short* pHorizontalKeystone);
STDMETHOD(get_VerticalKeystone)(short* pVerticalKeystone);
STDMETHOD(get_Mute)(VARIANT_BOOL* pMute);
STDMETHOD(get_Volume)(unsigned short* pVolume);
STDMETHOD(get_VolumeDB)(short* pVolumeDB);
STDMETHOD(get_Loudness)(VARIANT_BOOL* pLoudness);
STDMETHOD(get_A_ARG_TYPE_Channel)(BSTR* pA_ARG_TYPE_Channel);
STDMETHOD(get_A_ARG_TYPE_InstanceID)(unsigned long * pA_ARG_TYPE_InstanceID);
STDMETHOD(get_A_ARG_TYPE_PresetName)(BSTR* pA_ARG_TYPE_PresetName);
STDMETHOD(ListPresets)(unsigned long InstanceID,
BSTR* pCurrentPresetNameList);
STDMETHOD(SelectPreset)(unsigned long InstanceID,
BSTR PresetName);
STDMETHOD(GetBrightness)(unsigned long InstanceID,
unsigned short* pCurrentBrightness);
STDMETHOD(SetBrightness)(unsigned long InstanceID,
unsigned short DesiredBrightness);
STDMETHOD(GetContrast)(unsigned long InstanceID,
unsigned short* pCurrentContrast);
STDMETHOD(SetContrast)(unsigned long InstanceID,
unsigned short DesiredContrast);
STDMETHOD(GetSharpness)(unsigned long InstanceID,
unsigned short* pCurrentSharpness);
STDMETHOD(SetSharpness)(unsigned long InstanceID,
unsigned short DesiredSharpness);
STDMETHOD(GetRedVideoGain)(unsigned long InstanceID,
unsigned short* pCurrentRedVideoGain);
STDMETHOD(SetRedVideoGain)(unsigned long InstanceID,
unsigned short DesiredRedVideoGain);
STDMETHOD(GetGreenVideoGain)(unsigned long InstanceID,
unsigned short* pCurrentGreenVideoGain);
STDMETHOD(SetGreenVideoGain)(unsigned long InstanceID,
unsigned short DesiredGreenVideoGain);
STDMETHOD(GetBlueVideoGain)(unsigned long InstanceID,
unsigned short* pCurrentBlueVideoGain);
STDMETHOD(SetBlueVideoGain)(unsigned long InstanceID,
unsigned short DesiredBlueVideoGain);
STDMETHOD(GetRedVideoBlackLevel)(unsigned long InstanceID,
unsigned short* pCurrentRedVideoBlackLevel);
STDMETHOD(SetRedVideoBlackLevel)(unsigned long InstanceID,
unsigned short DesiredRedVideoBlackLevel);
STDMETHOD(GetGreenVideoBlackLevel)(unsigned long InstanceID,
unsigned short* pCurrentGreenVideoBlackLevel);
STDMETHOD(SetGreenVideoBlackLevel)(unsigned long InstanceID,
unsigned short DesiredGreenVideoBlackLevel);
STDMETHOD(GetBlueVideoBlackLevel)(unsigned long InstanceID,
unsigned short* pCurrentBlueVideoBlackLevel);
STDMETHOD(SetBlueVideoBlackLevel)(unsigned long InstanceID,
unsigned short DesiredBlueVideoBlackLevel);
STDMETHOD(GetColorTemperature)(unsigned long InstanceID,
unsigned short* pCurrentColorTemperature);
STDMETHOD(SetColorTemperature)(unsigned long InstanceID,
unsigned short DesiredColorTemperature);
STDMETHOD(GetHorizontalKeystone)(unsigned long InstanceID,
short* pCurrentHorizontalKeystone);
STDMETHOD(SetHorizontalKeystone)(unsigned long InstanceID,
short DesiredHorizontalKeystone);
STDMETHOD(GetVerticalKeystone)(unsigned long InstanceID,
short* pCurrentVerticalKeystone);
STDMETHOD(SetVerticalKeystone)(unsigned long InstanceID,
short DesiredVerticalKeystone);
STDMETHOD(GetMute)(unsigned long InstanceID,
BSTR Channel,
VARIANT_BOOL* pCurrentMute);
STDMETHOD(SetMute)(unsigned long InstanceID,
BSTR Channel,
VARIANT_BOOL DesiredMute);
STDMETHOD(GetVolume)(unsigned long InstanceID,
BSTR Channel,
unsigned short* pCurrentVolume);
STDMETHOD(SetVolume)(unsigned long InstanceID,
BSTR Channel,
unsigned short DesiredVolume);
STDMETHOD(GetVolumeDB)(unsigned long InstanceID,
BSTR Channel,
short* pCurrentVolume);
STDMETHOD(SetVolumeDB)(unsigned long InstanceID,
BSTR Channel,
short DesiredVolume);
STDMETHOD(GetVolumeDBRange)(unsigned long InstanceID,
BSTR Channel,
short* pMinValue,
short* pMaxValue);
STDMETHOD(GetLoudness)(unsigned long InstanceID,
BSTR Channel,
VARIANT_BOOL* pCurrentLoudness);
STDMETHOD(SetLoudness)(unsigned long InstanceID,
BSTR Channel,
VARIANT_BOOL DesiredLoudness);
private:
HRESULT InitErrDescrips();
HRESULT InitToolkitErrs();
};
class ConnectionManagerServiceImpl :
public IUPnPService_ConnectionManager1,
public IEventSinkSupport,
public IUPnPEventSource
{
public:
ConnectionManagerServiceImpl();
virtual ~ConnectionManagerServiceImpl();
// Init() must be called before using this class
DWORD Init(/* [in] */ IConnectionManager* pIConnectionManager,
/* [in] */ AVTransportServiceImpl* pAVTransportService,
/* [in] */ RenderingControlServiceImpl* pRenderingControlService);
// IUPnPEventSource
public:
STDMETHOD(Advise)(
/*[in]*/ IUPnPEventSink* punkSubscriber);
STDMETHOD(Unadvise)(
/*[in]*/ IUPnPEventSink* punkSubscriber);
// IUPnPService_ConnectionManager1
public:
STDMETHOD(get_SourceProtocolInfo)(BSTR* pSourceProtocolInfo);
STDMETHOD(get_SinkProtocolInfo)(BSTR* pSinkProtocolInfo);
STDMETHOD(get_CurrentConnectionIDs)(BSTR* pCurrentConnectionIDs);
STDMETHOD(get_A_ARG_TYPE_ConnectionStatus)(BSTR* pA_ARG_TYPE_ConnectionStatus);
STDMETHOD(get_A_ARG_TYPE_ConnectionManager)(BSTR* pA_ARG_TYPE_ConnectionManager);
STDMETHOD(get_A_ARG_TYPE_Direction)(BSTR* pA_ARG_TYPE_Direction);
STDMETHOD(get_A_ARG_TYPE_ProtocolInfo)(BSTR* pA_ARG_TYPE_ProtocolInfo);
STDMETHOD(get_A_ARG_TYPE_ConnectionID)(long* pA_ARG_TYPE_ConnectionID);
STDMETHOD(get_A_ARG_TYPE_AVTransportID)(long* pA_ARG_TYPE_AVTransportID);
STDMETHOD(get_A_ARG_TYPE_RcsID)(long* pA_ARG_TYPE_RcsID);
STDMETHOD(GetProtocolInfo)(BSTR* pSource,
BSTR* pSink);
STDMETHOD(PrepareForConnection)(BSTR RemoteProtocolInfo,
BSTR PeerConnectionManager,
long PeerConnectionID,
BSTR Direction,
long* pConnectionID,
long* pAVTransportID,
long* pRcsID);
STDMETHOD(ConnectionComplete)(long ConnectionID);
STDMETHOD(GetCurrentConnectionIDs)(BSTR* pConnectionIDs);
STDMETHOD(GetCurrentConnectionInfo)(long ConnectionID,
long* pRcsID,
long* pAVTransportID,
BSTR* pProtocolInfo,
BSTR* pPeerConnectionManager,
long* pPeerConnectionID,
BSTR* pDirection,
BSTR* pStatus);
protected:
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
protected:
struct InstanceIDs
{
long AVTID;
long RCID;
};
AVTransportServiceImpl* m_pAVTS;
RenderingControlServiceImpl* m_pRCS;
IConnectionManager* m_pIConnectionManager;
typedef ce::hash_map<long, InstanceIDs> IDMap; // map from ConnectionID -> InstanceIDs
IDMap m_mapIDs;
UPnPErrorReporting m_ErrReport;
private:
HRESULT InitErrDescrips();
HRESULT InitToolkitErrs();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -