freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c9_windows設(shè)備驅(qū)動程序設(shè)計(編輯修改稿)

2025-02-24 05:39 本頁面
 

【文章內(nèi)容簡介】 CE_EXTENSION pdx = (PDEVICE_EXTENSION)deviceDeviceExtension;//獲得設(shè)備擴展 …… //其他 IRP處理操作 return STATUS_Xxx; //返回狀態(tài)碼} I/O請求包( IRP)定義: I/O請求包( IRP)是驅(qū)動程序操作的中心,它是一個內(nèi)核 “ 對象 ”,是預(yù)先定義的數(shù)據(jù)結(jié)構(gòu)。應(yīng)用: I/O管理器通過 IRP對設(shè)備對象進行操作。 I/O管理器接收到一個 I/O請求后,分配并初始化一個 IRP,再把它傳遞到合適的設(shè)備驅(qū)動程序中的最高驅(qū)動程序中。 設(shè)備對象屬性為設(shè)備驅(qū)動程序處理的數(shù)據(jù)。由一個固定的首部和一個可變數(shù)目的 I/O棧組成。IRP首部組成I/O棧 :通過 IO_STACK_LOCATION結(jié)構(gòu)數(shù)組實現(xiàn)。 一次 I/O請求可能對應(yīng)多個 I/O操作實現(xiàn)方法 : 較多個 IRP實現(xiàn); 一個 IRP實現(xiàn) +I/O棧實現(xiàn)。(較優(yōu))IRP中的 I/O棧組成n IO_STACK_LOCATION結(jié)構(gòu)成員: MajorFunction(該 IRP的主功能碼) MinorFunction(該 IRP的副功能碼) Parameters( IRP參數(shù)) DeviceObject(與該棧單元對應(yīng)的設(shè)備對象地址 ) FileObject(內(nèi)核文件對象地址) CompletionRoutine( I/O完成程序地址) Context(任意的與上下文相關(guān)的值)。IRP_MJ_CREATE請求 ,創(chuàng)建設(shè)備映射; IRP_MJ_CLOSE請求,關(guān)閉設(shè)備映射; IRP_MJ_READ請求,讀取設(shè)備對象的信息; IRP_MJ_WRITE請求,對設(shè)備對象寫信息; IRP_MJ_PNP請求,實現(xiàn) PnP管理,如IRP_MN_START_DEVICE請求 ,啟動設(shè)備; IRP_MJ_IOCTL請求, I/O控制。Parameters成員的幾個常見的類型 : IRP創(chuàng)建與處理 創(chuàng)建 IRP的函數(shù) : IoBuildAsynchronousFsdRequest()。//創(chuàng)建異步 IRP IoBuildSynchronousFsdRequest()。//創(chuàng)建同步 IRP IoBuildDeviceIoControlRequest()。 //創(chuàng)建同步 IRP_MJ_DEVICE_CONTROL或 // IRP_MJ_INTERNAL_DEVICE_CONTROL 請求 IoAllocateIrp()。//創(chuàng)建其他種類 IRP IoMakeAssociatedIrp()。//創(chuàng)建某些 IRP的子 IRP創(chuàng)建者 : I/O管理器,或其他的驅(qū)動程序。 I/O管理器在創(chuàng)建完 IRP后,將 I/O請求信息設(shè)置到 IRP中,并將 IRP發(fā)送到設(shè)備驅(qū)動程序中。已知參數(shù)信息 : PDEVICE_OBJECT DeviceObject; //設(shè)備對象結(jié)構(gòu) IRP_MJ_Xxx; //I/O請求對應(yīng)的功能碼I/O管理器的處理流程 : PIO_STACK_LOCATION stack = IoGetNextIrpStackLocation(Irp)。 //獲得該 IRP第一個堆棧單元的指針 (堆棧初始為空 ) stackMajorFunction = IRP_MJ_Xxx。 //填充 MajorFunction代碼 …… //對棧做其他初始化的工作 //如 StartIo() NTSTATUS status = IoCallDriver(DeviceObject,Irp)。//把 IRP發(fā)送到設(shè)備驅(qū)動程序IRP的設(shè)置與派遣:IoCallDriver的執(zhí)行過程:NTSTATUS IoCallDriver(PDEVICE_OBJECT device, PIRP Irp){ IoSetNextIrpStackLocation( Irp); PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp); //獲得棧單元指針 stackDeviceObject = device。 //設(shè)置設(shè)備對象結(jié)構(gòu)地址 ULONG f = stackMajorFunction; //得到主功能號 PDRIVER_OBJECT driver = deviceDriverObject;//獲得驅(qū)動程序?qū)ο蟮牡刂? return (*d
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1