阅读:908回复:0
DriverEntry里怎么确定IRP与例程的对应关系
网上和书上都说在DriverEntry里需要告诉系统哪些IRP由哪个例程处理,给出的函数原型是:
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DriverObject->DriverUnload = DriverUnload; <--1 DriverObject->DriverExtension->AddDevice = AddDevice; DriverObject->DriverStartIo = StartIo; DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; //设置各个IRP的处理函数 ,这三个IRP是每一个WDM驱动程序必须处理的。 DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = DispatchWmi; ... } 但是由driverstudio生成的usb驱动工程中DriverEntry的原型是这样的: NTSTATUS Usbtest::DriverEntry(PUNICODE_STRING RegistryPath) 根本就没有 PDRIVER_OBJECT DriverObject这个参数,那driverstudio是怎么完成IRP与例程的对应的? 谢谢指点 |
|