Partager via


structure HW_INITIALIZATION_DATA (srb.h)

Chaque routine de miniporteur SCSI DriverEntry doit s’initialiser avec des zéros, puis renseigner les informations de HW_INITIALIZATION_DATA (SCSI) pertinentes pour le pilote de port spécifique au système d’exploitation.

Remarque Le pilote de port SCSI et les modèles de pilotes miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser le du pilote Storport et modèles de pilotes Storport miniport.
 

Syntaxe

typedef struct _HW_INITIALIZATION_DATA {
  ULONG               HwInitializationDataSize;
  INTERFACE_TYPE      AdapterInterfaceType;
  PHW_INITIALIZE      HwInitialize;
  PHW_STARTIO         HwStartIo;
  PHW_INTERRUPT       HwInterrupt;
  PHW_FIND_ADAPTER    HwFindAdapter;
  PHW_RESET_BUS       HwResetBus;
  PHW_DMA_STARTED     HwDmaStarted;
  PHW_ADAPTER_STATE   HwAdapterState;
  ULONG               DeviceExtensionSize;
  ULONG               SpecificLuExtensionSize;
  ULONG               SrbExtensionSize;
  ULONG               NumberOfAccessRanges;
  PVOID               Reserved;
  BOOLEAN             MapBuffers;
  BOOLEAN             NeedPhysicalAddresses;
  BOOLEAN             TaggedQueuing;
  BOOLEAN             AutoRequestSense;
  BOOLEAN             MultipleRequestPerLu;
  BOOLEAN             ReceiveEvent;
  USHORT              VendorIdLength;
  PVOID               VendorId;
  union {
    USHORT ReservedUshort;
    USHORT PortVersionFlags;
  };
  USHORT              DeviceIdLength;
  PVOID               DeviceId;
  PHW_ADAPTER_CONTROL HwAdapterControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

Membres

HwInitializationDataSize

Spécifie la taille de cette structure en octets, comme retourné par taille de(). En effet, ce membre indique la version de cette structure utilisée par le pilote miniport. La routine de pilote miniport doit définir la valeur de ce membre pour le pilote de port.

AdapterInterfaceType

Spécifie le type de bus d’E/S auquel l’adaptateur HBA est connecté, qui peut être l’un des éléments suivants : interne , Isa, Eisa, MicroChannel, TurboChannelou PCIBus. Toutefois, d’autres types d’autobus seront pris en charge à l’avenir. La limite supérieure sur les types de bus pris en charge est toujours MaximumInterfaceType.

Si cette valeur est définie sur PCIBus, le pilote miniport doit fournir des valeurs pour les vendorIdLength, VendorId, DeviceIdLengthet DeviceId membres, décrits ultérieurement.

HwInitialize

Pointeur vers la routine HwScsiInitialize du pilote miniport, qui est un point d’entrée requis pour tous les pilotes miniports. Le prototype de cette routine est PHW_INITIALIZE.

HwStartIo

Pointeur vers la routine HwScsiStartIo du pilote miniport, qui est un point d’entrée requis pour tous les pilotes miniports. Le prototype de cette routine est PHW_STARTIO.

HwInterrupt

Pointeur vers la routine du pilote miniport HwScsiInterrupt, qui est un point d’entrée requis pour tout pilote miniport d’un HBA qui génère des interruptions. Définissez cette valeur sur NULL si le pilote miniport n’a pas besoin d’ISR. Le prototype de cette routine est PHW_INTERRUPT.

HwFindAdapter

Pointeur vers la routine du pilote miniport HwScsiFindAdapter, qui est un point d’entrée requis pour tous les pilotes miniports. Le prototype de cette routine est PHW_FIND_ADAPTER.

HwResetBus

Pointeur vers la routine HwScsiResetBus du pilote miniport, qui est un point d’entrée requis pour tous les pilotes miniports. Le prototype de cette routine est PHW_RESET_BUS.

HwDmaStarted

Pointeur vers la routine du pilote miniport HwScsiDmaStarted si son HBA utilise la DMA système, autrement dit, un contrôleur DMA système. Définissez cette valeur sur NULL si l’adaptateur HBA est un maître de bus ou utilise l’authentification personnelle. Le prototype de cette routine est PHW_DMA_STARTED.

HwAdapterState

Pointeur vers la routine HwScsiAdapterState du pilote miniport, qui est un point d’entrée requis pour les pilotes miniports des HBA avec DES BIOS liés à un pilote de port x86-platform-only dépendant du système d’exploitation qui doit basculer entre les modes de processeurs protégés et réels x86. Si le pilote miniport n’a pas besoin de routine HwScsiAdapterState, définissez ce membre sur NULL. Un pilote miniport pour un HBA doté d’un BIOS doit avoir une routine HwScsiAdapterState afin d’être compatible avec le pilote de port x86 uniquement et portable dans un environnement de système d’exploitation x86 uniquement. Le prototype de cette routine est PHW_ADAPTER_STATE.

DeviceExtensionSize

Spécifie la taille en octets requise par le pilote miniport pour son extension de périphérique par HBA. Un pilote miniport utilise son extension de périphérique comme stockage pour les informations HBA déterminées par le pilote. Le pilote de port spécifique au système d’exploitation initialise chaque extension de périphérique qu’il alloue avec zéros et transmet un pointeur à l’extension de périphérique spécifique à HBA dans chaque appel à un pilote miniport, sauf à sa routine DriverEntry. La taille donnée n’inclut aucun stockage par unité logique demandé par pilote miniport, décrit ensuite.

SpecificLuExtensionSize

Spécifie la taille en octets requise par le pilote miniport pour son stockage par unité logique, le cas échéant. Un pilote miniport peut utiliser ses extensions LU comme stockage pour les informations d’unité logique déterminée par le pilote sur les périphériques SCSI sur le bus. Le pilote de port spécifique au système d’exploitation initialise chaque extension lu qu’il alloue avec zéros. Laissez ce membre défini sur zéro si le pilote miniport ne conserve pas les informations par lu pour lesquelles il nécessite un stockage. Cette valeur est basée sur l’hypothèse que l’adaptateur HBA peut recevoir des adresses 32 bits, quelle que soit la prise en charge du contrôleur. Si un espace supplémentaire est nécessaire dans les extensions LUN ou SRB pour gérer les adresses 64 bits, les ajustements appropriés doivent être apportés à cette valeur avant de l’utiliser avec des routines telles que ScsiPortGetUncachedExtension.

SrbExtensionSize

Spécifie la taille en octets requise par le pilote miniport pour son stockage par requête, le cas échéant. Un pilote miniport peut utiliser des extensions SRB comme stockage pour les informations spécifiques au pilote, telles que les données nécessaires pour traiter une requête particulière. Le pilote de port spécifique au système d’exploitation n’initialise pas les extensions SRB, mais définit un pointeur vers ce stockage dans chaque SRB qu’il envoie au pilote miniport. Une extension SRB est accessible en toute sécurité par le matériel HBA. Laissez ce membre défini sur zéro si le pilote miniport ne conserve pas les informations par SRB pour lesquelles il nécessite un stockage. Cette valeur est basée sur l’hypothèse que l’adaptateur HBA peut recevoir des adresses 32 bits, quelle que soit la prise en charge du contrôleur. Si un espace supplémentaire est nécessaire dans les extensions LUN ou SRB pour gérer les adresses 64 bits, les ajustements appropriés doivent être apportés à cette valeur avant de l’utiliser avec des routines telles que ScsiPortGetUncachedExtension.

NumberOfAccessRanges

Spécifie le nombre de plages d’accès que l’adaptateur utilise. Il s’agit d’une plage d’adresses mémoire ou d’adresses de port d’E/S. Un HBA classique utilise deux plages, une pour ses ports d’E/S et une autre pour sa plage de mémoire d’appareil.

Reserved

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniport.

MapBuffers

Indique, quand TRUE, que toutes les adresses de mémoire tampon de données doivent être mappées aux adresses virtuelles pour l’accès par le pilote miniport. Lorsque faux, les adresses de mémoire tampon de données n’ont pas besoin d’être mappées aux adresses virtuelles.

NeedPhysicalAddresses

Indique, quand TRUE, que le pilote miniport doit traduire son appareil, n’importe quelle unité logique et toutes les adresses d’extension par SRB, ainsi que les adresses de mémoire tampon SRB, en adresses physiques, comme requis par l’adaptateur HBA. Lorsque FAUX, aucune de ces adresses ne doit être traduite en adresses physiques.

TaggedQueuing

Indique, quand TRUE, ce pilote miniport peut prendre en charge la mise en file d’attente étiquetée SCSI. Lorsque faux, le pilote miniport ne peut pas prendre en charge la mise en file d’attente avec étiquette SCSI.

AutoRequestSense

Indique, lorsque TRUE, que l’adaptateur HBA peut effectuer une opération de sens des requêtes sans nécessiter de demande explicite. Lorsque FAUX, l’adaptateur HBA nécessite une requête explicite avant de pouvoir effectuer une opération de sens de la requête. Seuls les pilotes miniports qui pilotent des HBA avec microprogramme intégré pour effectuer des opérations de sens des requêtes doivent définir ce membre sur TRUE.

MultipleRequestPerLu

Indique, quand VRAI, que le pilote miniport peut mettre en file d’attente plusieurs requêtes par unité logique, en particulier dans l’adaptateur HBA. Lorsque FAUX, le pilote miniport ne peut pas mettre en file d’attente plusieurs requêtes par unité logique. Notez qu’un HBA doit prendre en charge le sens de la demande automatique pour son pilote miniport afin d’activer cette fonctionnalité. Si un pilote miniport définit ce membre sur TRUE, il doit utiliser chaque membre QueueTag membre pour les demandes de ce type, mais le SRB_FLAGS_QUEUE_ACTION_ENABLE n’est pas défini dans le SrbFlags membre de la structure SCSI_REQUEST_BLOCK.

ReceiveEvent

Indique, quand TRUE, que le pilote miniport pilote un HBA capable de prendre en charge le SRB d’événement de réception pour les événements asynchrones SCSI. Quand FALSE, l’adaptateur HBA ne peut pas prendre en charge le SRB d’événement de réception pour les événements asynchrones SCSI.

VendorIdLength

Spécifie la taille en octets de la chaîne VendorId, décrite ci-dessous.

VendorId

Pointeur vers une chaîne d’octet ASCII identifiant le fabricant de l’adaptateur HBA. Ce membre n’est pas pertinent pour les pilotes Plug-and-Play.

Si l'AdapterInterfaceType donné est PCIBus, l’ID du fournisseur est une valeur USHORT allouée par le PCI SIG, qui doit être convertie en chaîne d’octets par le pilote miniport. Par exemple, si la valeur d’ID du fournisseur PCI affectée est 1001, le pilote miniport fourni VendorId chaîne serait ('1', '0', '0', '1').

ReservedUshort

Réservé à l’utilisation du système et n’est pas disponible pour une utilisation par les pilotes miniport.

PortVersionFlags

DeviceIdLength

Spécifie la taille en octets de la chaîne DeviceId, décrite ci-dessous.

DeviceId

Pointeur vers une chaîne d’octet ASCII identifiant le ou les modèles HBA pris en charge par le pilote miniport. Ce membre n’est pas pertinent pour les pilotes Plug-and-Play.

Si l'AdapterInterfaceType donné est PCIBus, un ID d’appareil est une valeur USHORT attribuée par le fabricant de l’adaptateur HBA. Le pilote miniport doit convertir les valeurs d’ID de périphérique PCI pour les adaptateurs HBA qu’il peut prendre en charge en DeviceId chaînes d’octets, comme pour le membre VendorId. Par exemple, si un pilote miniport peut prendre en charge les adaptateurs HB avec les ID de périphérique PCI 8040 et 8050, il peut définir DeviceId avec un pointeur vers la chaîne d’octets ('8', '0').

HwAdapterControl

Pointeur vers la routine HwScsiAdapterControl du pilote miniport, qui est un point d’entrée requis pour tous les pilotes miniport PnP. Définissez cette valeur sur NULL si le pilote miniport ne prend pas en charge Plug-and-Play.

Remarques

Chaque pilote miniport doit initialiser la structure HW_INITIALIZATION_DATA avec des zéros avant de définir les valeurs des membres pertinents dans cette structure et appelle ScsiPortInitialize.

Le Dma64BitAddresses membre de HW_INITIALIZATION_DATA a été éliminé dans Windows 2000 (voir la discussion sous PORT_CONFIGURATION_DATA pour plus d’informations).

Les deux HW_INITIALIZATION_DATA et PORT_CONFIGURATION_INFORMATION ont une paire de membres appelés SpecificLuExtensionSize et SrbExtensionSize dont les valeurs sont gérées différemment de Celles antérieures à Windows 2000. Le pilote miniport doit calculer les valeurs initiales de SpecificLuExtensionSize et SrbExtensionSize dans HW_INITIALIZATION_DATA en fonction de l’hypothèse que l’adaptateur HBA est capable de gérer les adresses 32 bits, quelle que soit la prise en charge du contrôleur. (Consultez la discussion sous PORT_CONFIGURATION_DATA pour plus d’informations.)

Exigences

Exigence Valeur
d’en-tête srb.h (include Srb.h, Strmini.h)

Voir aussi

DriverEntry de SCSI Miniport Driver

HwScsiInitialize

SCSI_REQUEST_BLOCK

ScsiPortInitialize