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

📄 av_upnp.h

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