DVT

#include <dvt.h>

typedef struct DVT {
    USHORT DVT_reserved_1;       // reserved for expansion to 32 bit
    ULONG  DVT_next_dvt;         // 16-bit offset to next DVT
    USHORT DVT_device_cnt;       // count of devices added/accepted
    PVOID  DVT_aer;              // addr of driver's async event routine
    ULONG  DVT_ddb;              // first DDB for this DVT
    ULONG  DVT_ddb_init;         // first DDB for this DVT/ICE
    CHAR   DVT_ascii_name[16];   // driver name
    CHAR   DVT_create_date[8];   // creation date
    CHAR   DVT_create_time[8];   // creation time
    CHAR   DVT_rev_level[4];     // revision level
    ULONG  DVT_feature_code;     // feature code
    USHORT DVT_if_requirements;  // i/f requirements
    BYTE   DVT_bus_type;         // I/O bus type; see below
    ULONG  DVT_reference_data;   // data passed in DRP upon reg
    CHAR   DVT_first_drive;      // unit number of first drive valid
                                 //  only for block devices
    CHAR   DVT_current_lgn;      // current load group number
    ULONG  DVT_LoadHandle;       // contains the VxD's load handle if
                                 //  we loaded the driver else 0
    CHAR   DVT_scsi_max_target;  // max target supported for SCSI
    CHAR   DVT_scsi_max_lun;     // max LUN supported for SCSI
    PVOID  DVT_entry_point;      // entry point into driver 
                                 //  SCSI miniport only
    UCHAR  DVT_init_count;       // # of successful AEP_INITIALIZE calls
                                 //  port drivers only
    PVOID  DVT_reserved[2];      // reserved; must be zero
} _DVT;

Contains driver vector table information. The IOS creates a DVT structure for itself and then one for each driver during registration. The IOS's DVT provides a link to the first driver via the DVT_next_dvt member. The first driver can access the second driver's DVT via its DVT_next_dvt offset, and so on, providing a linked chain between the drivers' DVTs. Many of the members are set using values from the DRP structure provided by the driver.

DVT_bus_type
Input and output bus type. Can be one of these values:
DVT_BT_ESDI ESDI or ESDI emulator
DVT_BT_SCSI SCSI or SCSI emulator
DVT_BT_FLOPPY NEC FLOPPY or FLOPPY emulator
DVT_BT_SMART Smart device
DVT_BT_ABIOS ABIOS or ABIOS emulator

DVT_feature_code
Feature code; must match the feature code in the DRP. Can be a combination of these values:
DVT_FC_SCAN_DOWN BIOS scans targets from high to low.
DVT_FC_IO_FOR_INQ_AEP Port driver needs to send I/O through IOP in response to an AEP_DEVICE_INQUIRY function. Results in AEP_CONFIG_DCB function for inquiry DCB.
DVT_FC_HALF_SEC Notify driver every half second.
DVT_FC_1_SEC Notify driver every second.
DVT_FC_2_SECS Notify driver every two seconds.
DVT_FC_4_SECS Notify driver every four seconds.
DVT_FC_DYNALOAD Driver was dynaloaded by the IOS.
DVT_FC_NEED_PRELOAD Driver needs to hook I/O even before the port driver. When set, the AEP_CONFIG_DCB function is received before the prot driver.
DVT_FC_NEED_PRE_POST_LOAD Same as DVT_FC_NEED_PRELOAD except that the driver receives two AEP_CONFIG_DCB calls for each DCB: one call before the port driver, and another call after layer drivers before its load group have been initialized. Note that care must be taken not to insert twice in the same DCB.

See Also

DRP, AEP