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

HwIdeXTransferModeSelect

HwIdeXGetControllerProperties

IDE_CONTROLLER_PROPERTIES

 

 

Send comments about this topic to Microsoft