Partager via


Routines de prise en charge des pilotes de port ATA

Cette page catégorise les routines de prise en charge fournies par le pilote de port ATA fourni par le système.

Pour obtenir la liste des routines de miniport des pilotes ATA, consultez Pilotes ATA Miniport.

Routine d’initialisation

Le pilote de port ATA fournit la routine d’initialisation suivante.

Routine Description
AtaPortInitializeEx Initialise les pilotes de port et de miniport.

Routines pour l’accès à l’espace de configuration PCI

Le pilote de port ATA fournit les routines suivantes pour vous aider à lire et à modifier le contenu de l’espace de configuration PCI de l’appareil.

Routine Description
AtaPortGetBusData Récupère des données à partir de l’emplacement spécifié dans l’espace de configuration PCI de l’appareil.
AtaPortSetBusData stocke les données dans l’espace de configuration PCI de l’appareil indiqué au décalage spécifié.

Routines pour le traitement des demandes d’E/S

Le pilote de port ATA fournit les routines de prise en charge des demandes d’E/S suivantes.

Routine Description
AtaPortGetScatterGatherList Récupère la liste de points/regroupements associée à cette demande.
AtaPortGetPhysicalAddress Convertit la plage d’adresses virtuelle en plage d’adresses physique.
AtaPortGetDeviceBase Retourne une adresse de base logique mappée utilisée pour communiquer avec un adaptateur de bus hôte (HBA).
AtaPortGetUncachedExtension Alloue une mémoire tampon commune non mise en cache partagée par le processeur et l’appareil.
AtaPortBuildRequestSenseIrb Génère et retourne une IRB pour le code d’opération SCSIOP_REQUEST_SENSE.
AtaPortReleaseRequestSenseIrb Libère l’IRB du sens de requête alloué à l’aide d’AtaPortBuildRequestSenseIrb.
AtaPortCompleteAllActiveRequests Termine tous les IRB actifs pour l’appareil indiqué.
AtaPortCompleteRequest Termine la CISR indiquée.

Routines de rappel

Le pilote miniport utilise plusieurs routines pour demander un rappel au pilote de port.

Routine Description
AtaPortRequestWorkerRoutine Demande une routine de travail.
AtaPortRequestSynchronizedRoutine Demande la synchronisation avec la routine de service d’interruption (ISR).
AtaPortControllerSyncRoutine Fournit un accès synchronisé aux structures de données partagées sur tous les canaux d’un contrôleur.
AtaPortRequestTimer Demande un rappel du minuteur.

Routines qui signalent une modification de configuration

Les routines suivantes permettent au pilote miniport d’informer le pilote de port ATA des modifications apportées à la configuration des périphériques attachés au canal.

Routine Description
AtaPortBusChangeDetected Avertit le pilote de port des modifications apportées à la configuration de l’appareil sur le canal indiqué.
AtaPortRequestPowerStateChange Demande une transition d’état d’alimentation pour l’appareil indiqué.

Routines pour contrôler les files d’attente de demandes

Le pilote de port gère une file d’attente de requêtes par numéro d’unité logique (LUN) et une file d’attente de requêtes pour chaque canal. Le pilote miniport peut utiliser les routines suivantes pour suspendre et reprendre les différentes files d’attente de requêtes.

Routine Description
AtaPortDeviceBusy Informe le pilote de port que l’appareil indiqué est occupé.
AtaPortDeviceReady Informe le pilote de port que l’appareil indiqué est prêt à accepter de nouvelles demandes.

Routines de l’utilitaire

Les routines suivantes sont des fonctions générales de prise en charge des utilitaires pour les pilotes miniports.

Routine Description
AtaPortCopyMemory Copie les données d’un emplacement vers un autre.
**Routine AtaPortMoveMemory Copie les données d’un emplacement vers un autre.
AtaPortConvertUlongToPhysicalAddress Convertit une adresse ULONG donnée en valeur de type IDE_PHYSICAL_ADDRESS.
AtaPortConvertPhysicalAddressToUlong Tronque une adresse de type IDE_PHYSICAL_ADDRESS à un ULONG.
AtaPortStallExecution Se bloque dans le pilote miniport.
AtaPortInitializeQueueTag Initialise la liste d’étiquettes de file d’attente pour l’appareil spécifié.
AtaPortAllocateQueueTag Retourne une balise de file d’attente pour l’appareil spécifié.
AtaPortReleaseQueueTag Libère la balise de file d’attente spécifiée.

Routines de débogage et de rapport d’erreurs

La routine suivante peut être utilisée pour le débogage et le rapport d’erreurs.

Routine Description
AtaPortDebugPrint Transmet une chaîne de message au débogueur de noyau pour que le débogueur soit imprimé.

Routines pour le port d’appareil et l’accès au registre

Le pilote de port ATA fournit les routines de prise en charge des ports et des inscriptions suivantes.

Routine Description
AtaPortReadPortBufferUchar Transfère un nombre donné de valeurs d’octet non signées de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadPortBufferUlong Transfère un nombre donné de valeurs ULONG de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadPortBufferUshort Transfère un nombre donné de valeurs USHORT de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadPortUchar Lit une valeur d’octet non signée à partir de l’adaptateur HBA.
AtaPortReadPortUlong Lit une valeur ULONG à partir de l’adaptateur HBA.
AtaPortReadPortUshort Lit une valeur USHORT à partir du HBA.
AtaPortReadRegisterBufferUchar Transfère un nombre spécifié d’octets non signés de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadRegisterBufferUlong Transfère un nombre spécifié d’ULONG de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadRegisterBufferUshort Transfère un nombre spécifié d’USHORT de l’adaptateur HBA vers une mémoire tampon.
AtaPortReadRegisterUchar Lit une valeur d’octet non signée à partir de l’adaptateur HBA.
AtaPortReadRegisterUlong Lit une valeur ULONG à partir de l’adaptateur HBA.
AtaPortReadRegisterUshort Lit une valeur USHORT à partir du HBA.
AtaPortWritePortBufferUchar Écrit une valeur dans une adresse de registre spécifiée.
AtaPortWritePortBufferUlong Écrit une valeur dans une adresse de registre spécifiée.
AtaPortWritePortBufferUshort Écrit une valeur dans une adresse de registre spécifiée.
AtaPortWritePortUchar Transfère une valeur d’octet non signée à l’adaptateur HBA.
AtaPortWritePortUlong Transfère une valeur ULONG à l’adaptateur HBA.
AtaPortWritePortUshort Transfère une valeur USHORT à l’adaptateur HBA.
AtaPortWriteRegisterBufferUchar Transfère le nombre spécifié d’octets non signés d’une mémoire tampon vers l’adaptateur HBA.
AtaPortWriteRegisterBufferUlong Transfère le nombre spécifié de valeurs ULONG d’une mémoire tampon vers l’adaptateur HBA.
AtaPortWriteRegisterBufferUshort Transfère le nombre spécifié de valeurs USHORT d’une mémoire tampon vers l’adaptateur HBA.
AtaPortWriteRegisterUchar Transfère un octet non signé à l’adresse HBA.
AtaPortWriteRegisterUlong Transfère une valeur ULONG à l’adresse HBA.
AtaPortWriteRegisterUshort Transfère une valeur USHORT à l’adresse HBA.

Routines pour l’accès au Registre

Un pilote miniport qui implémente l’interface de canal peut appeler les routines suivantes pour accéder au Registre Windows. Les pilotes miniport qui implémentent uniquement les routines d’interface de contrôleur ne peuvent pas accéder à ces routines.

Routine Description
AtaPortRegistryAllocateBuffer Alloue une mémoire tampon pour les opérations de Registre.
AtaPortRegistryFreeBuffer Libère la mémoire tampon du Registre qui a été allouée à l’aide d’AtaPortRegistryAllocateBuffer.
AtaPortRegistryControllerKeyRead Lit les données associées au nom de valeur indiqué sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN, où N est le numéro du contrôleur.
AtaPortRegistryContrlollerKeyWrite Écrit les données dans le nom de valeur indiqué sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN, où N est le numéro du contrôleur.
AtaPortRegistryControllerKeyWriteDeferred Écrit les données de manière asynchrone dans le nom de la valeur indiquée sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN, où N est le numéro du contrôleur.
AtaPortRegistryChannelSubKeyRead Lit les données associées au nom de valeur indiqué sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, où N est le numéro du contrôleur et M le numéro du canal.
AtaPortRegistryChannelSubKeyWrite Écrit les données dans le nom de valeur indiqué sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, où N est le numéro du contrôleur et M le numéro du canal.
AtaPortRegistryChannelSubKeyWriteDeferred Écrit les données de façon asynchrone dans le nom de valeur indiqué sous la clé de Registre HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, où N est le numéro du contrôleur et M le numéro du canal.