Partager via


IDE_DEVICE_PARAMETERS structure (irb.h)

La structure IDE_DEVICE_PARAMETERS contient des informations de configuration que le pilote de port fournit au pilote miniport pour configurer un appareil.

Note Les modèles de pilote de port ATA et de pilote miniport ATA peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser les modèles de pilote Storport et de pilote miniport Storport .
 

Syntaxe

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;

Membres

Version

Indique la taille de la structure des paramètres de l’appareil . Le pilote miniport doit vérifier que sizeof(IDE_DEVICE_PARAMETERS) est inférieur ou égal au champ Version .

IdeDeviceType

Indique le type de l’appareil. Les types d’appareils autorisés sont DeviceIsAta pour les appareils ATA, DeviceIsAtapi pour les appareils ATAPI et DeviceNotExist si aucun appareil n’a été trouvé à cette adresse. Les autres champs de cette structure ne sont pas valides si IdeDeviceType est défini sur DeviceNotExist.

TargetId

Spécifie l’ID cible de l’appareil.

MaximumLun

Le pilote miniport doit mettre à jour ce champ pour indiquer le nombre d’unités logiques maximal pris en charge par cet appareil. Par défaut, le membre est défini sur 0, ce qui indique l’existence d’un seul numéro d’unité logique.

NumberOfOverlappedRequests

Le pilote miniport doit mettre à jour ce champ pour spécifier le nombre de demandes superposées qu’il peut gérer pour cet appareil. Par défaut, le membre est défini sur 1.

MaxBlockXfer

Spécifie le nombre de secteurs dans un bloc de données à transférer. Cette valeur s’applique aux blocs de données utilisés dans les commandes de transfert de blocs ATA telles que Lecture multiple (0xC4), Écriture multiple (0xC5). Pour plus d’informations sur les commandes ReadMultiple et WriteMultiple, consultez la spécification ATA.

DeviceCharacteristics

Spécifie les caractéristiques de l’appareil. Le tableau ci-dessous répertorie les caractéristiques qui peuvent être définies dans ce membre. L’octet élevé de ce membre est opaque et ne doit pas être modifié par le miniport ATA.

Caractéristique de l’appareil Description
DFLAGS_REMOVABLE_MEDIA Indique que le lecteur a un média amovible
DFLAGS_ REMOVABLE_DEVICE Indique que l’appareil peut être débranché en toute sécurité
DFLAGS_FUA_SUPPORT Indique que l’appareil prend en charge FUA (Force Unit Access)
DFLAGS_INT_DRQ Indique que l’appareil interrompt en tant que DRQ est défini après avoir reçu la commande ATAPI Packet
DFLAGS_MSN_SUPPORT Indique que l’appareil prend en charge la notification d’état du média.

AddressTranslation

Contient une valeur d’énumération de type ATA_ADDRESS_TRANSLATION qui spécifie le type de traduction d’adresses utilisé lors des transferts de données.

MaxLba

Spécifie l’adresse de bloc logique (LBA) maximale adressable par l’utilisateur. Ce membre est défini lorsque AddressTranslation est égal à LbaMode ou Lba48BitMode.

Chs

Spécifie la géométrie du lecteur avec les valeurs du nombre de cylindres, des têtes par cylindre et des secteurs par piste. Ce membre est défini lorsque AddressTranslation est égal à ChsMode.

Chs.NumCylinders

Chs.NumHeads

Chs.NumSectorsPerTrack

Chs.Reserved

BytesPerLogicalSector

Ce membre spécifie le nombre d’octets par secteur logique (LBA) pour l’appareil donné.

BytesPerPhysicalSector

Ce membre spécifie le nombre d’octets par secteur physique (autrement dit, la plus petite quantité de données que l’appareil peut écrire physiquement en interne) pour l’appareil donné.

BytesOffsetForSectorAlignment

Ce membre spécifie l’emplacement du secteur 0 dans le premier secteur physique tel que défini dans la spécification ATA représentée en octets.

TransferModeSupported

Contient une bitmap qui indique les modes de transfert pris en charge.

TransferModeSelected

Indique les modes de transfert sélectionnés sur l’appareil. Le pilote miniport doit définir ce membre.

Remarques

Le pilote de port transmet une structure IDE_DEVICE_PARAMETERS au pilote miniport lorsqu’il appelle IdeHwInitialize.

Configuration requise

Condition requise Valeur
En-tête irb.h (include Irb.h)

Voir aussi

ATA_ADDRESS_TRANSLATION

IDE_DEVICE_TYPE

IdeHwInitialize