Share via


IDE_HW_BUILDIO fonction de rappel (irb.h)

La routine du pilote miniport IdeHwBuildIo est appelée une seule fois pour chaque demande d’E/S entrante.

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

IDE_HW_BUILDIO IdeHwBuildio;

BOOLEAN IdeHwBuildio(
  [in] PVOID ChannelExtension,
  [in] PIDE_REQUEST_BLOCK Irb
)
{...}

Paramètres

[in] ChannelExtension

Pointeur vers l’extension de canal du pilote miniport.

[in] Irb

Pointeur vers une structure de type IDE_REQUEST_BLOCK qui définit le bloc de demande d’entrée/sortie (IRB) de l’ide (Integrated Device Electronics) à traiter.

Valeur retournée

IdeHwBuildIo retourne TRUE pour accuser réception de la structure IDE_REQUEST_BLOCK . Le pilote de port ignore la valeur de retour FALSE.

Remarques

Les pilotes Miniport fournissent une routine AtaHwBuildlo qui effectue un traitement d’E/S non synchronisé avec les interruptions activées. Une fois qu’IdeHwBuildIo a terminé tous les traitements non synchronisés d’une requête, il retourne au pilote de port, et le pilote de port transmet la demande à la routine IdeHwStartIo du pilote miniport, qui effectue les tâches qui nécessitent une synchronisation.

Le pilote miniport doit observer certaines restrictions pendant qu’il exécute la routine IdeHwBuildIo . Le pilote miniport appelle IdeHwBuildIo sans avoir à contenir de verrous. En particulier, le pilote miniport ne doit pas toucher aux données partagées dans son extension de canal, ni appeler les routines exportées par le pilote de port ATA.

Si le pilote miniport doit terminer une requête pendant qu’il exécute la routine IdeHwBuildIo, il doit affecter la valeur de status d’achèvement appropriée au membre IrbStatus de la structure IDE_REQUEST_BLOCK pointée par le paramètre Irb. Le pilote miniport ne doit pas définir IrbStatus sur une valeur de IRB_STATUS_PENDING.

Le pilote miniport peut utiliser la routine IdeHwBuildIo pour indiquer au pilote de port comment une IRB doit être gérée. Par exemple, le pilote miniport peut demander au pilote de port de mapper la mémoire tampon sur DataBuffer en définissant le membre IrbFlags de l’IRB sur la valeur appropriée. Le pilote miniport ne doit pas demander que la mémoire tampon associée à une requête soit mappée, sauf s’il s’agit d’un type de transfert de données.

La routine IdeHwBuildIo ressemble à la routine HwStorBuildIo de Storport dans la fonctionnalité. Pour plus d’informations sur la routine HwStorBuildIo , consultez Routine HwStorBuildIo non synchronisée.

IdeHwBuildIo est une routine facultative.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête irb.h (include Irb.h)

Voir aussi

IDE_REQUEST_BLOCK

IdeHwStartIo