📄 av_upnp_ctrl_internal.h
字号:
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);
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
// IVirtualService
public:
virtual void Release()
{
assert(m_pRefCount);
m_pRefCount->ReleaseInstance(m_InstanceID);
}
protected:
template <typename T>
DWORD GetXxx(LPCWSTR pszName, T* pValue)
{
HRESULT hr;
hr = m_proxyRenderingControl.call(pszName, m_InstanceID);
if(FAILED(hr))
{
return AVErrorFromUPnPError(hr);
}
if(!m_proxyRenderingControl.get_results(pValue))
{
return ERROR_AV_INVALID_OUT_ARGUMENTS;
}
return SUCCESS_AV;
}
template <typename T>
DWORD GetXxx(LPCWSTR pszName, LPCWSTR pszChannel, T* pValue)
{
HRESULT hr;
hr = m_proxyRenderingControl.call(pszName, m_InstanceID, pszChannel);
if(FAILED(hr))
{
return AVErrorFromUPnPError(hr);
}
if(!m_proxyRenderingControl.get_results(pValue))
{
return ERROR_AV_INVALID_OUT_ARGUMENTS;
}
return SUCCESS_AV;
}
template <typename T>
DWORD SetXxx(LPCWSTR pszName, T Value)
{
HRESULT hr;
hr = m_proxyRenderingControl.call(pszName, m_InstanceID, Value);
return AVErrorFromUPnPError(hr);
}
template <typename T>
DWORD SetXxx(LPCWSTR pszName, LPCWSTR pszChannel, T Value)
{
HRESULT hr;
hr = m_proxyRenderingControl.call(pszName, m_InstanceID, pszChannel, Value);
return AVErrorFromUPnPError(hr);
}
private:
ce::upnp_proxy m_proxyRenderingControl;
long m_InstanceID;
IVirtualServiceRefCount* m_pRefCount;
};
//
// ConnectionManagerCtrl
//
class ConnectionManagerCtrl : public ServiceCtrl<IConnectionManager>
{
public:
virtual ~ConnectionManagerCtrl()
{}
bool Init(/* [in] */ IUPnPDevice* pDevice);
LPCWSTR ServiceID() const
{
assert(!m_strServiceID.empty());
return m_strServiceID;
}
// IConnectionManager
public:
virtual DWORD GetProtocolInfo(
/* [in, out] */ wstring* pstrSourceProtocolInfo,
/* [in, out] */ wstring* pstrSinkProtocolInfo);
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 GetCurrentConnectionInfo(
/* [in] */ long ConnectionID,
/* [in, out] */ ConnectionInfo* pConnectionInfo);
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
private:
ce::upnp_proxy m_proxyConnectionManager;
ce::wstring m_strConnectionIDs;
ce::wstring m_strServiceID;
VirtualServiceCtrl<IAVTransport, AVTransportCtrl> m_AVTransport;
VirtualServiceCtrl<IRenderingControl, RenderingControlCtrl> m_RenderingControl;
};
//
// ContentDirectoryCtrl
//
class ContentDirectoryCtrl : public ServiceCtrl<IContentDirectory>
{
public:
virtual ~ContentDirectoryCtrl()
{}
bool Init(/* [in] */ IUPnPDevice* pDevice);
// IContentDirectory
public:
virtual DWORD GetSearchCapabilities(
/* [in, out] */ wstring* pstrSearchCaps);
virtual DWORD GetSortCapabilities(
/* [in, out] */ wstring* pstrSortCaps);
virtual DWORD GetSystemUpdateID(
/* [in, out] */ unsigned long* pId);
virtual DWORD BrowseMetadata(
/* [in] */ LPCWSTR pszObjectID,
/* [in] */ LPCWSTR pszFilter,
/* [in, out] */ wstring* pstrResult,
/* [in, out] */ unsigned long* pUpdateID);
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);
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);
virtual DWORD InvokeVendorAction(
/* [in] */ LPCWSTR pszActionName,
/* [in] */ DISPPARAMS* pdispparams,
/* [in, out] */ VARIANT* pvarResult);
private:
ce::upnp_proxy m_proxyContentDirectory;
};
} // namespace av_upnp::details
namespace DIDL_Lite
{
namespace details
{
//
// properties
//
class properties
{
public:
bool GetProperty(LPCWSTR pszName, wstring* pValue, unsigned long nIndex);
protected:
friend class objects;
void AddProperty(LPCWSTR pszName, LPCWSTR pszValue, size_t cchValue);
private:
typedef ce::hash_map<wstring, ce::vector<wstring> > PropertiesMap;
PropertiesMap m_mapProperties;
};
//
// objects
//
class objects : public ce::SAXContentHandler
{
public:
objects();
bool GetFirstObject(object* pObj);
bool GetNextObject(object* pObj);
bool AddNamespaceMapping(LPCWSTR pszNamespace, LPCWSTR pszPrefix);
// ISAXContentHandler
public:
virtual HRESULT STDMETHODCALLTYPE startDocument(void);
virtual HRESULT STDMETHODCALLTYPE startElement(
/* [in] */ const wchar_t *pwchNamespaceUri,
/* [in] */ int cchNamespaceUri,
/* [in] */ const wchar_t *pwchLocalName,
/* [in] */ int cchLocalName,
/* [in] */ const wchar_t *pwchQName,
/* [in] */ int cchQName,
/* [in] */ ISAXAttributes *pAttributes);
virtual HRESULT STDMETHODCALLTYPE endElement(
/* [in] */ const wchar_t *pwchNamespaceUri,
/* [in] */ int cchNamespaceUri,
/* [in] */ const wchar_t *pwchLocalName,
/* [in] */ int cchLocalName,
/* [in] */ const wchar_t *pwchQName,
/* [in] */ int cchQName);
// characters
virtual HRESULT STDMETHODCALLTYPE characters(
/* [in] */ const wchar_t *pwchChars,
/* [in] */ int cchChars);
private:
typedef ce::list<properties> ObjectsList;
ObjectsList m_listObjects;
ObjectsList::iterator m_itCurrent;
// parsing
private:
typedef ce::hash_map<wstring, wstring> NamespacePrefixes;
wstring m_strElementQName;
wstring m_strElementText;
NamespacePrefixes m_mapNamespacePrefixes;
};
};
}; // namespace DIDL_Lite
} // namespace av_upnp
#endif // __AV_UPNP_CTRL_INTERNAL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -