DRIVER_OBJECT
DRIVER_OBJECT是一个微软未完全公开的,只有部分公开的数据成员。
可见的成员函数
PDEVICE_OBJECT DeviceObject //指向这个驱动创建的设备 设备是一个链表,该指针指向链表的头节点。
PDRIVER_EXTENSION DriverExtension //驱动扩展信息。
PUNICODE_STRING HardwareDatabase //指向 数据库中硬件设备的名字
PFAST_IO_DISPATCH FastIoDispatch //指向 fast I/O 入口地址
PDRIVER_INITIALIZE DriverInit //由I/O管理器设置的指向DriverEntry函数的入口点
PDRIVER_STARTIO DriverStartIo //由DriverEntry初始化的驱动 StartIo 函数的入口点。若没该函数则是NULL
PDRIVER_DISPATCH MajorFunction //是一个派遣函数表 每项指向一个IRP派遣函数。
网上有 DRIVER_OBJECT 数据结构的完整信息。
DEVICE_OBJECT
typedef struct _DEVICE_OBJECT {
CSHORT Type; //用来指明对象类型 驱动是3 是一个只读属性
USHORT Size; //设备对象的大小
LONG ReferenceCount; //是一个只读属性
struct _DRIVER_OBJECT * DriverObject; //指向驱动设备 是一个只读属性
struct _DEVICE_OBJECT * NextDevice; //指向下一个设备 是一个可读可写 一般由I/O管理器传入的。
struct _DEVICE_OBJECT * AttachedDevice; //附加的设备对象
struct _IRP * CurrentIrp; //当使用 StartIo 时指向当前IRP
PIO_TIMER Timer; //
ULONG Flags;
ULONG Characteristics;
__volatile PVPB Vpb;
PVOID DeviceExtension;
DEVICE_TYPE DeviceType;
CCHAR StackSize;
union {
LIST_ENTRY ListEntry;
WAIT_CONTEXT_BLOCK Wcb;
} Queue;
ULONG AlignmentRequirement;
KDEVICE_QUEUE DeviceQueue;
KDPC Dpc;
ULONG ActiveThreadCount;
PSECURITY_DESCRIPTOR SecurityDescriptor;
KEVENT DeviceLock;
USHORT SectorSize;
USHORT Spare1;
struct _DEVOBJ_EXTENSION * DeviceObjectExtension; //指向设备的扩展对象
PVOID Reserved;
} DEVICE_OBJECT, *PDEVICE_OBJECT;
更多详细内容还是看MSDN。。