IDE_CONTROLLER_PROPERTIES structure
The IDE_CONTROLLER_PROPERTIES structure contains configuration information for an IDE controller.
Syntax
typedef struct _IDE_CONTROLLER_PROPERTIES {
ULONG Size;
ULONG ExtensionSize;
ULONG SupportedTransferMode[MAX_IDE_CHANNEL];
PCIIDE_CHANNEL_ENABLED PciIdeChannelEnabled;
PCIIDE_SYNC_ACCESS_REQUIRED PciIdeSyncAccessRequired;
PCIIDE_TRANSFER_MODE_SELECT_FUNC PciIdeTransferModeSelect;
BOOLEAN IgnoreActiveBitForAtaDevice;
BOOLEAN AlwaysClearBusMasterInterrupt;
BOOLEAN UsePioOnOddTransfers;
UCHAR UsePioAfter8kTransfers :1;
UCHAR DmaRetryAfterCrcError :1;
UCHAR Reserved :6;
PCIIDE_USEDMA_FUNC PciIdeUseDma;
ULONG AlignmentRequirement;
ULONG DefaultPIO;
PCIIDE_UDMA_MODES_SUPPORTED PciIdeUdmaModesSupported;
} IDE_CONTROLLER_PROPERTIES, *PIDE_CONTROLLER_PROPERTIES;
Members
Size
Specifies the size of this structure in bytes, as returned by sizeof(). In effect, this member indicates the version of this structure used by the port driver.ExtensionSize
Specifies the amount of memory in bytes needed by the PCI IDE controller minidriver for its private data.SupportedTransferMode
Furnishes an array of bitmaps indicating the data transfer modes supported by the PCI IDE controller. See PCIIDE_TRANSFER_MODE_SELECT for a detailed definition of these bitmaps.PciIdeChannelEnabled
Pointer to a minidriver routine used to query whether an IDE channel is enabled. For further information see HwIdeXChannelEnabled.PciIdeSyncAccessRequired
Pointer to a minidriver routine used to query whether the controller's two IDE channels can be used simultaneously or must be used one at a time. For further information see HwIdeXSyncAccessRequired.PciIdeTransferModeSelect
Pointer to a minidriver routine used to select the proper transfer modes for the given devices. For further information see HwIdeXTransferModeSelect.IgnoreActiveBitForAtaDevice
If TRUE indicates that the controller's bus-master active bit should be ignored. Some IDE controllers do not properly clear the bus-master active bit upon the completion of a bus-master interrupt. Setting this member to TRUE indicates that the driver should clear the active bit manually. For an IDE controller that clears its active bit properly, this member should be FALSE.AlwaysClearBusMasterInterrupt
If TRUE, indicates that the PCI IDE controller minidriver must clear the bus-master interrupt whenever the interrupt bit in the bus master status register is set. This should always be set to TRUE.UsePioOnOddTransfers
Use PIO mode for an odd number of DWORD sized transfers.UsePioAfter8kTransfers
Use PIO mode when an 8K scaled transfer is needed. This is when the transfer byte size is 8K * N + M where N > 0 && 0 < M < 512.DmaRetryAfterCrcError
One DMA retry is issued if a CRC error occurs.Reserved
PciIdeUseDma
Pointer to a minidriver routine that determines whether DMA should be used or not. This routine should be called before every I/O operation. For further information see HwIdeXUseDma.AlignmentRequirement
Specifies an alignment requirement value to be stored in the device object. See Initializing a Device Object for further information about defining a device object's alignment requirement.DefaultPIO
Indicates, when set to one by the controller minidriver, that devices connected to the minidriver's controller are restricted by default to PIO. However, users can request by means of the device manager that DMA be performed on individual devices.PciIdeUdmaModesSupported
Pointer to a minidriver routine that is optionally implemented by the controller minidriver. This routine checks a device's identify data and determines the current ultra DMA transfer mode for that device. This allows the IDE port driver, atapi.sys, to query the controller minidriver for newly supported transfer modes without having to interpret a device's identify data. For further information see HwIdeXUdmaModesSupported.
Remarks
This structure is returned by the IDE controller minidriver's HwIdeXGetControllerProperties minidriver routine. Some of the information in this structure is obtained directly from the device extension; all information not obtained from the device extension is obtained from PCI configuration space by means of a call to the controller library routine, PciIdeXGetBusData.
Requirements
Header |
Ide.h (include Ide.h) |
See also