Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour les opérations de transfert de données, les pilotes de classe de stockage ont besoin d’informations de configuration sur chaque HBA conduisant un bus auquel leurs appareils sont attachés. Pour obtenir ces informations, un pilote de classe appelle une routine GetDescriptor interne ou implémente les mêmes fonctionnalités dans sa routine StartDevice . (Pour plus d’informations sur StartDevice, consultez Gestion du démarrage PnP dans un pilote de classe de stockage.)
Une routine GetDescriptor génère et configure des demandes de propriété de requête (IRP_MJ_DEVICE_CONTROL avec IOCTL_STORAGE_QUERY_PROPERTY) pour que le pilote de port récupère les descripteurs d’appareil et d’adaptateur que le pilote de classe stocke dans son extension d’appareil. Le pilote de classe peut également définir des indicateurs déterminés par l’auteur du pilote dans l’extension de périphérique en fonction des données de descripteur obtenues.
Le pilote de classe inspecte les données STORAGE_DEVICE_DESCRIPTOR retournées pour déterminer les fonctionnalités du périphérique (données d’interrogation SCSI ou équivalent non SCSI), telles que le type de périphérique SCSI, si le support du périphérique (le cas échéant) est amovible (Amovible), si le périphérique prend en charge plusieurs commandes en attente (Mise en file d'attente des commandes) et différentes chaînes d’identification. Le pilote de classe inspecte les données de STORAGE_ADAPTER_DESCRIPTOR retournées pour déterminer les fonctionnalités de l’adaptateur, notamment :
Nombre maximal d’octets qu’un HBA particulier peut transférer dans une seule opération (MaximumTransferLength).
Si l’adaptateur HBA peut transférer des données mises en mémoire tampon sauvegardées par des pages physiques non contiguës (en d’autres termes, s’il prend en charge le scatter/gather), combien de pages physiques non contiguës par tampon il peut gérer, par opération de transfert (MaximumPhysicalPages).
Les exigences d'alignement du HBA pour les transferts permettent au pilote de classe de définir correctement le champ AlignmentRequirement dans ses objets de périphérique (AlignmentMask).
Les applications qui envoient des requêtes IOCTL_SCSI_PASS_THROUGH peuvent également utiliser ce champ.
Pour plus d’informations sur la configuration d’AlignmentRequirement dans les objets d’appareil, consultez Initialisation d’un objet d’appareil.
Indique si l’adaptateur HBA prend en charge la mise en file d’attente interne avec étiquette SCSI et/ou par unité logique (CommandQueueing).
Indique si l’adaptateur HBA prend en charge les transferts synchrones (AcceleratedTransfer).
Indique si l’adaptateur HBA met en cache les données en interne (CachesData).
Le pilote de classe doit stocker ces informations dans l'extension de périphérique du FDO afin que ses routines de répartition puissent s'assurer que toutes les demandes envoyées au pilote de port de stockage sont conformes à la taille, au nombre de ruptures physiques et aux exigences d'alignement de l'HBA sous-jacent. Pour plus d’informations sur les routines de dispatch des pilotes de classe, consultez Routines de dispatch du pilote de classe de stockage. Pour plus d’informations sur la configuration des extensions de périphériques, consultez la page Configuration de l’extension de périphérique d’un pilote de classe de stockage.