- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IRP_MJ_READ/WRITE例程 当应用层调用ReadFile/WriteFile时,I/O管理器将读/写请求封装成IRP传递给设备对象1. 对象链:文件对象--设备对象--驱动对象---例程入口 2. 驱动栈 :上层过滤驱动--功能驱动(FDO)--下层过滤驱动--总线驱动 原型 NTSTATUS GRGUSB_IO_RW( PDEVICE_OBJECT DeviceObject, PIRP Irp) 功能 1.检查端点与操作是否匹配 2.调用UsbBuildInterruptOrBulkTransferRequest构造URB请求 3.调用IoSetCompletionRoutine设置完成例程入口点GRGUSB_IO_RW_Completion 4.标记IRP为Pending状态 5.IoCallDriver调用下层驱动处理 6.返回处理状态 注:URB是USB Request Block的缩写,URB是FDO与USB总线驱动(usbd.sys)间接口 GRGUSB_IO_RW_Completion void IoSetCompletionRoutine( PIRP Irp, // I/O请求的Irp PIOC_ROUTINE CompletionRoutine // 完成例程 PVOID Context, // 上下文 BOOLEAN InvokeOnSuccess, // Irp被成功处理时调用 BOOLEAN InvokeOnError, // Irp处理出错时调用 BOOLEAN InvokeOnCancel); // Irp被IoCancel()时调用 设: iLen: URB读回的数据长度 Need: 需读取数据长度 iCount: 本次Irp总共读取的数据长度 Status||iLen 0 iCount+=iLen 继续读64K?数据 iLen == 64K Need0 Irp完成 Status==Error 开始 结束 是 否 否 是 是 DPC:复位管道 结束 驱动程序的编译 DDK/WDK采用命令行编译 有多种编译环境组合配置可选 Checked:调试版本 Free :发布版本 因为64位平台有两种处理器,且互不兼容所以有 x86 :32位处理器 ia64 :INTEL的安腾系列 x64 :AMD64桌面系统常见64平台 INF文件 [VERSION] Signature=$CHICAGO$ DriverVer=09/24/2014, CatalogFile.NTx86 = GRGUSB.cat CatalogFile.NTAMD64 = GRGamd64.cat [Manufacturer] %GRG%=Mfg0,NT,NTAMD64,NTia64 [Mfg0.NTAMD64] %GRG.DeviceDesc01%=GRG_USB_DDI, USB\VID_0471PID_0100 %GRG.DeviceDesc03%=GRG_USB_DDI, USB\VID_0471PID_0103 [GRG_NT_AddReg] HKLM, System\Currentcontrolset\Services\GRGUSB\Parameters, BulkUsbEnable, 0x10001, 0 HKLM, System\Currentcontrolset\Services\GRGUSB\Parameters, DebugLevel, 0x10001, 10 [GRG_USB_DDI.NTAMD64.Services] Addservice = GRGUSB, 0 GRGUSB.AddService [GRGUSB.AddService] DisplayName= %GRG_Service.SvcDesc% ServiceType= 1 ; SERVICE_KERNEL_DRIVER StartType= 3 ; SERVICE_DEMAND_START ErrorControl= 1 ; SERVICE_ERROR_CRITICAL ServiceBinary=%10%\System32\Drivers\GRGUSB.sys [Strings] GRG.DeviceDesc01=GRGBanking CRM9250 GRG.DeviceDesc03=GRGBanking CAM8340 DiskId1=GRG Banking Installation Disk #1 (USB) GRG
您可能关注的文档
最近下载
- 吞咽障碍护理的ppt课件.pptx VIP
- PROTEUS-V8中文版介绍.ppt VIP
- 精准落实语文要素五策略 .pdf VIP
- 《第一单元 100以内数加与减(二)——图书角》教学设计-2024-2025学年二年级上册数学北师大版.docx VIP
- 中枢神经系统感染护理查房.ppt VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 规范、标准整理:TCSUS 17-2021 古道保护利用规划编制导则--------工程交流群加vx:gqq5616.pdf VIP
- 在2024年全市第四季度“12345”热线不满意工单分析研判会上的主持词.docx VIP
- 云南省重大项目办公室 云南省各地州市2015年重大建设项目.doc VIP
- 评标专家评标流程.pdf VIP
文档评论(0)