The IDE_CONTROLLER_PROPERTIES structure contains configuration information for an IDE controller.


  ULONG                            Size;
  ULONG                            ExtensionSize;
  ULONG                            SupportedTransferMode[MAX_IDE_CHANNEL];
  PCIIDE_CHANNEL_ENABLED           PciIdeChannelEnabled;
  PCIIDE_SYNC_ACCESS_REQUIRED      PciIdeSyncAccessRequired;
  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;


  • 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.


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.



Ide.h (include Ide.h)

See also






Send comments about this topic to Microsoft