PCIIDE_TRANSFER_MODE_SELECT structure
The PCIIDE_TRANSFER_MODE_SELECT structure contains transfer mode information for all devices attached to a channel of an IDE controller.
Syntax
typedef struct _PCIIDE_TRANSFER_MODE_SELECT {
ULONG Channel;
BOOLEAN DevicePresent[MAX_IDE_DEVICE * MAX_IDE_LINE];
BOOLEAN FixedDisk[MAX_IDE_DEVICE * MAX_IDE_LINE];
BOOLEAN IoReadySupported[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG DeviceTransferModeSupported[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG BestPioCycleTime[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG BestSwDmaCycleTime[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG BestMwDmaCycleTime[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG BestUDmaCycleTime[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG DeviceTransferModeCurrent[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG UserChoiceTransferMode[MAX_IDE_DEVICE * MAX_IDE_LINE];
ULONG EnableUDMA66;
IDENTIFY_DATA IdentifyData[MAX_IDE_DEVICE];
ULONG DeviceTransferModeSelected[MAX_IDE_DEVICE * MAX_IDE_LINE];
PULONG TransferModeTimingTable;
ULONG TransferModeTableLength;
} PCIIDE_TRANSFER_MODE_SELECT, *PPCIIDE_TRANSFER_MODE_SELECT;
Members
Channel
Contains the IDE channel number (0 or 1) of the devices for which a transfer mode is requested. All devices for which information is requested must be attached to the same channel.
DevicePresent
Each array entry, when TRUE, indicates that the corresponding device is currently present in the system. All of the member arrays of PCIIDE_TRANSFER_MODE_SELECT contain entries for up to MAX_IDE_DEVICE devices, but for any given entry n, DevicePresent[n] must be consulted to determine if the nth device is actually present in the system. If the nth device is present, then DevicePresent[n] = TRUE.
FixedDisk
Each array entry, when TRUE, indicates that the corresponding device is an ATA hard disk.
IoReadySupported
Each array entry, when TRUE, indicates that the corresponding device supports I/O Ready.
DeviceTransferModeSupported
Furnishes a bitmap indicating the data transfer modes that each attached device supports. For more information, see the Remarks section.
BestPioCycleTime
Contains an array of integer values that indicate each device's best PIO cycle time in nanoseconds.
BestSwDmaCycleTime
Contains an array of integer values that indicate each device's best Single-word DMA cycle time in nanoseconds.
BestMwDmaCycleTime
Contains an array of integer values that indicate each device's best Multiword DMA cycle time in nanoseconds.
BestUDmaCycleTime
Contains an array of integer values that indicate each device's best Ultra DMA cycle time in nanoseconds.
DeviceTransferModeCurrent
Furnishes a bitmap indicating the data transfer modes each device is currently programmed for. For more information, see the Remarks section.
UserChoiceTransferMode
EnableUDMA66
The miniport will save this data in their deviceExtension
IdentifyData
Indicate devices' data transfer modes chosen by
DeviceTransferModeSelected
Furnishes a bitmap indicating the data transfer modes selected by the PCI minidriver for each device. For more information, see the Remarks section.
TransferModeTimingTable
TransferModeTableLength
Remarks
Member arrays DeviceTransferModeSupported, DeviceTransferModeCurrent, and DeviceTransferModeSelected are arrays of ULONG bitmaps indicating combinations of PIO and DMA transfer modes. Each bitmap corresponds to the transfer modes of a single device. The bitmaps are defined as follows:
// PIO Modes
#define PIO_MODE0 (1 << 0)
#define PIO_MODE1 (1 << 1)
#define PIO_MODE2 (1 << 2)
#define PIO_MODE3 (1 << 3)
#define PIO_MODE4 (1 << 4)
// Single-word DMA Modes
#define SWDMA_MODE0 (1 << 5)
#define SWDMA_MODE1 (1 << 6)
#define SWDMA_MODE2 (1 << 7)
// Multi-word DMA Modes
#define MWDMA_MODE0 (1 << 8)
#define MWDMA_MODE1 (1 << 9)
#define MWDMA_MODE2 (1 << 10)
// Ultra DMA Modes
#define UDMA_MODE0 (1 << 11)
#define UDMA_MODE1 (1 << 12)
#define UDMA_MODE2 (1 << 13)
#define UDMA_MODE3 (1 << 14)
#define UDMA_MODE4 (1 << 15)
#define UDMA_MODE5 (1 << 16)
Requirements
Header |
Ide.h (include Ide.h) |
See also