博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
reactos操作系统实现(93)
阅读量:2015 次
发布时间:2019-04-28

本文共 1472 字,大约阅读时间需要 4 分钟。

现在来分析一下键盘驱动程序里主要使用的IRP主功能代码,由于每一个IRP都在首部包括有一个主功能代码码,并且还可能有次功能代码。大体有下面几种主功能代码:

IRP_MJ_CREATE                    创建或打开设备文件。

IRP_MJ_CREATE_NAMED_PIPE         名管道驱动主功能。

IRP_MJ_CLOSE                     关闭句柄。

IRP_MJ_READ                      读取数据。

IRP_MJ_WRITE                     写入数据。

IRP_MJ_QUERY_INFORMATION         得到文件的长度。

IRP_MJ_SET_INFORMATION           设置文件的长度。

IRP_MJ_QUERY_EA                  

IRP_MJ_SET_EA                  

IRP_MJ_FLUSH_BUFFERS             把缓冲区数据立即写入文件或者发送到设备。

IRP_MJ_QUERY_VOLUME_INFORMATION

IRP_MJ_SET_VOLUME_INFORMATION 

IRP_MJ_DIRECTORY_CONTROL      

IRP_MJ_FILE_SYSTEM_CONTROL    

IRP_MJ_DEVICE_CONTROL           设备I/O控制。

IRP_MJ_INTERNAL_DEVICE_CONTROL  高层驱动程序内部发送的I/O控制包。

IRP_MJ_SCSI                   

IRP_MJ_SHUTDOWN                 关闭通知。

IRP_MJ_LOCK_CONTROL           

IRP_MJ_CLEANUP                  取消文件句柄上的任何等待的IRP

IRP_MJ_CREATE_MAILSLOT        

IRP_MJ_QUERY_SECURITY         

IRP_MJ_SET_SECURITY           

IRP_MJ_POWER                    电源管理请求。

IRP_MJ_SYSTEM_CONTROL           WMIIRP

IRP_MJ_DEVICE_CHANGE            

IRP_MJ_QUERY_QUOTA            

IRP_MJ_SET_QUOTA              

IRP_MJ_PNP                      即插即用消息。

IRP_MJ_PNP_POWER               

IRP_MJ_MAXIMUM_FUNCTION         最大的主功能代码数。

在键盘驱动程序里主要使用下面几个主功能,如下:

指定IRP消息IRP_MJ_CREATE的处理函数i8042Create

#060     DriverObject->MajorFunction[IRP_MJ_CREATE]  = i8042Create;

 

清除分配资源的函数i8042Cleanup

#061     DriverObject->MajorFunction[IRP_MJ_CLEANUP] = i8042Cleanup;

 

指定关闭设备时,调用的函数i8042Close

#062     DriverObject->MajorFunction[IRP_MJ_CLOSE]   = i8042Close;

 

通过IO操作函数i8042DeviceControl

#063     DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = i8042DeviceControl;

 

指定中断处理函数i8042InternalDeviceControl

#064     DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = i8042InternalDeviceControl;

 

指定即插即用时响应函数i8042Pnp

#065     DriverObject->MajorFunction[IRP_MJ_PNP]     = i8042Pnp;

转载地址:http://crdxf.baihongyu.com/

你可能感兴趣的文章
Web前端知识体系精简
查看>>
lodop使用
查看>>
CSS3自定义滚动条样式 -webkit-scrollbar
查看>>
此文章介绍vue-cli脚手架config目录下index.js配置文件
查看>>
Js new一个函数和直接调用函数的区别
查看>>
lodop多打印一页白纸
查看>>
sticky footer
查看>>
css 浮动问题详解
查看>>
ie8 不支持 position:fixed 的简单解决办法
查看>>
img标签间距问题
查看>>
javascript 原型(prototype 、__proto__、函数、对象)
查看>>
AMD 与 CMD 区别
查看>>
JS的构造函数
查看>>
3个不常用的HTML标签
查看>>
css margin边界叠加问题详谈
查看>>
使用 Polyfill 而不再是 bable 来实践js新特性
查看>>
js基本功能大全
查看>>
npm 与 package.json 快速入门教程
查看>>
json-server的关系图谱详解(Relationships)
查看>>
项目模板使用说明
查看>>