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

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

?? devclass.cpp

?? RTL8139 網(wǎng)卡驅(qū)動(dòng)源碼 for WinCE.net CEPC
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/10/2002
//****************************************************************************
NTSTATUS CFuncDevice::PreStartDevice(PIRP pIrp)
{
    // ...
    // You can implement here any specific code, which should be executed on
    // device starting prior to starting PDO. It can be useful to make some
    // corrections to IRP (e.g. to resource list) BEFORE passing IRP to PDO.
    // ...

    return STATUS_SUCCESS;
}

//****************************************************************************
//                  --- CFuncDevice::PostStartDevice ---
//
// Purpose: Post start device processing
//   Input: PIRP     pIrp     - IRP
//          NTSTATUS ntStatus - Status of StartDevice
//  Output: none
// Written: by Anton V. Krivenko 4/10/2002
//****************************************************************************
void CFuncDevice::PostStartDevice(PIRP pIrp, NTSTATUS ntStatus)
{
    // ...
    // You can implement here any specific code, which should be executed
    // immediately after device starting. It can be useful to make some
    // manipulations depend on status of starting.
    // ...
}

//****************************************************************************
//                   --- CFuncDevice::QueryInterface ---
//
// Purpose: Query interfaces for PCMCIA device
//   Input: none
//  Output: BOOLEAN  - Operation status
// Written: by Anton V. Krivenko 4/11/2002
//****************************************************************************
BOOLEAN CFuncDevice::QueryInterface(void)
{
    NTSTATUS ntStatus;                      // Query status

//-------------------- Query PCMCIA standard interface -----------------------

    ntStatus = PnpQueryInterface( m_pNextStackDevice,
                                 &GUID_PCMCIA_INTERFACE_STANDARD,
                                 &m_PcmciaIface,
                                  sizeof(m_PcmciaIface),
                                  1);
    ASSERTS_PNPDRV(NT_SUCCESS(ntStatus));

    if (NT_SUCCESS(ntStatus))
    {

//------------------ Query PCMCIA bus standard interface ---------------------

        ntStatus = PnpQueryInterface( m_pNextStackDevice,
                                     &GUID_PCMCIA_BUS_INTERFACE_STANDARD,
                                     &m_BusIface,
                                      sizeof(m_BusIface),
                                      1);
        ASSERTS_PNPDRV(NT_SUCCESS(ntStatus));
    }                                       // if (NT_SUCCESS(ntStatus))

    return NT_SUCCESS(ntStatus) ? TRUE : FALSE;
}

//****************************************************************************
//                    --- CFuncDevice::StartDevice ---
//
// Purpose: Start device
//   Input: PCM_PARTIAL_RESOURCE_LIST pList - Resource list
//  Output: NTSTATUS                        - Operation status
// Written: by Anton V. Krivenko 4/10/2002
//****************************************************************************
NTSTATUS CFuncDevice::StartDevice(PCM_PARTIAL_RESOURCE_LIST pList)
{
    NTSTATUS ntStatus = STATUS_UNSUCCESSFUL;// Assumes, failed

    // Since we requested only 1 memory window, we can retrieve here resources,
    // which assign for us PnP manager.

    ASSERTS_PNPDRV(pList != NULL);

    if (pList != NULL)
    {
        PCM_PARTIAL_RESOURCE_DESCRIPTOR ppd = &pList->PartialDescriptors[0];

        m_uStart                            = ppd->u.Memory.Start.u.LowPart;
        m_uLength                           = ppd->u.Memory.Length;
		m_phyMemAddr                        = ppd->u.Memory.Start;

        if (QueryInterface())
        {
            // Here you can analyse CIS, using m_BusIface.ReadCfgSpace method.
            // In a like manner you can write some values to CIS (if card
            // require it), using m_BusIface.WriteCfgSpace.
			m_dwMask = 1;
            ntStatus = STATUS_SUCCESS;
        }                                   // if (QueryInterface())
    }                                       // if (pList != NULL)

    return ntStatus;
}

//****************************************************************************
//                  --- CFuncDevice::ReadWriteRequest ---
//
// Purpose: Read / write request
//   Input: BOOLEAN fRead   - Read or write
//          PVOID   pData   - Data buffer
//          ULONG   uOffset - Offset on card to read / write
//          ULONG   uLength - Size of data to read / write
//  Output: BOOLEAN         - Operation status
// Written: by Anton V. Krivenko 4/11/2002
//****************************************************************************
BOOLEAN CFuncDevice::ReadWriteRequest(BOOLEAN fRead, PVOID pData, ULONG uOffset, ULONG uLength)
{
    // You can implement here any card specific reading / writing. It can be
    // simply memory copying for memory cards (SRAM/FLASH). You can use
    // m_PcmciaIface.MapMemoryWindow call to map any part of your memory card
    // in you memory window, which you initializes in StartDevice:
    //
     if(m_PcmciaIface.MapMemoryWindow(m_uStart,
                                   uOffset,
                                   m_uLength,
                                   2,
                                   PCMCIA_MEMORY_16BIT_ACCESS))
	return TRUE;
    
    // Or it can be ATA/ATAPI specific code for ATA/ATAPI based cards.

    return FALSE;
}

//****************************************************************************
//                     --- CFuncDevice::OnIrpRead ---
//
// Purpose: IRP_MJ_READ handler
//   Input: PIRP         pIrp     - IRP
//          NTSTATUS   & ntStatus - Operation status
//  Output: BOOLEAN               - FALSE to complete request outside
// Written: by Anton V. Krivenko 4/11/2002
//****************************************************************************
BOOLEAN CFuncDevice::OnIrpRead(PIRP pIrp, NTSTATUS & ntStatus)
{
    STRACE_PNPDRV(">> CFuncDevice::OnIrpRead()\n");

    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
    PVOID              pData  = MmGetSystemAddressForMdlSafe(pIrp->MdlAddress, HighPagePriority);
    PUCHAR             MemBaseAddr;
    PVOID              pOut   = pIrp->UserBuffer;
    ntStatus                  = STATUS_UNSUCCESSFUL;

//    READ_REGISTER_BUFFER_UCHAR((PUCHAR)(MemBaseAddr),(PUCHAR)pOut,pStack->Parameters.Read.Length);

    ASSERTS_PNPDRV(pData != NULL);

    if (pData != NULL)
    {
        STRACE_PNPDRV("   Buffer: %08lXh\n"
                      "   Offset: %08lXh\n"
                      "   Length: %08lXh\n",
                      pData,
                      pStack->Parameters.Read.ByteOffset.LowPart,
                      pStack->Parameters.Read.Length);

        if (ReadWriteRequest(TRUE, pData,
                             pStack->Parameters.Read.ByteOffset.LowPart,
                             pStack->Parameters.Read.Length))
        {
            pIrp->IoStatus.Information = pStack->Parameters.Read.Length;
	  MemBaseAddr = (PUCHAR)MmMapIoSpace(m_phyMemAddr,pStack->Parameters.Read.Length,MmNonCached);
	  READ_REGISTER_BUFFER_UCHAR(MemBaseAddr,(PUCHAR)pOut,pStack->Parameters.Read.Length);
	  MmUnmapIoSpace(MemBaseAddr,pStack->Parameters.Read.Length);
            ntStatus                   = STATUS_SUCCESS;
        }                                   
    }                                       

    STRACE_PNPDRV("<< CFuncDevice::OnIrpRead()- ntStatus=%08lX\n", ntStatus);
    return FALSE;
}

//****************************************************************************
//                     --- CFuncDevice::OnIrpWrite ---
//
// Purpose: IRP_MJ_WRITE handler
//   Input: PIRP         pIrp     - IRP
//          NTSTATUS   & ntStatus - Operation status
//  Output: BOOLEAN               - FALSE to complete request outside
// Written: by Anton V. Krivenko 4/11/2002
//****************************************************************************
BOOLEAN CFuncDevice::OnIrpWrite(PIRP pIrp, NTSTATUS & ntStatus)
{
    STRACE_PNPDRV(">> CFuncDevice::OnIrpWrite()\n");

    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
    PVOID              pData  = MmGetSystemAddressForMdlSafe(pIrp->MdlAddress, HighPagePriority);

    ntStatus                  = STATUS_UNSUCCESSFUL;

    ASSERTS_PNPDRV(pData != NULL);

    if (pData != NULL)
    {

//------------------------ Check write protection ----------------------------

        if (m_PcmciaIface.IsWriteProtect())
            ntStatus = STATUS_MEDIA_WRITE_PROTECTED;
        else
        {
            STRACE_PNPDRV("   Buffer: %08lXh\n"
                          "   Offset: %08lXh\n"
                          "   Length: %08lXh\n",
                          pData,
                          pStack->Parameters.Write.ByteOffset.LowPart,
                          pStack->Parameters.Write.Length);

            if (ReadWriteRequest(FALSE, pData,
                                 pStack->Parameters.Write.ByteOffset.LowPart,
                                 pStack->Parameters.Write.Length))
            {
                pIrp->IoStatus.Information = pStack->Parameters.Write.Length;
                ntStatus                   = STATUS_SUCCESS;
            }
        }                                   // if (m_pPart->ReadRequest(...
    }                                       // if (pData != NULL)

    STRACE_PNPDRV("<< CFuncDevice::OnIrpWrite()- ntStatus=%08lX\n", ntStatus);
    return FALSE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产无一区二区| 91亚洲永久精品| 日韩一卡二卡三卡| 亚洲午夜激情网页| 91久久久免费一区二区| 亚洲欧美国产毛片在线| 99免费精品视频| 国产精品理论在线观看| 波多野结衣在线一区| 亚洲国产激情av| 成+人+亚洲+综合天堂| 国产精品女上位| 99久久久无码国产精品| 亚洲视频资源在线| 欧美亚男人的天堂| 亚洲成人一区二区| 欧美一区二区免费观在线| 久久国产欧美日韩精品| 久久精品视频一区二区三区| 大尺度一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 色综合天天综合狠狠| 亚洲综合在线视频| 欧美精品v国产精品v日韩精品 | 色婷婷综合久久久中文字幕| 日韩理论片在线| 欧美视频一区二| 老司机精品视频线观看86| 精品国产污污免费网站入口 | 亚洲小说春色综合另类电影| 欧美日韩国产乱码电影| 蜜臀av一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 成人高清视频在线观看| 亚洲伊人色欲综合网| 欧美一级午夜免费电影| 国产成人av电影免费在线观看| 亚洲欧洲性图库| 欧美老年两性高潮| 国产高清成人在线| 亚洲精品一卡二卡| 欧美一区二区三区性视频| 91色porny| 日韩精品一级中文字幕精品视频免费观看| 日韩欧美在线不卡| 91丨porny丨最新| 免费欧美在线视频| 国产精品大尺度| 欧美一级精品在线| aaa国产一区| 美女视频免费一区| 亚洲丝袜精品丝袜在线| 91.com在线观看| www.亚洲在线| 欧美aaaaaa午夜精品| 国产精品久久久久久久久搜平片| 欧美日韩亚洲综合| 精品国产伦一区二区三区观看体验| 国产夜色精品一区二区av| 91香蕉视频mp4| 免费亚洲电影在线| 亚洲天堂中文字幕| 精品免费国产一区二区三区四区| 91视频在线观看| 久久国产三级精品| 亚洲一级二级三级在线免费观看| 久久久不卡影院| 91精品国产综合久久久久久漫画 | 日韩影院在线观看| 中文字幕精品一区二区精品绿巨人| 91精品国产综合久久久蜜臀图片| 91在线播放网址| 国产激情视频一区二区三区欧美| 亚洲成人免费视频| 美国毛片一区二区| 亚洲激情自拍偷拍| 亚洲人成影院在线观看| 在线播放亚洲一区| 91久久线看在观草草青青| 成人性生交大片免费| 久久精品久久久精品美女| 亚洲欧美日韩中文播放| 日本一区二区视频在线| 欧美成人福利视频| 欧美一区二区三区影视| 欧美日本国产一区| 欧美日韩亚洲综合在线| 欧美中文字幕一区二区三区 | 精品乱码亚洲一区二区不卡| 欧美日韩不卡一区二区| 在线免费亚洲电影| 色视频成人在线观看免| 波多野结衣的一区二区三区| 成人午夜av影视| 国产99久久久国产精品| 国产成人精品综合在线观看 | 精品一区二区av| 亚洲第一搞黄网站| 亚洲一区二区三区中文字幕| 亚洲色图色小说| 亚洲激情第一区| 亚洲一区二区三区四区在线免费观看 | 9191国产精品| 欧美精品成人一区二区三区四区| 欧美日韩国产综合视频在线观看| 欧美亚洲国产一区二区三区va| 在线亚洲一区二区| 欧美色图在线观看| 777欧美精品| 日韩欧美电影一区| 欧美xxxxxxxxx| 久久一区二区三区国产精品| 国产日韩欧美制服另类| 国产精品久久毛片a| 亚洲精品写真福利| 视频一区在线播放| 久久精品国产久精国产| 国产美女主播视频一区| 粉嫩一区二区三区性色av| 91原创在线视频| 欧美日韩高清一区二区| 欧美电影免费观看高清完整版在线观看 | 久久国产乱子精品免费女| 国产伦精品一区二区三区免费迷 | av综合在线播放| 成人精品国产福利| 97se狠狠狠综合亚洲狠狠| 在线视频中文字幕一区二区| 欧美日韩激情在线| 精品国产凹凸成av人导航| 欧美激情一区三区| 亚洲一区二区三区在线看| 免费高清在线视频一区·| 大美女一区二区三区| 在线视频一区二区三区| 日韩精品专区在线影院重磅| 欧美激情一区二区三区蜜桃视频| 亚洲欧美日韩系列| 青青草一区二区三区| 国产成人在线看| 在线精品观看国产| 欧美精品一区二区在线播放| 日韩理论片中文av| 麻豆精品一区二区av白丝在线| 成人精品gif动图一区| 在线成人免费观看| 中文字幕不卡在线播放| 午夜精品成人在线| 高潮精品一区videoshd| 一区二区三区欧美视频| 337p亚洲精品色噜噜| 久久久久久久综合日本| 一区二区三区日韩欧美精品| 久久se精品一区二区| 色婷婷av一区二区三区之一色屋| 日韩女优毛片在线| 亚洲激情在线激情| 国产黄色精品网站| 欧美日韩国产区一| 国产精品九色蝌蚪自拍| 麻豆成人久久精品二区三区红| 色婷婷综合久久久久中文| 久久新电视剧免费观看| 三级欧美在线一区| 91麻豆.com| 国产日韩高清在线| 日韩精品乱码免费| 色8久久精品久久久久久蜜| 久久久影视传媒| 日本不卡123| 色妞www精品视频| 中文字幕av一区二区三区免费看| 免费观看30秒视频久久| 欧美自拍丝袜亚洲| 亚洲图片你懂的| 成人av在线影院| 国产日产欧美精品一区二区三区| 蜜臀99久久精品久久久久久软件| 欧美色手机在线观看| 亚洲免费在线视频一区 二区| 国产99久久久精品| 久久久久亚洲蜜桃| 久久97超碰色| 日韩视频一区在线观看| 午夜av一区二区三区| 欧美影院一区二区| 亚洲精品日韩一| 色av一区二区| 亚洲综合免费观看高清完整版| 97久久精品人人爽人人爽蜜臀| 欧美高清在线精品一区| 国产精品18久久久久久久网站| 久久综合狠狠综合| 国产一区91精品张津瑜| 久久久青草青青国产亚洲免观| 国产老妇另类xxxxx| 久久久精品综合| 国产福利91精品| 国产精品国产成人国产三级| 菠萝蜜视频在线观看一区|