IDE_DEVICE_PARAMETERS structure (irb.h)
The IDE_DEVICE_PARAMETERS structure contains configuration information that the port driver provides to the miniport driver to configure a device.
Syntax
typedef struct _IDE_DEVICE_PARAMETERS {
USHORT Version;
IDE_DEVICE_TYPE IdeDeviceType;
UCHAR TargetId;
UCHAR MaximumLun;
UCHAR NumberOfOverlappedRequests;
UCHAR MaxBlockXfer;
USHORT DeviceCharacteristics;
ATA_ADDRESS_TRANSLATION AddressTranslation;
union {
LARGE_INTEGER MaxLba;
struct {
USHORT NumCylinders;
USHORT NumHeads;
USHORT NumSectorsPerTrack;
USHORT Reserved;
} Chs;
};
ULONG BytesPerLogicalSector;
ULONG BytesPerPhysicalSector;
ULONG BytesOffsetForSectorAlignment;
ULONG TransferModeSupported;
ULONG TransferModeSelected;
} IDE_DEVICE_PARAMETERS, *PIDE_DEVICE_PARAMETERS;
Members
Version
Indicates the size of the Device parameters structure. The miniport driver should verify that sizeof(IDE_DEVICE_PARAMETERS) is less than or equal to the Version field.
IdeDeviceType
Indicates the type of the device. The allowed device types are DeviceIsAta for ATA devices, DeviceIsAtapi for ATAPI devices, and DeviceNotExist if no device was found at that address. The other fields in this structure are not valid if the IdeDeviceType is set to DeviceNotExist.
TargetId
Specifies the target ID of the device.
MaximumLun
The miniport driver must update this field to indicate the maximum logical unit number supported by this device. By default, the member is set to 0 indicating the existence of just one LUN.
NumberOfOverlappedRequests
The miniport driver must update this field to specify the number of overlapped requests it can handle for this device. By default, the member is set to 1.
MaxBlockXfer
Specifies the number of sectors in a block of data to be transferred. This value applies to the data blocks used in ATA block transfer commands such as Read Multiple (0xC4), Write Multiple (0xC5). For more information about the ReadMultiple and WriteMultiple commands, see the ATA Specification.
DeviceCharacteristics
Specifies the device characteristics. The table below lists the characteristics that could be set in this member. The high byte of this member is opaque and shall not be changed by the ATA miniport.
Device Characteristic | Description |
---|---|
DFLAGS_REMOVABLE_MEDIA | Indicates that the drive has removable media |
DFLAGS_ REMOVABLE_DEVICE | Indicates that the device can be safely unplugged |
DFLAGS_FUA_SUPPORT | Indicates that the device supports FUA (Force Unit Access) |
DFLAGS_INT_DRQ | Indicates that the device interrupts as DRQ is set after receiving ATAPI Packet command |
DFLAGS_MSN_SUPPORT | Indicates that the device supports Media Status Notification. |
AddressTranslation
Contains an enumeration value of type ATA_ADDRESS_TRANSLATION that specifies the sort of address translation used during data transfers.
MaxLba
Specifies the maximum user-addressable logical block address (LBA). This member is defined when AddressTranslation is equal to either LbaMode or Lba48BitMode.
Chs
Specifies the drive geometry with the values for the number of cylinders, heads per cylinder, and the sectors per track. This member is defined when AddressTranslation is equal to ChsMode.
Chs.NumCylinders
Chs.NumHeads
Chs.NumSectorsPerTrack
Chs.Reserved
BytesPerLogicalSector
This member specifies the number of bytes per logical sector (LBA) for the given device.
BytesPerPhysicalSector
This member specifies the number of bytes per physical sector (that is, the smallest amount of data that the device can physically write internally) for the given device.
BytesOffsetForSectorAlignment
This member specifies the location of sector 0 within the first physical sector as defined in the ATA specification represented in bytes.
TransferModeSupported
Contains a bitmap that indicates the supported transfer modes.
TransferModeSelected
Indicates the selected transfer modes on the device. The miniport driver must set this member.
Remarks
The port driver passes a IDE_DEVICE_PARAMETERS structure to the miniport driver when it calls IdeHwInitialize.
Requirements
Requirement | Value |
---|---|
Header | irb.h (include Irb.h) |