typedef struct _DRIVER_OBJECT
{
    short Type;
    short Size;
    DEVICE_OBJECT *DeviceObject;
    unsigned long Flags;
    void *DriverStart;
    unsigned long DriverSize;
    void *DriverSection;
    DRIVER_EXTENSION *DriverExtension;
    UNICODE_STRING DriverName;
    UNICODE_STRING *HardwareDatabase;
    FAST_IO_DISPATCH *FastIoDispatch;
    long (*DriverInit)(DRIVER_OBJECT *, UNICODE_STRING *);
    void (*DriverStartIo)(DEVICE_OBJECT *, IRP *);
    void (*DriverUnload)(DRIVER_OBJECT *);
    long (*MajorFunction[28])(DEVICE_OBJECT *, IRP *);
} DRIVER_OBJECT, *PDRIVER_OBJECT;