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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? devioctl.cpp

?? RTL8139 網卡驅動源碼 for WinCE.net CEPC
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//****************************************************************************
//                            File DEVIOCTL.CPP
//
//                         IOCTL support for device
//
//                     Copyright (c) APSoft, 1998-2002.
//                          All rights reserved.
//
//****************************************************************************


#define INITGUID
extern "C"
{
#include <ntddk.h>                          // Main DDK's include
#include <wdmguid.h>                        // Interface IDs
#include <wmidata.h>                        // WMI GUIDs
#include <devguid.h>                        // GUIDs for device classes
#include <ntddpcm.h>                        // PCMCIA specific
}

#include <devclass.h>                       // Class declaration
#include <utils.h>                          // PnpQueryInterface

#include <projio.h>                         // IOCTLs

//------------------------------- Typedefs -----------------------------------

typedef NTSTATUS (CFuncDevice::* PFNIOCTL_HANDLER)(PIRP pIrp);

///////////////////////////////////////////////////////////////////////////////
//                   --- Structure IOCTL_DISP_HANDLER ---                    //
///////////////////////////////////////////////////////////////////////////////
typedef struct tagIOCTL_DISP_HANDLER        // IOCTL handlers map entry
{
    ULONG               uIoCtrlCode;
    PFNIOCTL_HANDLER    pfnHandler;
} IOCTL_DISP_HANDLER, * PIOCTL_DISP_HANDLER;


///////////////////////////////////////////////////////////////////////////////
//                     -- I/O control dispatch map --                        //
///////////////////////////////////////////////////////////////////////////////
static IOCTL_DISP_HANDLER IfaceTable[] =
{
    { IOCTL_GET_VERSION,                CFuncDevice::OnGetVersion       },
    { IOCTL_GET_ID_SIZE,                CFuncDevice::OnGetIdSize        },
    { IOCTL_GET_ID,                     CFuncDevice::OnGetId            },
    { IOCTL_GET_ID_ASYNC,               CFuncDevice::OnGetIdAsync       },
    { IOCTL_GET_MEMORY,                 CFuncDevice::OnGetMemory        },
    { IOCTL_GET_CIS,		CFuncDevice::OnGetCIS	  },
    { IOCTL_REG_CLIENT,		CFuncDevice::OnRegClient	  },
    { IOCTL_REL_CLIENT,		CFuncDevice::OnRelClient	  },
    { IOCTL_GET_MASK,                   CFuncDevice::OnGetMask          },
    { 0,                                NULL                            }
};


///////////////////////////////////////////////////////////////////////////////
//                        --- Class CFuncDevice ---                          //
///////////////////////////////////////////////////////////////////////////////

//****************************************************************************
//                    --- CFuncDevice::OnIrpDevCtrl ---
//
// Purpose: IRP_MJ_DEVICE_CONTROL 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::OnIrpDevCtrl(PIRP pIrp, NTSTATUS & ntStatus)
{
    STRACE_PNPDRV(">> CFuncDevice::OnIrpDevCtrl()\n");

    ntStatus                   = STATUS_UNSUCCESSFUL;

    PIO_STACK_LOCATION pStack  = IoGetCurrentIrpStackLocation(pIrp);
    ULONG              uIoCode = pStack->Parameters.DeviceIoControl.IoControlCode;

    for (ULONG uIdx = 0; IfaceTable[uIdx].pfnHandler != NULL; uIdx++)
    {
        if (IfaceTable[uIdx].uIoCtrlCode == uIoCode)
        {
            ntStatus = (this->*(IfaceTable[uIdx].pfnHandler))(pIrp);
            break;
        }                                   // if (IfaceTable[uIdx]....
    }                                       // for (ULONG uIdx = 0; ...

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

//****************************************************************************
//                    --- CFuncDevice::OnGetVersion ---
//
// Purpose: IOCTL_REL_CLIENT handler
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/18/2002
//****************************************************************************
NTSTATUS CFuncDevice::OnRelClient(PIRP pIrp) 
{
    STRACE_PNPDRV(">> CFuncDevice::OnGetVersion()\n");

    NTSTATUS           ntStatus = STATUS_SUCCESS;
    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
    //PULONG    pInput  = (PULONG)pIrp->AssociatedIrp.SystemBuffer;

    MmUnmapIoSpace((PVOID)m_uMemBaseAddr,m_uLength);
	
    return ntStatus;
}

//****************************************************************************
//                    --- CFuncDevice::OnGetVersion ---
//
// Purpose: IOCTL_REG_CLIENT handler
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/18/2002
//****************************************************************************
NTSTATUS CFuncDevice::OnRegClient(PIRP pIrp) 
{
    STRACE_PNPDRV(">> CFuncDevice::OnGetVersion()\n");

    NTSTATUS           ntStatus = STATUS_SUCCESS;
    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
   
    if(m_uLength == 0)
	return STATUS_UNSUCCESSFUL;
       
    m_uMemBaseAddr = (ULONG)MmMapIoSpace(m_phyMemAddr,m_uLength,MmNonCached);
    
    if(!m_uMemBaseAddr)
    {
	return STATUS_UNSUCCESSFUL;
    }
	
    return ntStatus;
}

//****************************************************************************
//                    --- CFuncDevice::OnGetVersion ---
//
// Purpose: IOCTL_GET_VERSION handler
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/18/2002
//****************************************************************************
NTSTATUS CFuncDevice::OnGetCIS(PIRP pIrp) 
{
    STRACE_PNPDRV(">> CFuncDevice::OnGetVersion()\n");

    NTSTATUS           ntStatus = STATUS_SUCCESS;

    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
    PVOID              pData   = pIrp->UserBuffer;
    
    if(!m_BusIface.ReadCfgSpace((PUCHAR)pData,0,256))
    {
        return STATUS_UNSUCCESSFUL;
    }

    return ntStatus;
}

//****************************************************************************
//                    --- CFuncDevice::OnGetVersion ---
//
// Purpose: IOCTL_GET_VERSION handler
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/18/2002
//****************************************************************************
NTSTATUS CFuncDevice::OnGetMemory(PIRP pIrp) 
{
    STRACE_PNPDRV(">> CFuncDevice::OnGetVersion()\n");

    NTSTATUS           ntStatus = STATUS_SUCCESS;

    PIO_STACK_LOCATION pStack = IoGetCurrentIrpStackLocation(pIrp);
    PGET_READMEMORY    pInput  = (PGET_READMEMORY)pIrp->AssociatedIrp.SystemBuffer;
    ULONG              uOutSize = pStack->Parameters.DeviceIoControl.OutputBufferLength;
    PVOID              pData   = pIrp->UserBuffer;
    
    ULONG  uOffset = pInput->dwOffset;
    ULONG  uLength = pInput->dwLength;
    
    if(uOutSize < uLength)
    {
        return STATUS_UNSUCCESSFUL;
    }
    
    if(uLength > m_uLength)
    {
        return STATUS_UNSUCCESSFUL;
    }
    
    if(m_PcmciaIface.MapMemoryWindow(m_uStart,
	    uOffset,
	    m_uLength,
	    2,
	    PCMCIA_MEMORY_16BIT_ACCESS))
    {
        READ_REGISTER_BUFFER_UCHAR((PUCHAR)m_uMemBaseAddr,(PUCHAR)pData,uLength);
    }
    
    return ntStatus;
}

//****************************************************************************
//                    --- CFuncDevice::OnGetVersion ---
//
// Purpose: IOCTL_GET_VERSION handler
//   Input: PIRP     pIrp - IRP
//  Output: NTSTATUS      - Operation status
// Written: by Anton V. Krivenko 4/18/2002

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av福利| 色天天综合色天天久久| 懂色av一区二区三区免费观看| eeuss鲁片一区二区三区在线看| 欧美日韩精品福利| 综合在线观看色| 久久国产麻豆精品| 欧美日韩美少妇| √…a在线天堂一区| 精品系列免费在线观看| 欧美日韩亚洲国产综合| 中文字幕亚洲区| 国产一区三区三区| 51精品视频一区二区三区| 亚洲欧洲精品一区二区三区不卡 | 欧美午夜视频网站| 国产精品你懂的| 国产精品系列在线观看| 欧美一区二区久久| 午夜精品久久一牛影视| 欧美午夜电影在线播放| 亚洲日本韩国一区| 不卡欧美aaaaa| 亚洲国产精品高清| 国产99精品在线观看| 欧美精品一区二区三区四区| 美洲天堂一区二卡三卡四卡视频| 欧美亚洲自拍偷拍| 亚洲综合精品自拍| 91高清视频免费看| 一二三区精品福利视频| 91久久国产最好的精华液| 国产精品色一区二区三区| 国产乱理伦片在线观看夜一区| 欧美不卡一二三| 狠狠色丁香婷综合久久| 久久久久久免费毛片精品| 黄一区二区三区| 国产午夜亚洲精品不卡| 国产不卡一区视频| 国产精品欧美经典| 不卡视频一二三| 亚洲精品五月天| 欧美亚洲综合在线| 日韩 欧美一区二区三区| 91精品国产综合久久小美女| 日韩高清一区在线| 精品免费视频.| 国产精品一区一区三区| 欧美激情一区二区三区在线| 99久久99久久精品免费观看 | 国产精品久久二区二区| 成人av网址在线| 一区二区欧美在线观看| 欧美日韩亚洲高清一区二区| 另类调教123区| 国产精品区一区二区三区| 不卡一区二区中文字幕| 亚洲尤物在线视频观看| 欧美一区二区三区视频| 国产一区二区不卡| 一区二区欧美国产| 欧美一区二区三区免费视频| 久久99在线观看| 中文字幕一区二区三区视频| 欧美日韩亚洲另类| 久久国产乱子精品免费女| 中文字幕精品—区二区四季| 欧美视频精品在线观看| 国产精品99久久久久久久vr | 首页综合国产亚洲丝袜| 久久九九久久九九| 在线看国产一区| 激情综合网av| 亚洲线精品一区二区三区八戒| 日韩欧美www| 91久久精品一区二区三区| 男男视频亚洲欧美| 亚洲另类在线一区| 久久久久久夜精品精品免费| 欧美亚洲愉拍一区二区| 国产成人av电影在线| 亚洲va欧美va国产va天堂影院| 中文字幕乱码久久午夜不卡 | 亚洲综合区在线| 亚洲女人小视频在线观看| 欧美一区二区三区白人| 色婷婷精品大在线视频| 国产精品综合一区二区三区| 亚洲成人av资源| 国产精品成人网| 精品电影一区二区| 欧美久久久久久久久久| 色综合久久综合网欧美综合网| 国产一区二区三区久久久| 日韩电影在线免费看| 一区二区三区国产| 国产精品妹子av| 久久久精品欧美丰满| 日韩视频一区二区三区在线播放| 欧美影院精品一区| 99精品1区2区| 成人永久看片免费视频天堂| 久久99精品久久久| 天天综合网天天综合色 | 久久一夜天堂av一区二区三区| 91精品国产黑色紧身裤美女| 欧美性淫爽ww久久久久无| 色哟哟亚洲精品| 99免费精品视频| 9人人澡人人爽人人精品| 国产成a人无v码亚洲福利| 国产老妇另类xxxxx| 国产最新精品精品你懂的| 免费观看在线色综合| 婷婷国产v国产偷v亚洲高清| 亚洲高清不卡在线观看| 夜夜嗨av一区二区三区| 亚洲一线二线三线久久久| 曰韩精品一区二区| 亚洲品质自拍视频网站| 综合久久国产九一剧情麻豆| 亚洲人成小说网站色在线| 日韩美女视频一区| 亚洲美女免费在线| 亚洲线精品一区二区三区| 亚洲国产精品麻豆| 日韩av一级电影| 久久66热re国产| 国产经典欧美精品| 不卡一区二区中文字幕| 色综合天天综合狠狠| 欧美日韩精品电影| 欧美电视剧在线看免费| 久久色在线视频| 中文在线一区二区| 一区二区三区在线高清| 亚洲一区中文在线| 日韩国产精品久久久| 韩国av一区二区三区在线观看| 国产一区二区免费视频| 99久久国产综合精品女不卡| 欧美综合天天夜夜久久| 日韩精品一区二区三区swag| 国产农村妇女毛片精品久久麻豆 | 欧美一级日韩不卡播放免费| 26uuu亚洲综合色欧美| 国产精品网曝门| 一区二区视频在线看| 日韩精品电影一区亚洲| 国产成人综合网站| 欧美性猛片xxxx免费看久爱| 日韩精品最新网址| 综合网在线视频| 日本v片在线高清不卡在线观看| 国产成人小视频| 欧美日韩国产综合一区二区| 久久免费电影网| 亚洲综合在线五月| 国产在线视频一区二区三区| 色老汉av一区二区三区| 精品欧美一区二区久久| 一区二区三区在线视频免费| 国产一区二区三区视频在线播放| 91网站在线播放| 久久久久成人黄色影片| 午夜一区二区三区在线观看| 成人av资源站| 26uuu国产电影一区二区| 亚洲丶国产丶欧美一区二区三区| 国产69精品久久99不卡| 91精品一区二区三区久久久久久| 中文字幕亚洲欧美在线不卡| 久久99国产精品久久99| 欧美日韩在线精品一区二区三区激情| 久久久久久毛片| 麻豆91免费看| 欧美精品电影在线播放| 国产精品12区| 欧美成人激情免费网| 亚洲国产你懂的| 99国产欧美另类久久久精品| 精品免费99久久| 日韩二区三区四区| 在线精品观看国产| 亚洲欧美激情插| av亚洲精华国产精华| 久久先锋影音av鲁色资源网| 久久精品国产一区二区三区免费看| 91久久免费观看| 一区二区三区高清不卡| 99国产精品国产精品久久| 日本一区二区综合亚洲| 国产精品综合网| www欧美成人18+| 国产老肥熟一区二区三区| 精品va天堂亚洲国产| 久久精品国产一区二区| 欧美电影免费观看高清完整版在线观看| 午夜欧美电影在线观看|