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

正文內(nèi)容

c9_windows設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)(編輯修改稿)

2025-02-24 05:39 本頁(yè)面
 

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