⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 av_upnp.h

📁 Windows CE 6.0 Server 源码
💻 H
📖 第 1 页 / 共 5 页
字号:
    virtual DWORD GetRedVideoGain(
        /* [in, out] */ unsigned short* pRedVideoGain) = 0;

    virtual DWORD SetRedVideoGain(
        /* [in] */ unsigned short RedVideoGain) = 0;

    virtual DWORD GetGreenVideoGain(
        /* [in, out] */ unsigned short* pGreenVideoGain) = 0;

    virtual DWORD SetGreenVideoGain(
        /* [in] */ unsigned short GreenVideoGain) = 0;

    virtual DWORD GetBlueVideoGain(
        /* [in, out] */ unsigned short* pBlueVideoGain) = 0;

    virtual DWORD SetBlueVideoGain(
        /* [in] */ unsigned short BlueVideoGain) = 0;

    virtual DWORD GetRedVideoBlackLevel(
        /* [in, out] */ unsigned short* pRedVideoBlackLevel) = 0;

    virtual DWORD SetRedVideoBlackLevel(
        /* [in] */ unsigned short RedVideoBlackLevel) = 0;

    virtual DWORD GetGreenVideoBlackLevel(
        /* [in, out] */ unsigned short* pGreenVideoBlackLevel) = 0;

    virtual DWORD SetGreenVideoBlackLevel(
        /* [in] */ unsigned short GreenVideoBlackLevel) = 0;

    virtual DWORD GetBlueVideoBlackLevel(
        /* [in, out] */ unsigned short* pBlueVideoBlackLevel) = 0;

    virtual DWORD SetBlueVideoBlackLevel(
        /* [in] */ unsigned short BlueVideoBlackLevel) = 0;

    virtual DWORD GetColorTemperature(
        /* [in, out] */ unsigned short* pColorTemperature) = 0;

    virtual DWORD SetColorTemperature(
        /* [in] */ unsigned short ColorTemperature) = 0;

    virtual DWORD GetHorizontalKeystone(
        /* [in, out] */ short* pHorizontalKeystone) = 0;

    virtual DWORD SetHorizontalKeystone(
        /* [in] */ short HorizontalKeystone) = 0;

    virtual DWORD GetVerticalKeystone(
        /* [in, out] */ short* pVerticalKeystone) = 0;

    virtual DWORD SetVerticalKeystone(
        /* [in] */ short VerticalKeystone) = 0;

    virtual DWORD GetMute(
        /* [in] */ LPCWSTR pszChannel,
        /* [in, out] */ bool* pMute) = 0;

    virtual DWORD SetMute(
        /* [in] */ LPCWSTR pszChannel,
        /* [in] */ bool Mute) = 0;

    virtual DWORD GetVolume(
        /* [in] */ LPCWSTR pszChannel,
        /* [in, out] */ unsigned short* pVolume) = 0;

    virtual DWORD SetVolume(
        /* [in] */ LPCWSTR pszChannel,
        /* [in] */ unsigned short Volume) = 0;

    virtual DWORD GetVolumeDB(
        /* [in] */ LPCWSTR pszChannel,
        /* [in, out] */ short* pVolumeDB) = 0;

    virtual DWORD SetVolumeDB(
        /* [in] */ LPCWSTR pszChannel,
        /* [in] */ short VolumeDB) = 0;

    virtual DWORD GetVolumeDBRange(
        /* [in] */ LPCWSTR pszChannel,
        /* [in, out] */ short* pMinValue,
        /* [in, out] */ short* pMaxValue) = 0;

    virtual DWORD GetLoudness(
        /* [in] */ LPCWSTR pszChannel,
        /* [in, out] */ bool* pLoudness) = 0;

    virtual DWORD SetLoudness(
        /* [in] */ LPCWSTR pszChannel,
        /* [in] */ bool Loudness) = 0;


    virtual DWORD InvokeVendorAction(
        /* [in] */ LPCWSTR pszActionName,
        /* [in] */ DISPPARAMS* pdispparams, 
        /* [in, out] */ VARIANT* pvarResult) = 0;
};

//
// IConnectionManager - interface of ConnectionManager service
//
class IConnectionManager : public IEventSource
{
public:
    virtual DWORD GetProtocolInfo(
            /* [in, out] */ wstring* pstrSourceProtocolInfo,
            /* [in, out] */ wstring* pstrSinkProtocolInfo) = 0;

    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) = 0;

    virtual DWORD ConnectionComplete(
            /* [in] */ long ConnectionID) = 0;

    virtual DWORD GetFirstConnectionID(
            /* [in, out] */ long* pConnectionID) = 0;

    virtual DWORD GetNextConnectionID(
            /* [in, out] */ long* pConnectionID) = 0;

    virtual DWORD GetCurrentConnectionInfo(
            /* [in] */ long ConnectionID,
            /* [in, out] */ ConnectionInfo* pConnectionInfo) = 0;
            
    virtual DWORD InvokeVendorAction(
        /* [in] */ LPCWSTR pszActionName,
        /* [in] */ DISPPARAMS* pdispparams, 
        /* [in, out] */ VARIANT* pvarResult) = 0;
};


//
// IContentDirectory - interface of ContentDirectory service
//
class IContentDirectory : public IEventSource
{
public:
    virtual DWORD GetSearchCapabilities(
        /* [in, out] */ wstring* pstrSearchCaps) = 0;

    virtual DWORD GetSortCapabilities(
        /* [in, out] */ wstring* pstrSortCaps) = 0;

    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 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) = 0;

    virtual DWORD CreateObject(
        /* [in] */ LPCWSTR pszContainerID,
        /* [in] */ LPCWSTR pszElements,
        /* [in, out] */ wstring* pstrObjectID,
        /* [in, out] */ wstring* pstrResult) = 0;

    virtual DWORD DestroyObject(
        /* [in] */ LPCWSTR pszObjectID) = 0;

    virtual DWORD UpdateObject(
        /* [in] */ LPCWSTR pszObjectID,
        /* [in] */ LPCWSTR pszCurrentTagValue,
        /* [in] */ LPCWSTR pszNewTagValue) = 0;

    virtual DWORD ImportResource(
        /* [in] */ LPCWSTR pszSourceURI,
        /* [in] */ LPCWSTR pszDestinationURI,
        /* [in, out] */ unsigned long* pTransferID) = 0;

    virtual DWORD ExportResource(
        /* [in] */ LPCWSTR pszSourceURI,
        /* [in] */ LPCWSTR pszDestinationURI,
        /* [in, out] */ unsigned long* pTransferID) = 0;

    virtual DWORD StopTransferResource(
        /* [in] */ unsigned long TransferID) = 0;

    virtual DWORD GetTransferProgress(
        /* [in] */ unsigned long TransferID,
        /* [in, out] */ wstring* pstrTransferStatus,
        /* [in, out] */ wstring* pstrTransferLength,
        /* [in, out] */ wstring* pstrTransferTotal) = 0;

    virtual DWORD DeleteResource(
        /* [in] */ LPCWSTR pszResourceURI) = 0;

    virtual DWORD CreateReference(
        /* [in] */ LPCWSTR pszContainerID,
        /* [in] */ LPCWSTR pszObjectID,
        /* [in, out] */ wstring* pstrNewID) = 0;
        
    virtual DWORD InvokeVendorAction(
        /* [in] */ LPCWSTR pszActionName,
        /* [in] */ DISPPARAMS* pdispparams, 
        /* [in, out] */ VARIANT* pvarResult) = 0;
};


}

#include "av_upnp_internal.h"

namespace av_upnp
{

//
// Utilities
//

extern LPCWSTR AVDCPListDelimiter; // = L",";

DWORD EscapeAVDCPListDelimiters(wstring* pstr);


//
// UPnPErrorReporting
//
class UPnPErrorReporting
{
public:
    //
    // Add/Remove Error Number -> Description mappings.
    //
    DWORD AddErrorDescription(int UPnPErrorNum, const wstring &UPnPErrorDescription);
    DWORD RemoveErrorDescription(int UPnPErrorNum);

    //
    // Add/Remove internal toolkit error number -> upnp error number mappings.
    //
    DWORD AddToolkitError(int UPnPToolkitErrorNum, int UPnPErrorNum);
    DWORD RemoveToolkitError(int UPnPToolkitErrorNum);

    //
    // NOTE: This function modifies the thread's error information object using SetErrorInfo()
    //
#ifdef DEBUG
    HRESULT ReportActionError(int UPnPErrorNum, LPCWSTR pszAction);
#else    
    HRESULT ReportActionError(int UPnPErrorNum);
#endif

private:
    typedef ce::hash_map<int, wstring>  ErrDescripMap;      // map from UPnP error num -> error description
    typedef ce::hash_map<int, int>      ToolkitErrMap;      // map from internal toolkit error num -> UPnP error num to return

    ce::critical_section    m_csDataMembers;
    ErrDescripMap           m_mapErrDescrips;
    ToolkitErrMap           m_mapToolkitErrs;
};

#ifdef DEBUG
#   define ReportError(x)  ReportActionError(x, TEXT(__FUNCTION__))
#else
#   define ReportError(x)  ReportActionError(x)
#endif


//
// Functionality Support for toolkit classes
//

//
// Support for IEventSink for non-virtual service classes (ConnectionManagerServiceImpl and ContentDirectoryServiceImpl)
//
class IEventSinkSupport : public IEventSink,
                          virtual protected details::IUPnPEventSinkSupport
{
// IEventSink
public:
    virtual DWORD OnStateChanged(
        /*[in]*/ LPCWSTR pszStateVariableName,
        /*[in*/  LPCWSTR pszValue);
        
    virtual DWORD OnStateChanged(
        /*[in]*/ LPCWSTR pszStateVariableName,
        /*[in*/  long nValue);

    virtual DWORD OnStateChanged(
        /*[in]*/  LPCWSTR pszStateVariableName,
        /*[in]*/  LPCWSTR pszChannel,
        /*[in]*/  long nValue);

protected:
    typedef ce::hash_map<wstring, DISPID> DISPIDMap; // map from state variable name -> DISPID

    ce::critical_section m_csMapDISPIDs;
    DISPIDMap            m_mapDISPIDs;
};


//
// ModeratedEventSupport
//
class ModeratedEventSupport : public IUPnPEventSource,
                              virtual protected details::IUPnPEventSinkSupport,
                              public details::ITimedEventCallee
{
public:
    // nMaxEventRate is the minimum time to sleep between events; must be less than 0x7FFFFFFF
    ModeratedEventSupport(DWORD nMaxEventRate);
    virtual ~ModeratedEventSupport();

    void AddRefModeratedEvent();
    void ReleaseModeratedEvent();

// TimedEventCallee
public:
    virtual void TimedEventCall() = 0;

// IUPnPEventSource
public:
    STDMETHOD(Advise)(
        /*[in]*/ IUPnPEventSink* punkSubscriber);
    STDMETHOD(Unadvise)(
        /*[in]*/ IUPnPEventSink* punkSubscriber);

private:
    const DWORD m_nMaxEventRate;
    bool        m_bTimerInitialized;
};


//
// VirtualServiceSupport
//
template <typename T>
class VirtualServiceSupport : public ModeratedEventSupport
{
public:
    // Via nFirstInstanceID, optionally set the ID for the first instance registered if
    // RegisterServiceInstance(T*, long*) is used to register this first instance
    VirtualServiceSupport(DISPID dispidLastChange, long nFirstInstanceID = 0);
    ~VirtualServiceSupport();

    // Register a service instance, InstanceID will be the instance's ID upon return
    DWORD RegisterInstance(
            /* [in] */  T* pIServiceInstance,
            /* [in, out] */ long* pInstanceID);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -