在学习驱动编程的过程中,碰到函数指针的使用,如下:
pDriverObject->MajorFunction[IRP_MJ_CREATE]=ddk_DispatchRoutine_CONTROL; //IRP_MJ_CREATE相关IRP处理函数
NTSTATUS ddk_DispatchRoutine_CONTROL(IN PDEVICE_OBJECT pDevobj,IN PIRP pIrp );
//---------------------------------------
//逆推过程
01.查看MajorFunction的定义:
...
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
} DRIVER_OBJECT;
typedef DRIVER_DISPATCH *PDRIVER_DISPATCH;
03.再查看DRIVER_DISPATCH的定义
NTSTATUS
DRIVER_DISPATCH (
__in struct _DEVICE_OBJECT *DeviceObject,
__inout struct _IRP *Irp
);
04.可以看出DRIVER_DISPATCH是一个 函数声明
05.正推替代:
NTSTATUS
(*MajorFunction[IRP_MJ_MAXI