DEIVER_OBJECT结构参数

typedef struct
{
PDEVICE_OBJECT DeviceObject; //指向驱动程序创建的设备对象
PUNICODE_STRING HardwareDatabase; //记录的是设备的硬件数据库名,这里同样用Unicode字符串记录
PFAST_IO_DISPATCH FastIoDispatch;//文件驱动中用到的派遣函数
PDRIVER_INITIALIZE DriverInit;//指向DriverEntry函数的,这是通过IO管理器来建立的。
PDRIVER_STARTIO DriverStartIo;//记录StartIO例程的函数地址,用于串行化操作
PDRIVER_UNLOAD DriverUnload;//指定驱动卸载时所用的回调函数地址
PDRIVER_DISPATCH MajorFunction[IRP_MJ_NUM+1];//指向驱动程序的DispatchXXX函数指针的数组
}DRIVER_OBJECT,*PDRIVER_OBJECT;指向驱动程序的DispatchXXX函数指针的数组

PDRIVER_DISPATCH MajorFunction[IRP_MJ_NUM+1]

IRP_MJ_CLEANUP 清除工作,CloseHandle会产生此IRP
IRP_MJ_CLOSE   关闭设备,CloseHandle会产生此IRP
IRP_MJ_CREATE  创建设备,CreateFile会产生此IRP
IRP_MJ_DEVICE_CONTROL DeviceloControl 函数会产生此IRP
IRP_MJ_INTERNAL_DEVICE_CONTROL  该IO代码用来与其他驱动之间的通讯
IRP_MJ_PNP   即插即用消息
IRP_MJ_POWER 操作系统处理电源消息时产生此IRP
IRP_MJ_READ  读取设备内容,ReadFile产生此IRP
IRP_MJ_SHUTDOWN 关闭系统前会产生此IRP
IRP_MJ_SYSTEM_CONTROL 系统内部产生的控制信息类似于内核调用eviceloControl函数
IRP_MJ_WRITE 对设备进行WriteFile时会产生此IRP

最简单的处理全部返还成功。

#pragma PAGEDCODE
NTSTATUS HelloDDKDispatchRoutin(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp)
{
    KdPrint(("Enter HelloDDKDispatchRoutin\n"));

    PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);

    NTSTATUS status = STATUS_SUCCESS;
    // 完成IRP
    pIrp->IoStatus.Status = status;
    pIrp->IoStatus.Information = 0;    // bytes xfered
    IoCompleteRequest(pIrp, IO_NO_INCREMENT);

    KdPrint(("Leave HelloDDKDispatchRoutin\n"));

    return status;
}
时间: 2024-10-15 06:48:14

DEIVER_OBJECT结构参数的相关文章

2015.3.5 VS2005调用VC6 dll 时结构参数的传递

结构只能以地址方式进行传递,dll只能传递结构不能传递类 VS端: [DllImport(@"D:\程序\VC程序\MfcDllspace\Debug\space.dll")] private static extern bool PassStruct(IntPtr skintptr); [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct sngk

DEVICE_OBJECT结构参数

typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT { CSHORT Type; USHORT Size; LONG ReferenceCount; /*指向驱动程序中驱动对象的指针*/ struct _DRIVER_OBJECT *DriverObject; /*指向下一个设备对象的指针*/ struct _DEVICE_OBJECT *NextDevice; struct _DEVICE_OBJE

arm方案商,三星解决方案S5P4418核心板

产品简介 G4418开发平台采用邮票孔的核心板+底板方式设计,核心板可扩展性强,多达 184 PIN 管脚,运行速度高达 1.4GHz.PCB 采用 8 层沉金工艺设计,具有最佳的电气特性和抗干扰特性,工作稳定可靠.核心板板载了 PMU,带库仑计的充电管理,可以广泛应用于 MID,POS,PDA,PND,智能家居,手机,车机,学习机,游戏机以及其他各种工控领域. S5P4418 采用 28nm 制作工艺,内置高性能 4 核 A9 ARM 架构,相比 Exynos4412, 在多媒体性能上,它几乎

Oracle 数据库日常巡检

Oracle 数据库日常巡检 阅读目录 1. 检查数据库基本状况 2. 检查Oracle相关资源的使用情况 3. 检查Oracle数据库备份结果 4. 检查Oracle数据库性能 5. 检查数据库cpu.I/O.内存性能 6. 检查数据库安全性 7. 其他检查 回到顶部 1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name,host_name,sta

Https协议:SSL建立过程分析(也比较清楚,而且有OpenSSL的代码)

web访问的两种方式: http协议,我们一般情况下是通过它访问web,因为它不要求太多的安全机制,使用起来也简单,很多web站点也只支持这种方式下的访问. https协议(Hypertext Transfer Protocol over Secure Socket Layer),对于安全性要求比较高的情况,可以通过它访问web,比如工商银行https://www.icbc.com.cn/icbc/(当然也可以通过http协议访问,只是没那么安全了).其安全基础是SSL协议. SSL协议,当前版

OpenCV——像素数据类型总结<摘>

1.Unsigned 8bits(一般的图像文件格式使用的大小)IplImage数据结构参数:IPL_DEPTH_8UCvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4 变量类型 空间大小 范围 其他 uchar 8bits 0~255 (OpenCV缺省变量,同等unsigned char) unsigned char 8bits 0~255 2.Signed 8bitsIplImage数据结构参数:IPL_DEPTH_8SCvMat数据结构参数:CV_8S

联想,逆向(创新技法6)

联想思维的运用: 1) 接近联想:   通过时间和空间上比较接近的事物的联想来完成创新和发明.是一种触类旁通的方法.2)控制联想   这里的控制是一种限制,联想的方式限定在同义,反义,部分,整体等规则.3)对比联想   事物总是对立统一的.对比联想的对比主要是根据事物的性质的对立面来进行思考.比如水洗->干洗,高温聚变->低温聚变等.事物的性质的对立面同样是可以相互转换的.4)因果联想    根据事物的因果关系来进行发明创造.5)自由联想   不受限制的联想,这对于开拓思维,打开思路很有帮助,

freeCAD文档结构

一个freecad文档包含了你场景中的所有物体.它可以包含组及任何工作平台制造的物体.你可以切换工作台,但是它仍然工作在同一个文档上.当您保存您的工作时,该文件就被保存到磁盘上.你可以同时打开多个freecad文档,或同一文件打开不同的视图. 在文档中,对象可以被移动到组,并有一个唯一的名称.管理组,对象和对象名称,主要是从树型视图做到的.当然,你也可以通过Python解释器做到文档的管理.在树视图中,根据当前的工作台,您可以创建组,移动对象的群体,删除对象或组,或通过在树视图中单击或对一个对象

双目相机标定以及立体测距原理及OpenCV实现

作者:dcrmg 单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了相机的内部结构参数,外参是相机的旋转矩阵R和平移向量t.内参中dx和dy是相机单个感光单元芯片的长度和宽度,是一个物理尺寸,有时候会有dx=dy,这时候感光单元是一个正方形.Cx和Cy分别代表相机感光芯片的中心点在x和y方向上可能存在的偏移,因为芯片在安装到相机模组上的时候,由于制造精度和组装工艺的影响,很难做到中心完全重合.f代表相机的焦距. 双目标定的第一步需要分别获取左右相机的内外参