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

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

?? device.cpp

?? winddk src目錄下的WDM源碼壓縮!
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

Routine Description:

    Release hardware resources.  This should only be called by
    an object which has acquired them.

Arguments:

    None

Return Value:

    None

--*/

{

    PAGED_CODE();

    //
    // Blow away the image synth.
    //
    if (m_TsSynth) {

	delete m_TsSynth;
        m_TsSynth = NULL;

    }

    m_TransportInfo = NULL;
    m_CaptureSink = NULL;

    //
    // Release our "lock" on hardware resources.  This will allow another
    // pin (perhaps in another graph) to acquire them.
    //
    InterlockedExchange (
        &m_PinsWithResources,
        0
        );

}

/*************************************************/


NTSTATUS
CCaptureDevice::
Start (
    )

/*++

Routine Description:

    Start the capture device based on the video info header we were told
    about when resources were acquired.

Arguments:

    None

Return Value:

    Success / Failure

--*/

{

    PAGED_CODE();

    m_LastMappingsCompleted = 0;
    m_InterruptTime = 0;

    return
        m_HardwareSimulation -> Start (
            m_TsSynth,
            m_TransportInfo -> AvgTimePerFrame,
            m_TransportInfo -> ulcbPhyiscalPacket,
            m_TransportInfo -> ulcbPhyiscalFrame / m_TransportInfo -> ulcbPhyiscalPacket
            );


}

/*************************************************/


NTSTATUS
CCaptureDevice::
Pause (
    IN BOOLEAN Pausing
    )

/*++

Routine Description:

    Pause or unpause the hardware simulation.  This is an effective start
    or stop without resetting counters and formats.  Note that this can
    only be called to transition from started -> paused -> started.  Calling
    this without starting the hardware with Start() does nothing.

Arguments:

    Pausing -
        An indicatation of whether we are pausing or unpausing

        TRUE -
            Pause the hardware simulation

        FALSE -
            Unpause the hardware simulation

Return Value:

    Success / Failure

--*/

{

    PAGED_CODE();

    return
        m_HardwareSimulation -> Pause (
            Pausing
            );

}

/*************************************************/


NTSTATUS
CCaptureDevice::
Stop (
    )

/*++

Routine Description:

    Stop the capture device.

Arguments:

    None

Return Value:

    Success / Failure

--*/

{

    PAGED_CODE();

    return
        m_HardwareSimulation -> Stop ();

}

/*************************************************/


ULONG
CCaptureDevice::
ProgramScatterGatherMappings (
    IN PUCHAR *Buffer,
    IN PKSMAPPING Mappings,
    IN ULONG MappingsCount
    )

/*++

Routine Description:

    Program the scatter / gather mappings for the "fake" hardware.

Arguments:

    Buffer -
        Points to a pointer to the virtual address of the topmost
        scatter / gather chunk.  The pointer will be updated as the
        device "programs" mappings.  Reason for this is that we get
        the physical addresses and sizes, but must calculate the virtual
        addresses...  This is used as scratch space for that.

    Mappings -
        An array of mappings to program

    MappingsCount -
        The count of mappings in the array

Return Value:

    The number of mappings successfully programmed

--*/

{

    PAGED_CODE();

    return 
        m_HardwareSimulation -> ProgramScatterGatherMappings (
            Buffer,
            Mappings,
            MappingsCount,
            sizeof (KSMAPPING)
            );

}

/*************************************************************************

    LOCKED CODE

**************************************************************************/

#ifdef ALLOC_PRAGMA
#pragma code_seg()
#endif // ALLOC_PRAGMA


ULONG
CCaptureDevice::
QueryInterruptTime (
    )

/*++

Routine Description:

    Return the number of frame intervals that have elapsed since the
    start of the device.  This will be the frame number.

Arguments:

    None

Return Value:

    The interrupt time of the device (the number of frame intervals that
    have elapsed since the start of the device).

--*/

{

    return m_InterruptTime;

}

/*************************************************/


void
CCaptureDevice::
Interrupt (
    )

/*++

Routine Description:

    This is the "faked" interrupt service routine for this device.  It
    is called at dispatch level by the hardware simulation.

Arguments:

    None

Return Value:

    None

--*/

{

    m_InterruptTime++;

    //
    // Realistically, we'd do some hardware manipulation here and then queue
    // a DPC.  Since this is fake hardware, we do what's necessary here.  This
    // is pretty much what the DPC would look like short of the access
    // of hardware registers (ReadNumberOfMappingsCompleted) which would likely
    // be done in the ISR.
    //
    ULONG NumMappingsCompleted = 
        m_HardwareSimulation -> ReadNumberOfMappingsCompleted ();

    //
    // Inform the capture sink that a given number of scatter / gather
    // mappings have completed.
    //
    m_CaptureSink -> CompleteMappings (
        NumMappingsCompleted - m_LastMappingsCompleted
        );

    m_LastMappingsCompleted = NumMappingsCompleted;

}

/**************************************************************************

    DESCRIPTOR AND DISPATCH LAYOUT

**************************************************************************/

//
// CaptureFilterDescriptor:
//
// The filter descriptor for the capture device.
DEFINE_KSFILTER_DESCRIPTOR_TABLE (FilterDescriptors) { 
    &CaptureFilterDescriptor
};

//
// CaptureDeviceDispatch:
//
// This is the dispatch table for the capture device.  Plug and play
// notifications as well as power management notifications are dispatched
// through this table.
//
const
KSDEVICE_DISPATCH
CaptureDeviceDispatch = {
    CCaptureDevice::DispatchCreate,         // PnP Add Device
    CCaptureDevice::DispatchPnpStart,       // PnP Start
    NULL,                                   // Post-Start
    NULL,                                   // Pnp Query Stop
    NULL,                                   // Pnp Cancel Stop
    CCaptureDevice::DispatchPnpStop,        // Pnp Stop
    NULL,                                   // Pnp Query Remove
    NULL,                                   // Pnp Cancel Remove
    NULL,                                   // Pnp Remove
    NULL,                                   // Pnp Query Capabilities
    NULL,                                   // Pnp Surprise Remove
    NULL,                                   // Query Power
    NULL                                    // Set Power
};


//
// CaptureDeviceDescriptor:
//
// This is the device descriptor for the capture device.  It points to the
// dispatch table and contains a list of filter descriptors that describe
// filter-types that this device supports.  Note that the filter-descriptors

// can be created dynamically and the factories created via 
// KsCreateFilterFactory as well.  
//
const
KSDEVICE_DESCRIPTOR
CaptureDeviceDescriptor = {
    &CaptureDeviceDispatch,
    SIZEOF_ARRAY (FilterDescriptors),
    FilterDescriptors,
    KSDEVICE_DESCRIPTOR_VERSION
};

/**************************************************************************

    INITIALIZATION CODE

**************************************************************************/


extern "C"
NTSTATUS
DriverEntry (
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
    )

/*++

Routine Description:

    Driver entry point.  Pass off control to the AVStream initialization
    function (KsInitializeDriver) and return the status code from it.

Arguments:

    DriverObject -
        The WDM driver object for our driver

    RegistryPath -
        The registry path for our registry info

Return Value:

    As from KsInitializeDriver

--*/

{
    NTSTATUS    Status = STATUS_SUCCESS;

    //
    // Simply pass the device descriptor and parameters off to AVStream
    // to initialize us.  This will cause filter factories to be set up
    // at add & start.  Everything is done based on the descriptors passed
    // here.
    //
    Status = KsInitializeDriver (
                DriverObject,
                RegistryPath,
                &CaptureDeviceDescriptor
                );

    return Status;
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡视频在线| 国产网站一区二区三区| 依依成人精品视频| 成人一区二区三区| 亚洲欧洲日韩av| 国产91综合一区在线观看| 精品人伦一区二区色婷婷| 麻豆精品视频在线观看视频| 91精品国产综合久久精品性色| 一区二区三区在线播| 欧美日韩国产免费一区二区| 亚洲综合在线免费观看| 日本伦理一区二区| 亚洲成人黄色小说| 欧美久久一二区| 亚洲一区二区精品视频| 正在播放亚洲一区| 久久精品国产一区二区| 久久久亚洲精品一区二区三区 | 婷婷一区二区三区| 宅男在线国产精品| 成人黄色大片在线观看| 亚洲免费av在线| 在线观看中文字幕不卡| 黄网站免费久久| 国产亚洲一二三区| 国产成人在线免费| 亚洲综合色噜噜狠狠| 欧美区一区二区三区| 裸体健美xxxx欧美裸体表演| 久久久久综合网| av一区二区三区| 亚洲国产精品久久人人爱| 欧美成人三级电影在线| 日本视频中文字幕一区二区三区| 欧美精品一区二区在线观看| 成人av电影在线| 亚洲午夜精品17c| 26uuu国产电影一区二区| 成人综合日日夜夜| 亚洲精品国产精华液| 色婷婷av久久久久久久| 麻豆成人久久精品二区三区红 | 日本高清无吗v一区| 麻豆成人在线观看| 国产精品伦理在线| 91精品视频网| 国产在线一区观看| 亚洲自拍欧美精品| 国产天堂亚洲国产碰碰| 欧美色网一区二区| 国产精品夜夜嗨| 青青草国产精品亚洲专区无| 国产欧美日本一区视频| 91国模大尺度私拍在线视频| 国产成人h网站| 爽爽淫人综合网网站| 欧美一级免费观看| caoporm超碰国产精品| 日韩电影在线免费观看| 久久精品视频一区| 欧美精品久久一区二区三区| 国产成人免费在线视频| 亚洲国产精品影院| 中文字幕+乱码+中文字幕一区| 在线电影院国产精品| 日本高清免费不卡视频| 国产v综合v亚洲欧| 日韩av一二三| 肉色丝袜一区二区| 一区二区在线观看av| 国产亚洲一二三区| 久久久久久久久99精品| 欧美一区二区三区的| 国产成人在线看| 国产成人在线视频免费播放| 免费一级片91| 亚洲国产成人porn| 亚洲精品一卡二卡| 自拍视频在线观看一区二区| 17c精品麻豆一区二区免费| 337p日本欧洲亚洲大胆色噜噜| 欧美老肥妇做.爰bbww| 欧美精品一卡二卡| 91福利精品视频| 91丨国产丨九色丨pron| 91丝袜美腿高跟国产极品老师 | 91福利国产精品| 97精品久久久午夜一区二区三区| 国产美女一区二区| 高清视频一区二区| 国产一区不卡在线| 偷窥国产亚洲免费视频| 日本不卡视频在线| 美女在线一区二区| 国产一区二区三区免费在线观看| 久久99热99| 国内精品伊人久久久久av一坑| 韩国成人福利片在线播放| 精品一区二区三区视频在线观看| 六月丁香婷婷久久| 国产91丝袜在线观看| jvid福利写真一区二区三区| 99久久婷婷国产综合精品电影 | 欧美图区在线视频| 91精品福利在线一区二区三区| 欧美老人xxxx18| 91麻豆精品91久久久久久清纯| 91精品国产美女浴室洗澡无遮挡| 欧美一区二区免费观在线| 久久亚洲精品国产精品紫薇| 国产午夜精品一区二区三区四区| 久久精品男人天堂av| 亚洲欧美偷拍另类a∨色屁股| 亚洲最快最全在线视频| 亚洲一区二区三区免费视频| 极品销魂美女一区二区三区| 国产成人亚洲精品狼色在线| 在线欧美小视频| 91精品黄色片免费大全| 久久亚洲精品小早川怜子| 亚洲精品日日夜夜| 视频一区二区三区在线| 石原莉奈在线亚洲三区| 成人高清免费观看| 在线观看亚洲成人| 日韩免费性生活视频播放| 国产精品视频麻豆| 夜夜亚洲天天久久| 国产精品一级在线| 色先锋久久av资源部| 欧美午夜在线观看| 国产精品丝袜黑色高跟| 亚洲国产你懂的| 波多野结衣中文字幕一区| 欧洲av一区二区嗯嗯嗯啊| 日韩欧美不卡一区| 亚洲啪啪综合av一区二区三区| 视频一区在线播放| 国产原创一区二区| 91精品国产乱| 国产精品卡一卡二卡三| 黄色日韩三级电影| 在线观看91精品国产入口| 精品国产一区二区三区久久久蜜月| 一区二区三区在线观看视频| 精品一区二区三区日韩| 国产一区二区三区四区五区美女 | 欧美久久久久久蜜桃| 国产女主播一区| 国产精品国产馆在线真实露脸 | 久久精品国产精品亚洲精品| 国产高清视频一区| 欧美精品一二三区| 综合久久一区二区三区| 亚洲日本va在线观看| 国产精品一区三区| 欧美一区二区三区思思人| 中文字幕一区二区三区在线观看| 亚洲综合色丁香婷婷六月图片| 国产成人8x视频一区二区| 欧美精品一区二区在线播放| 亚洲电影中文字幕在线观看| www.亚洲国产| 久久久噜噜噜久噜久久综合| 日韩电影网1区2区| 久久久久久99精品| 日韩二区三区在线观看| 欧美日韩www| 亚洲制服欧美中文字幕中文字幕| av一二三不卡影片| 国产精品久久久久婷婷二区次 | 中文字幕在线不卡| 成人爽a毛片一区二区免费| 欧美一级片在线看| 久久精品国产在热久久| 这里只有精品电影| 一区二区三区中文免费| 色婷婷国产精品综合在线观看| 国产精品家庭影院| 色综合久久综合网97色综合| 中文字幕在线观看一区| 国产精品66部| 国产精品久久久久久久久免费桃花 | 久久亚洲一区二区三区四区| 蜜桃精品视频在线观看| 91麻豆精品久久久久蜜臀| 亚洲女女做受ⅹxx高潮| 欧美在线观看一区| 亚洲永久精品国产| 欧美日韩黄视频| 日韩电影在线免费| 欧美私人免费视频| 日韩高清不卡一区| 日韩一级欧美一级| 国产高清亚洲一区| 中文字幕二三区不卡| 成人免费视频app| 亚洲色图视频网| av电影天堂一区二区在线|