shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
阅读:1063回复:0

ifs ddk中的DispatchRead译文

楼主#
更多 发布于:2008-03-22 22:05
DispatchRead
DispatchRead例程服务于那些包含IRP_MJ_READ这样I/O功能代码的IRP数据操作

声明:
NTSTATUS
XxxDispatchRead(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);

参数:
DeviceObject
调用者提供的一个指向DEVICE_OBJECT结构的对象。这是一个目标设备的设备对象,这个设备对象是以前在AddDevice例程里面创建的。
Irp
调用者提供的一个指向IRP数据结构的对象.这个结构描述了I/O请求操作

返回值:
如果这个例程成功,那么必须返回一个STATUS——SUCCESS,否则必须返回一个定义于ntstatus.h中的错误状态值。

注释说明:
一个驱动程序的DispatchRead例程应该命名为XxxDispatchRead,Xxx是驱动程序的描述前缀。驱动程序的DriverEntry例程必须在DriverObject->MajorFunction[IRP_MJ_READ]存储DispatchRead例程的地址.
所有DisPatch例程的输入参数都由Irp指向的IRP数据结构提供。附加的参数由IRP中的associated I/O栈提供,他们通过IO_STACK_LOCATION结构来描述并且可以通过IoGetCurrentIrpStackLocation调用来获取。
通常情况下,所有分发例程运行在任意线程上下文中,并且中断级别(IRQL)是PASSIVE_LEVEL,但是这有异议。更多信息请看 Dispatch Routines and IRQLs
更多的关于DispatchRead例程的信息,请看 Writing Dispatch Routines
更多的光与IRP的信息,请看 Handling IRPs

选择喜欢做的事,就要努力去做!
游客

返回顶部