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

📄 reader.h

📁 介绍IStream接口的代码,方便学习,很有参考价值
💻 H
字号:
//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName:            Reader.h
//
// Abstract:            Definition of class CReader.
//
//*****************************************************************************

#if !defined(AFX_READER_H__1112A58E_5BDE_4911_BE02_2822731B8DFC__INCLUDED_)
#define AFX_READER_H__1112A58E_5BDE_4911_BE02_2822731B8DFC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ROStream.h"

#define MAX_TIMEOUT_FOR_EVENT   60000       // default timeout value when waiting for an event

///////////////////////////////////////////////////////////////////////////////
class CReader : public IWMReaderCallback
{
public:

	CReader();

    //
    //Methods of IUnknown
    //
    HRESULT STDMETHODCALLTYPE QueryInterface( /* [in] */ REFIID riid,
                                              /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject ); 
    ULONG STDMETHODCALLTYPE AddRef();
    ULONG STDMETHODCALLTYPE Release();

    //
    //Methods of IWMReaderCallback
    //
    HRESULT STDMETHODCALLTYPE OnSample( /* [in] */ DWORD dwOutputNum,
                                        /* [in] */ QWORD cnsSampleTime,
                                        /* [in] */ QWORD cnsSampleDuration,
                                        /* [in] */ DWORD dwFlags,
                                        /* [in] */ INSSBuffer __RPC_FAR *pSample,
                                        /* [in] */ void __RPC_FAR *pvContext );

    HRESULT STDMETHODCALLTYPE OnStatus( /* [in] */ WMT_STATUS Status,
                                        /* [in] */ HRESULT hr,
                                        /* [in] */ WMT_ATTR_DATATYPE dwType,
                                        /* [in] */ BYTE __RPC_FAR *pValue,
                                        /* [in] */ void __RPC_FAR *pvContext );
    //
    // CReader methods
    //
    // Open specified input file for read
    //
    HRESULT Open( /* [in] */ const TCHAR *ptszFile );

    //
    // Start to read from IStream
    //
    HRESULT Start();

    //
    // Close the file
    //
    HRESULT Close();

    //
    // Wait for m_hEvent within specified time in milliseconds. Default timeout value is MAX_TIMEOUT_FOR_EVENT.
    //
    HRESULT WaitForEvent( /* [in] */ DWORD msWait = MAX_TIMEOUT_FOR_EVENT );

protected:

	virtual ~CReader();

    CROStream*          m_pStream;
    HANDLE              m_hEvent;
    HRESULT             m_hrAsync;
    IWMReader*          m_pReader;
    IWMReaderAdvanced2* m_pReader2;
    LONG                m_cRef;
};

#endif // !defined(AFX_READER_H__1112A58E_5BDE_4911_BE02_2822731B8DFC__INCLUDED_)

⌨️ 快捷键说明

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