📄 av_upnp.h
字号:
// Register a service instance, using InstanceID as the instance's ID
DWORD RegisterInstance(
/* [in] */ T* pIServiceInstance,
/* [in] */ long InstanceID);
DWORD UnregisterInstance(
/* [in] */ long InstanceID);
DWORD FindInstance(
/* [in] */ long InstanceID,
/* [out] */ T** ppIServiceInstance);
// TimedEventCallee
public:
void TimedEventCall();
public:
HRESULT GetLastChange(BSTR* pLastChange);
protected:
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
private:
//
// Append state variable data for all registered services to *pLastChange.
// If m_bGetLastChangeUpdatesOnly append data for all variables,
// else: only variables which have changed since last call to GetLastChanges
//
DWORD GetLastChange(wstring* pLastChange);
DWORD CreateUniqueID(long* pIstanceID);
protected:
struct Instance
{
Instance(T* pServiceInstance = NULL)
: pService(pServiceInstance)
{}
T* pService;
details::VirtualEventSink virtualEventSink;
};
typedef ce::hash_map<long, Instance> InstanceMap; // map from Instance ID -> Instance
ce::critical_section m_csMapInstances;
ce::critical_section m_csGetLastChange;
InstanceMap m_mapInstances;
DISPID m_dispidLastChange[1];
bool m_bGetLastChangeUpdatesOnly;
long m_nLastCreatedID;
UPnPErrorReporting m_ErrReport;
};
//
//
// Device classes and implementations
//
//
// Interface class basic implementations
//
class IAVTransportImpl : public IAVTransport
{
// IAVTransport
public:
virtual DWORD SetAVTransportURI(
/*[in]*/ LPCWSTR pszCurrentURI,
/*[in]*/ LPCWSTR pszCurrentURIMetaData) = 0;
virtual DWORD SetNextAVTransportURI(
/*[in]*/ LPCWSTR pszNextURI,
/*[in]*/ LPCWSTR pszNextURIMetaData);
virtual DWORD GetMediaInfo(/*[in, out]*/ MediaInfo* pMediaInfo) = 0;
virtual DWORD GetTransportInfo(
/*[in, out]*/ TransportInfo* pTransportInfo) = 0;
virtual DWORD GetPositionInfo(
/*[in, out]*/ PositionInfo* pPositionInfo) = 0;
virtual DWORD GetDeviceCapabilities(
/*[in, out]*/ DeviceCapabilities* pDeviceCapabilities) = 0;
virtual DWORD GetTransportSettings(
/*[in, out]*/ TransportSettings* pTransportSettings) = 0;
virtual DWORD Stop() = 0;
virtual DWORD Play(/*[in]*/ LPCWSTR pszSpeed) = 0;
virtual DWORD Pause();
virtual DWORD Record();
virtual DWORD Seek(
/*[in]*/ LPCWSTR pszUnit,
/*[in]*/ LPCWSTR pszTarget) = 0;
virtual DWORD Next() = 0;
virtual DWORD Previous() = 0;
virtual DWORD SetPlayMode(/*[in]*/ LPCWSTR pszNewPlayMode);
virtual DWORD SetRecordQualityMode(
/*[in]*/ LPCWSTR pszNewRecordQualityMode);
virtual DWORD GetCurrentTransportActions(
/*[in, out]*/ TransportActions* pActions);
// 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);
};
class IRenderingControlImpl : public IRenderingControl
{
// IRenderingControl
public:
virtual DWORD ListPresets(
/* [in, out] */ wstring* pstrPresetNameList) = 0;
virtual DWORD SelectPreset(
/* [in] */ LPCWSTR pszPresetName) = 0;
virtual DWORD GetBrightness(
/* [in, out] */ unsigned short* pBrightness);
virtual DWORD SetBrightness(
/* [in] */ unsigned short Brightness);
virtual DWORD GetContrast(
/* [in, out] */ unsigned short* pContrast);
virtual DWORD SetContrast(
/* [in] */ unsigned short Contrast);
virtual DWORD GetSharpness(
/* [in, out] */ unsigned short* pSharpness);
virtual DWORD SetSharpness(
/* [in] */ unsigned short Sharpness);
virtual DWORD GetRedVideoGain(
/* [in, out] */ unsigned short* pRedVideoGain);
virtual DWORD SetRedVideoGain(
/* [in] */ unsigned short RedVideoGain);
virtual DWORD GetGreenVideoGain(
/* [in, out] */ unsigned short* pGreenVideoGain);
virtual DWORD SetGreenVideoGain(
/* [in] */ unsigned short GreenVideoGain);
virtual DWORD GetBlueVideoGain(
/* [in, out] */ unsigned short* pBlueVideoGain);
virtual DWORD SetBlueVideoGain(
/* [in] */ unsigned short BlueVideoGain);
virtual DWORD GetRedVideoBlackLevel(
/* [in, out] */ unsigned short* pRedVideoBlackLevel);
virtual DWORD SetRedVideoBlackLevel(
/* [in] */ unsigned short RedVideoBlackLevel);
virtual DWORD GetGreenVideoBlackLevel(
/* [in, out] */ unsigned short* pGreenVideoBlackLevel);
virtual DWORD SetGreenVideoBlackLevel(
/* [in] */ unsigned short GreenVideoBlackLevel);
virtual DWORD GetBlueVideoBlackLevel(
/* [in, out] */ unsigned short* pBlueVideoBlackLevel);
virtual DWORD SetBlueVideoBlackLevel(
/* [in] */ unsigned short BlueVideoBlackLevel);
virtual DWORD GetColorTemperature(
/* [in, out] */ unsigned short* pColorTemperature);
virtual DWORD SetColorTemperature(
/* [in] */ unsigned short ColorTemperature);
virtual DWORD GetHorizontalKeystone(
/* [in, out] */ short* pHorizontalKeystone);
virtual DWORD SetHorizontalKeystone(
/* [in] */ short HorizontalKeystone);
virtual DWORD GetVerticalKeystone(
/* [in, out] */ short* pVerticalKeystone);
virtual DWORD SetVerticalKeystone(
/* [in] */ short VerticalKeystone);
virtual DWORD GetMute(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ bool* pMute);
virtual DWORD SetMute(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ bool Mute);
virtual DWORD GetVolume(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ unsigned short* pVolume);
virtual DWORD SetVolume(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ unsigned short Volume);
virtual DWORD GetVolumeDB(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ short* pVolumeDB);
virtual DWORD SetVolumeDB(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ short VolumeDB);
virtual DWORD GetVolumeDBRange(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ short* pMinValue,
/* [in, out] */ short* pMaxValue);
virtual DWORD GetLoudness(
/* [in] */ LPCWSTR pszChannel,
/* [in, out] */ bool* pLoudness);
virtual DWORD SetLoudness(
/* [in] */ LPCWSTR pszChannel,
/* [in] */ bool Loudness);
// 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);
};
class IConnectionManagerImpl : public IConnectionManager
{
public:
IConnectionManagerImpl();
virtual ~IConnectionManagerImpl();
virtual DWORD AddSinkProtocol(LPCWSTR pszProtocolInfo);
virtual DWORD RemoveSinkProtocol(LPCWSTR pszProtocolInfo);
virtual DWORD AddSourceProtocol(LPCWSTR pszProtocolInfo);
virtual DWORD RemoveSourceProtocol(LPCWSTR pszProtocolInfo);
// IConnectionManager
public:
virtual DWORD PrepareForConnection(
/* [in] */ LPCWSTR pszRemoteProtocolInfo,
/* [in] */ LPCWSTR pszPeerConnectionManager,
/* [in] */ long PeerConnectionID,
/* [in] */ DIRECTION Direction,
/* [in, out] */ long* pConnectionID,
/* [in, out] */ IAVTransport** ppAVTransport,
/* [in, out] */ IRenderingControl** ppRenderingControl);
virtual DWORD ConnectionComplete(
/* [in] */ long ConnectionID);
virtual DWORD GetFirstConnectionID(
/* [in, out] */ long* pConnectionID);
virtual DWORD GetNextConnectionID(
/* [in, out] */ long* pConnectionID);
virtual DWORD GetProtocolInfo(
/* [in, out] */ wstring* pstrSourceProtocolInfo,
/* [in, out] */ wstring* pstrSinkProtocolInfo);
virtual DWORD GetCurrentConnectionInfo(
/* [in] */ long ConnectionID,
/* [in, out] */ ConnectionInfo* pConnectionInfo);
// IEventSource
public:
virtual DWORD Advise( /*[in]*/ IEventSink* pSubscriber);
virtual DWORD Unadvise(/*[in]*/ IEventSink* pSubscriber);
protected:
virtual DWORD CreateConnection(
/* [in] */ LPCWSTR pszRemoteProtocolInfo,
/* [in] */ DIRECTION Direction,
/* [in, out] */ long ConnectionID,
/* [in, out] */ IAVTransport** ppAVTransport,
/* [in, out] */ IRenderingControl** ppRenderingControl) = 0;
virtual DWORD EndConnection(
/* [in] */ long ConnectionID) = 0;
// 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);
protected:
typedef ce::hash_map<long, ConnectionInfo> ConnInfoMap; // map from ConnectionID -> ConnectionInfo
typedef ce::hash_set<wstring> ProtocolInfoSet;
ce::critical_section m_csDataMembers;
IEventSink* m_pSubscriber;
ConnInfoMap m_mapConnections;
ConnInfoMap::const_iterator m_itLastAskedForConnection;
ProtocolInfoSet m_setSourceProtocols;
ProtocolInfoSet m_setSinkProtocols;
private:
DWORD CreateUniqueConnectionID(long* pNewConnectionID);
long m_nLastCreatedConnectionID;
};
class IContentDirectoryImpl : public IContentDirectory
{
// IContentDirectory
public:
virtual DWORD GetSystemUpdateID(
/* [in, out] */ unsigned long* pId) = 0;
virtual DWORD BrowseMetadata(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszFilter,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pUpdateID) = 0;
virtual DWORD BrowseChildren(
/* [in] */ LPCWSTR pszObjectID,
/* [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) = 0;
virtual DWORD GetSearchCapabilities(
/* [in, out] */ wstring* pstrSearchCaps);
virtual DWORD GetSortCapabilities(
/* [in, out] */ wstring* pstrSortCaps);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -