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

📄 av_upnp.h

📁 Windows CE 6.0 Server 源码
💻 H
📖 第 1 页 / 共 5 页
字号:
    // 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 + -