IWMSPacketStreamerCallback::OnSeek

The OnSeek method is called by a plug-in to respond when the server calls IWMSPacketStreamer::Seek.

HRESULT OnSeek(
  HRESULT  hr,
  QWORD  qwActualPosition,
  QWORD  qwContext
);

Arguments

hr

[in] HRESULT indicating whether the call to IWMSPacketStreamer::Seek was successful.

qwActualPosition

[in] QWORD indicating the seek position.

qwContext

[in] QWORD containing a value defined by the server to identify which call to IWMSPacketStreamer::Seek the plug-in is responding to when it calls OnSeek. You must pass this value back unaltered.

Return Value

If the method succeeds, the plug-in must return S_OK. To report an error, the plug-in can return any HRESULT other than S_OK. If the plug-in uses the IWMSEventLogIWMSEventLog Interface to log error information directly to the Windows Event Viewer, it is recommended that it return NS_E_PLUGIN_ERROR_REPORTED. Typically, the server attempts to make plug-in error information available to the server object model, the Windows Event Viewer, and the troubleshooting list in the details pane of the Windows Media Services MMC. However, if the plug-in uses the IWMSEventLog interface to send custom error information to the Windows Event Viewer, returning NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about retrieving plug-in error information, see Identifying Plug-in Errors.

Example

STDMETHODIMP CNetworkDataContainer::Seek(
                IWMSCommandContext *pCommand,
                DWORD dwOffsetType,
                QWORD qwOffset, 
                DWORD dwFlags,
                IWMSPacketStreamerCallback *pCallback,
                QWORD qwContext)
{
    if( m_State >= STREAMER_ERROR )
    {
        return( NS_E_SHUTDOWN );
    }

    switch( dwOffsetType )
    {
        case WMS_SEEK_TO_TIME : 
            m_SeekInfo.Type = SPT_TIME;
            m_SeekInfo.StreamTime = (DWORD) qwOffset;
            break;
            
        case WMS_SEEK_TO_PACKET : 
            m_SeekInfo.Type = SPT_PACKET;
            m_SeekInfo.dwPacketId = (DWORD) qwOffset;
            break;

        case WMS_SEEK_TO_BYTE_OFFSET : 
            m_SeekInfo.Type = SPT_BYTE;
            m_SeekInfo.dwObjectId = LODWORD( qwOffset );
            m_SeekInfo.dwPacketId = HIDWORD( qwOffset );
            break;

        case WMS_SEEK_TO_PLAYLIST_ENTRY :
            m_SeekPLPos.dwOffset = (DWORD) qwOffset;
            break;
    }
   
    pCallback->OnSeek( S_OK, qwOffset, qwContext );

    return( S_OK );
}

Requirements

Header: wmsdatapath.h.

Library: WMSServerTypeLib.dll.

Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.

See Also

Concepts

IWMSPacketStreamerCallback Interface