亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asyncio.h

?? 《DirectShow開發(fā)指南》的隨書原代碼
?? H
字號:
//------------------------------------------------------------------------------
// File: AsyncIo.h
//
// Desc: DirectShow sample code - base library for I/O functionality.
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------


#ifndef __ASYNCIO_H__
#define __ASYNCIO_H__

//
// definition of CAsyncFile object that performs file access. It provides
// asynchronous, unbuffered, aligned reads from a file, using a worker thread
// on win95 and potentially overlapped i/o if available.

// !!! Need to use real overlapped i/o if available
// currently only uses worker thread, not overlapped i/o


class CAsyncIo;
class CAsyncStream;

//
//  Model the stream we read from based on a file-like interface
//
class CAsyncStream
{
public:
    virtual ~CAsyncStream() {};
    virtual HRESULT SetPointer(LONGLONG llPos) = 0;
    virtual HRESULT Read(PBYTE pbBuffer,
                         DWORD dwBytesToRead,
                         BOOL bAlign,
                         LPDWORD pdwBytesRead) = 0;

    virtual LONGLONG Size(LONGLONG *pSizeAvailable = NULL) = 0;
    virtual DWORD Alignment() = 0;
    virtual void Lock() = 0;
    virtual void Unlock() = 0;
    //virtual void SetStopHandle(HANDLE hevStop) {}
};

// represents a single request and performs the i/o. Can be called on either
// worker thread or app thread, but must hold pcsFile across file accesses.
// (ie across SetFilePointer/ReadFile pairs)
class CAsyncRequest
{
    CAsyncIo     *m_pIo;
    CAsyncStream *m_pStream;
    LONGLONG      m_llPos;
    BOOL          m_bAligned;
    LONG    m_lLength;
    BYTE*   m_pBuffer;
    LPVOID  m_pContext;
    DWORD   m_dwUser;
    HRESULT m_hr;

public:
    // init the params for this request. Issue the i/o
    // if overlapped i/o is possible.
    HRESULT Request(
        CAsyncIo *pIo,
        CAsyncStream *pStream,
        LONGLONG llPos,
        LONG lLength,
        BOOL bAligned,
        BYTE* pBuffer,
        LPVOID pContext,    // filter's context
        DWORD dwUser);      // downstream filter's context

    // issue the i/o if not overlapped, and block until i/o complete.
    // returns error code of file i/o
    HRESULT Complete();

    // cancels the i/o. blocks until i/o is no longer pending
    HRESULT Cancel()
    {
        return S_OK;
    };

    // accessor functions
    LPVOID GetContext()
    {
        return m_pContext;
    };

    DWORD GetUser()
    {
        return m_dwUser;
    };

    HRESULT GetHResult() {
        return m_hr;
    };

    // we set m_lLength to the actual length
    LONG GetActualLength() {
        return m_lLength;
    };

    LONGLONG GetStart() {
        return m_llPos;
    };
};


typedef CGenericList<CAsyncRequest> CRequestList;

// this class needs a worker thread, but the ones defined in classes\base
// are not suitable (they assume you have one message sent or posted per
// request, whereas here for efficiency we want just to set an event when
// there is work on the queue).
//
// we create CAsyncRequest objects and queue them on m_listWork. The worker
// thread pulls them off, completes them and puts them on m_listDone.
// The events m_evWork and m_evDone are set when the corresponding lists are
// not empty.
//
// Synchronous requests are done on the caller thread. These should be
// synchronised by the caller, but to make sure we hold m_csFile across
// the SetFilePointer/ReadFile code.
//
// Flush by calling BeginFlush. This rejects all further requests (by
// setting m_bFlushing within m_csLists), cancels all requests and moves them
// to the done list, and sets m_evDone to ensure that no WaitForNext operations
// will block. Call EndFlush to cancel this state.
//
// we support unaligned calls to SyncRead. This is done by opening the file
// twice if we are using unbuffered i/o (m_dwAlign > 1).
// !!!fix this to buffer on top of existing file handle?
class CAsyncIo
{

    CCritSec m_csReader;
    CAsyncStream *m_pStream;

    CCritSec m_csLists;      // locks access to the list and events
    BOOL m_bFlushing;        // true if between BeginFlush/EndFlush

    CRequestList m_listWork;
    CRequestList m_listDone;

    CAMEvent m_evWork;      // set when list is not empty
    CAMEvent m_evDone;

    // for correct flush behaviour: all protected by m_csLists
    LONG    m_cItemsOut;    // nr of items not on listDone or listWork
    BOOL    m_bWaiting;     // TRUE if someone waiting for m_evAllDone
    CAMEvent m_evAllDone;   // signal when m_cItemsOut goes to 0 if m_cWaiting


    CAMEvent m_evStop;         // set when thread should exit
    HANDLE m_hThread;

    LONGLONG Size() {
        ASSERT(m_pStream != NULL);
        return m_pStream->Size();
    };

    // start the thread
    HRESULT StartThread(void);

    // stop the thread and close the handle
    HRESULT CloseThread(void);

    // manage the list of requests. hold m_csLists and ensure
    // that the (manual reset) event hevList is set when things on
    // the list but reset when the list is empty.
    // returns null if list empty
    CAsyncRequest* GetWorkItem();

    // get an item from the done list
    CAsyncRequest* GetDoneItem();

    // put an item on the work list
    HRESULT PutWorkItem(CAsyncRequest* pRequest);

    // put an item on the done list
    HRESULT PutDoneItem(CAsyncRequest* pRequest);

    // called on thread to process any active requests
    void ProcessRequests(void);

    // initial static thread proc calls ThreadProc with DWORD
    // param as this
    static DWORD WINAPI InitialThreadProc(LPVOID pv) {
        CAsyncIo * pThis = (CAsyncIo*) pv;
        return pThis->ThreadProc();
    };

    DWORD ThreadProc(void);

public:

    CAsyncIo(CAsyncStream *pStream);
    ~CAsyncIo();

    // open the file
    HRESULT Open(LPCTSTR pName);

    // ready for async activity - call this before
    // calling Request
    HRESULT AsyncActive(void);

    // call this when no more async activity will happen before
    // the next AsyncActive call
    HRESULT AsyncInactive(void);

    // queue a requested read. must be aligned.
    HRESULT Request(
            LONGLONG llPos,
            LONG lLength,
            BOOL bAligned,
            BYTE* pBuffer,
            LPVOID pContext,
            DWORD dwUser);

    // wait for the next read to complete
    HRESULT WaitForNext(
            DWORD dwTimeout,
            LPVOID *ppContext,
            DWORD * pdwUser,
            LONG * pcbActual);

    // perform a read of an already aligned buffer
    HRESULT SyncReadAligned(
            LONGLONG llPos,
            LONG lLength,
            BYTE* pBuffer,
            LONG* pcbActual,
            PVOID pvContext);

    // perform a synchronous read. will be buffered
    // if not aligned.
    HRESULT SyncRead(
            LONGLONG llPos,
            LONG lLength,
            BYTE* pBuffer);

    // return length
    HRESULT Length(LONGLONG *pllTotal, LONGLONG* pllAvailable);

    // all Reader positions, read lengths and memory locations must
    // be aligned to this.
    HRESULT Alignment(LONG* pl);

    HRESULT BeginFlush();
    HRESULT EndFlush();

    LONG Alignment()
    {
        return m_pStream->Alignment();
    };

    BOOL IsAligned(LONG l) {
    if ((l & (Alignment() -1)) == 0) {
        return TRUE;
    } else {
        return FALSE;
    }
    };

    BOOL IsAligned(LONGLONG ll) {
        return IsAligned( (LONG) (ll & 0xffffffff));
    };

    //  Accessor
    HANDLE StopEvent() const { return m_evDone; }
};

#endif // __ASYNCIO_H__

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜亚洲网站| 久久精品日产第一区二区三区高清版| 青青草91视频| 亚洲欧美日韩国产中文在线| 日韩欧美资源站| 日本道精品一区二区三区| 精品一区二区三区蜜桃| 一区二区三区免费| 亚洲国产精品传媒在线观看| 日韩欧美国产麻豆| 欧美亚洲综合色| 成人黄色网址在线观看| 国产综合色精品一区二区三区| 亚洲第一激情av| 亚洲乱码国产乱码精品精的特点| 精品国产一区二区三区久久久蜜月 | 国内精品久久久久影院一蜜桃| 亚洲色图欧美激情| 国产午夜亚洲精品午夜鲁丝片| 日韩小视频在线观看专区| 欧美性做爰猛烈叫床潮| thepron国产精品| 国产福利一区二区三区视频| 久久 天天综合| 久久国产夜色精品鲁鲁99| 图片区小说区区亚洲影院| 一区二区三区欧美视频| 亚洲免费大片在线观看| 成人欧美一区二区三区1314| 中文字幕成人在线观看| 欧美国产禁国产网站cc| 亚洲国产成人av好男人在线观看| 久久久精品中文字幕麻豆发布| 欧美成人猛片aaaaaaa| 欧美大片日本大片免费观看| 日韩午夜精品视频| 日韩午夜电影av| 日韩一区二区在线看片| 日韩一区二区精品在线观看| 日韩一区二区影院| 3d动漫精品啪啪| 日韩一区二区免费高清| 欧美变态tickle挠乳网站| 欧美刺激午夜性久久久久久久| 精品少妇一区二区| 久久久久99精品一区| 日本一区二区视频在线观看| 国产精品毛片无遮挡高清| 国产精品传媒入口麻豆| 亚洲免费在线看| 亚洲一区视频在线观看视频| 亚洲成在线观看| 日本视频免费一区| 国产一区二区女| 成人午夜电影小说| 91网址在线看| 欧美日韩国产综合草草| 日韩一区二区免费在线电影 | 亚洲综合偷拍欧美一区色| 亚洲制服欧美中文字幕中文字幕| 亚洲国产毛片aaaaa无费看 | 国产欧美日韩亚州综合| 亚洲欧洲国产日本综合| 亚洲一区二区三区四区在线免费观看 | 美腿丝袜在线亚洲一区| 国产综合久久久久久久久久久久 | 欧美日韩中字一区| 日韩欧美一区电影| 国产精品久久三| 亚洲成a人v欧美综合天堂下载 | 成人久久久精品乱码一区二区三区| 成人短视频下载| 欧美日韩亚洲综合在线| 欧美不卡一区二区| 国产精品视频看| 亚洲福利视频导航| 国产精品18久久久| 亚洲色欲色欲www| 强制捆绑调教一区二区| 成人动漫av在线| 91麻豆精品国产91久久久久| 久久精品一区二区三区不卡牛牛| 亚洲精品第一国产综合野| 日韩精品国产欧美| 成人激情视频网站| 这里只有精品视频在线观看| 国产精品网站一区| 日韩电影在线观看一区| 99国产精品久久久久久久久久久| 欧美电影一区二区| 一色屋精品亚洲香蕉网站| 日本欧美一区二区| 色老头久久综合| 国产午夜精品一区二区三区四区 | 午夜视频在线观看一区| 国产一区在线观看麻豆| 日本乱人伦一区| 国产欧美视频在线观看| 天天影视网天天综合色在线播放| www.综合网.com| 精品播放一区二区| 亚洲国产美女搞黄色| 91小视频在线观看| 国产亚洲自拍一区| 免费在线观看成人| 欧美三级日韩在线| 国产精品久久午夜夜伦鲁鲁| 激情综合色播激情啊| 欧美妇女性影城| 亚洲精品免费一二三区| 成人免费观看视频| 久久午夜免费电影| 麻豆国产精品视频| 欧美日韩色综合| 一区二区国产视频| 91视频xxxx| 国产精品久久一卡二卡| 国产成人免费高清| 国产亚洲女人久久久久毛片| 裸体在线国模精品偷拍| 欧美军同video69gay| 亚洲自拍偷拍综合| 91农村精品一区二区在线| 欧美激情在线看| 成人午夜av在线| 中文字幕第一区二区| 国产成人精品一区二区三区四区| 久久嫩草精品久久久精品| 激情综合网最新| xf在线a精品一区二区视频网站| 美腿丝袜亚洲一区| 日韩一区二区三区视频在线| 天堂影院一区二区| 欧美精品色综合| 爽爽淫人综合网网站 | 亚洲一二三专区| 色综合久久综合网欧美综合网| 欧美日韩国产综合一区二区| 亚洲综合在线第一页| 欧美性生交片4| 亚洲在线免费播放| 欧美日韩一区小说| 免费观看30秒视频久久| 日韩亚洲欧美一区| 国内久久精品视频| 欧美激情一区不卡| 99精品国产热久久91蜜凸| 亚洲免费资源在线播放| 亚洲精品免费一二三区| 色综合久久久久久久久久久| 艳妇臀荡乳欲伦亚洲一区| 欧美在线视频日韩| 日本va欧美va精品| 精品久久久久久久人人人人传媒| 国产乱码精品一区二区三区五月婷| 久久人人超碰精品| 91香蕉视频污| 午夜电影一区二区| 久久综合九色综合97婷婷女人| 豆国产96在线|亚洲| 亚洲精品国久久99热| 9191成人精品久久| 国模大尺度一区二区三区| 中日韩av电影| 欧美视频一区二区| 久久99国产精品尤物| 中文字幕欧美一区| 欧美另类高清zo欧美| 国产福利电影一区二区三区| 亚洲欧美日韩国产综合在线| 欧美一区二区三区系列电影| 懂色av中文一区二区三区| 一区二区三区蜜桃| 久久品道一品道久久精品| 日本久久一区二区三区| 久久99这里只有精品| 亚洲欧美区自拍先锋| 日韩亚洲电影在线| 91亚洲精品久久久蜜桃网站| 久久国产麻豆精品| 亚洲欧洲日韩一区二区三区| 欧美一区永久视频免费观看| 成人av在线影院| 免费日本视频一区| 中文字幕一区不卡| 日韩女同互慰一区二区| 色偷偷久久人人79超碰人人澡| 麻豆91免费看| 一区二区三区波多野结衣在线观看 | 成人综合婷婷国产精品久久 | 亚洲电影欧美电影有声小说| 久久久综合视频| 欧美日韩国产另类不卡| 成人精品gif动图一区| 麻豆91在线播放免费| 亚洲一区国产视频| 国产精品美女久久福利网站 | 亚洲私人影院在线观看| 精品成人a区在线观看| 7777精品久久久大香线蕉|