Fonction StorPortGetDeviceBase (storport.h)

La routine StorPortGetDeviceBase mappe une adresse d’E/S à l’espace d’adressage système.

Syntaxe

STORPORT_API PVOID StorPortGetDeviceBase(
  [in] PVOID                 HwDeviceExtension,
  [in] INTERFACE_TYPE        BusType,
  [in] ULONG                 SystemIoBusNumber,
  [in] STOR_PHYSICAL_ADDRESS IoAddress,
  [in] ULONG                 NumberOfBytes,
  [in] BOOLEAN               InIoSpace
);

Paramètres

[in] HwDeviceExtension

Pointeur vers l’extension de périphérique matériel. Il s’agit d’une zone de stockage par HBA que le pilote de port alloue et initialise pour le compte du pilote miniport. Les pilotes miniport stockent généralement des informations spécifiques à L’adaptateur HBA dans cette extension, telles que l’état de l’adaptateur HBA et les plages d’accès mappées pour l’adaptateur HBA. Cette zone est disponible pour le pilote miniport immédiatement après que le pilote miniport a appelé StorPortInitialize. Le pilote de port libère cette mémoire lorsqu’il supprime l’appareil.

[in] BusType

Spécifie le type d’interface du bus d’E/S sur lequel l’adaptateur HBA est connecté. La routine HwStorFindAdapter du pilote miniport obtient la valeur de ce paramètre à partir du membre AdapterInterfaceType du PORT_CONFIGURATION_INFORMATION d’entrée.

[in] SystemIoBusNumber

Spécifie le numéro attribué par le système du bus d’E/S sur lequel l’adaptateur HBA est connecté. La routine HwStorFindAdapter obtient la valeur de ce paramètre à partir du membre SystemIoBusNumber du PORT_CONFIGURATION_INFORMATION d’entrée.

[in] IoAddress

Spécifie l’adresse de base relative du bus d’une plage utilisée par l’adaptateur HBA. La routine HwStorFindAdapter obtient la valeur de ce paramètre à partir de l’un des éléments AccessRanges dans le PORT_CONFIGURATION_INFORMATION si le pilote de port fournit des informations de configuration de plage. Sinon, cette adresse peut être une valeur retournée par StorPortGetBusData ou une valeur par défaut fournie par un pilote miniport. Évitez d’utiliser une adresse de base de zéro, car son status de retour réussi peut entrer en conflit avec l’erreur status (NULL).

[in] NumberOfBytes

Spécifie la taille en octets de la plage que le mappage doit couvrir. La routine HwStorFindAdapter obtient la valeur de ce paramètre à partir du même élément AccessRanges que IoAddress si le pilote de port fournit des informations de configuration de plage. Sinon, cette valeur peut être retournée par StorPortGetBusData ou par une valeur par défaut fournie par un pilote miniport. Dans tous les cas, le pilote ne doit pas accéder au matériel en dehors de la plage mappée retournée.

[in] InIoSpace

TRUE indique que la plage à mapper se trouve dans l’espace d’E/S, et le pilote miniport transmet les adresses mappées de cette plage aux routines de lecture/écriture du port Storport pour communiquer avec l’adaptateur HBA. La routine HwStorFindAdapter obtient la valeur de ce paramètre à partir du même élément AccessRanges que IoAddress. Notez qu’un pilote miniport doit inverser la valeur du membre InMemorySpace dans un élément de type ACCESS_RANGE avant qu’il ne soit passé à StorPortGetDeviceBase en tant qu’argument InIoSpace . FALSE indique que la plage à mapper se trouve dans l’espace mémoire.

Valeur retournée

Adresse de base logique mappée correspondant à l’adresse relative du bus fournie dans le paramètre IoAddress .

Remarques

Chaque pilote miniport doit passer des adresses de plage d’accès logique mappées aux routines de lecture/écriture du port Storport et aux routines de lecture/écriture du registre Storport lors de la communication avec ses adaptateurs HBA.

Cette routine prend uniquement en charge les adresses qui ont été attribuées au pilote par le gestionnaire de Plug-and-Play système (PnP).

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête storport.h (inclure Storport.h)
Bibliothèque Storport.lib

Voir aussi

StorPortFreeDeviceBase