structure PORT_CONFIGURATION_INFORMATION (srb.h)
PORT_CONFIGURATION_INFORMATION (SCSI) contient des informations de configuration pour un adaptateur HBA. Le pilote de port spécifique au système d’exploitation alloue et initialise cette structure, fournit autant d’informations de configuration spécifiques au HBA que possible et transmet la structure à la routine HwScsiFindAdapter du pilote miniport. Le pilote de port obtient certaines des informations relatives à cette structure à partir de la structure HW_INITIALIZATION_DATA du pilote miniport. La routine HwScsiFindAdapter du pilote miniport est chargée de déterminer si le pilote miniport peut prendre en charge l’adaptateur HBA et, le cas échéant, de renseigner les informations restantes pertinentes dans la structure PORT_CONFIGURATION_INFORMATION.
Notes
Les modèles de pilote de port SCSI et de pilote miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Utilisez plutôt les modèles de pilote Storport et de pilote Storport miniport .
Syntaxe
typedef struct _PORT_CONFIGURATION_INFORMATION {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
ULONG DmaChannel;
ULONG DmaPort;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
ACCESS_RANGE( ) *AccessRanges[];
PVOID Reserved;
UCHAR NumberOfBuses;
UCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
BOOLEAN MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
UCHAR ReservedUchars[2];
ULONG SlotNumber;
ULONG BusInterruptLevel2;
ULONG BusInterruptVector2;
KINTERRUPT_MODE InterruptMode2;
ULONG DmaChannel2;
ULONG DmaPort2;
DMA_WIDTH DmaWidth2;
DMA_SPEED DmaSpeed2;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
UCHAR Dma64BitAddresses;
BOOLEAN ResetTargetSupported;
UCHAR MaximumNumberOfLogicalUnits;
BOOLEAN WmiDataProvider;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
Membres
Length
Spécifie la taille de cette structure en octets. En effet, ce membre, qui est toujours initialisé par le pilote de port spécifique au système d’exploitation, indique la version de cette structure utilisée par le pilote de port.
SystemIoBusNumber
Spécifie le numéro attribué par le système du bus d’E/S auquel l’adaptateur HBA est connecté. Le pilote de port spécifique au système d’exploitation initialise toujours ce membre. Sa valeur est affectée par le système, car la plateforme peut avoir plusieurs bus d’E/S du type AdapterInterfaceType donné.
AdapterInterfaceType
Identifie l’interface de bus d’E/S. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur spécifiée par le pilote miniport dans la structure HW_INITIALIZATION_DATA (SCSI).
BusInterruptLevel
Spécifie le niveau de demande d’interruption relative du bus. Le pilote de port spécifique au système d’exploitation ne fait aucune hypothèse concernant l’utilisation des interruptions de l’adaptateur HBA, de sorte que la valeur par défaut est zéro. En fonction de l’adaptateurInterfaceType et de l’adaptateur HBA donnés, la valeur définie pour ce membre peut correspondre à l’IRQL pour le bus, comme pour les bus de type Isa et MicroChannel . Les pilotes de HBA Eisa doivent définir cette valeur sur l’IRQL relatif au bus pour l’adaptateur HBA si l’adaptateur est configuré pour les interruptions sensibles au niveau.
BusInterruptVector
Spécifie le vecteur relatif du bus retourné par l’adaptateur HBA. Le pilote de port spécifique au système d’exploitation ne fait aucune hypothèse concernant l’utilisation des interruptions de l’adaptateur HBA, de sorte que la valeur par défaut est zéro. Ce membre n’est pas pertinent pour les pilotes qui configurent le membre BusInterruptLevel pour leurs adaptateurs HBA. Il est pertinent pour les HBA sur les types de bus d’E/S qui utilisent des vecteurs d’interruption, tels que PCIBus.
InterruptMode
Spécifie si l’adaptateur HBA utilise des interruptions LevelSensitive ou Latched (parfois appelées « déclenchées par le bord »). Le pilote de port spécifique au système d’exploitation initialise ce membre à une valeur appropriée pour le bus et le périphérique, par exemple, LevelSensitive pour PCIBus. Les pilotes de HBA Eisa doivent réinitialiser cette valeur si l’adaptateur est configuré pour les interruptions sensibles au niveau, tout comme les pilotes de HBA sur les bus d’E/S qui utilisent des interruptions sensibles au niveau, telles que les bus de type MicroChannel .
MaximumTransferLength
Spécifie le nombre maximal d’octets que l’adaptateur HBA peut transférer dans une seule opération de transfert. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE, ce qui indique une taille de transfert maximale illimitée. Si son adaptateur HBA a une prise en charge de transfert plus limitée, un pilote miniport doit réinitialiser ce membre en fonction de la capacité de transfert de l’adaptateur HBA. Si la routine HwScsiInterrupt d’un pilote miniport ne peut pas désactiver les interruptions sur l’adaptateur HBA, ce membre peut être ajusté pendant le développement du pilote pour s’assurer que le temps passé dans l’ISR de ce pilote miniport n’entraîne pas le « saut » de la souris ou le débit série/parallèle à tomber à un niveau visible par l’utilisateur.
NumberOfPhysicalBreaks
Spécifie le nombre maximal d’interruptions entre les plages d’adresses qu’une mémoire tampon de données peut avoir si l’adaptateur HBA prend en charge la diffusion/la collecte. En d’autres termes, le nombre de points ou de regroupements est moins un. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE, ce qui indique que l’adaptateur HBA peut prendre en charge un nombre illimité de discothèques physiques. Si le pilote de port définit une valeur pour ce membre, le pilote miniport peut ajuster la valeur inférieure, mais pas supérieure. Si ce membre est SP_UNINITIALIZED_VALUE, le pilote miniport doit réinitialiser ce membre en fonction de la capacité de diffusion/collecte de l’adaptateur HBA, avec zéro représentant aucune prise en charge des points/regroupements.
DmaChannel
Spécifie le canal DMA utilisé par un HBA subordonné. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE. Si l’adaptateur HBA utilise un contrôleur DMA système et que la valeur AdapterInterfaceType donnée est n’importe quelle valeur à l’exception de MicroChannel, le pilote miniport doit réinitialiser ce membre.
DmaPort
Spécifie le port DMA utilisé par un adaptateur HBA subordonné. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE. Si l’adaptateur HBA utilise un contrôleur DMA système et que l’adaptateurInterfaceType donné est MicroChannel, le pilote miniport doit définir ce membre.
DmaWidth
Spécifie la largeur des transferts DMA si l’adaptateur HBA utilise DMA. Par défaut, la valeur de ce membre est zéro. Si son adaptateur HBA effectue DMA, le pilote miniport doit réinitialiser ce membre à l’un des éléments suivants : Width8Bits, Width16Bits ou Width32Bits.
DmaSpeed
Spécifie la vitesse de transfert de données DMA pour les HBA Eisa . Par défaut, la valeur de ce membre spécifie le délai de compatibilité. Les valeurs acceptables pour ce membre sont les suivantes : Compatible, TypeA, TypeB ou TypeC.
AlignmentMask
Contient un masque indiquant les restrictions d’alignement pour les mémoires tampons requises par l’adaptateur HBA pour les opérations de transfert. Les valeurs de masque valides sont également limitées par les caractéristiques des gestionnaires de mémoire sur différentes versions de Windows. Les valeurs de masque autorisées sous Windows 95 ou Windows 98 sont 0 (octets alignés), 1 (mot aligné) ou 3 (DWORD aligné). Sous Windows NT et Windows 2000, les valeurs de masque valides sont 0 (octet aligné), 1 (mot aligné), 3 (DWORD aligné) et 7 (double DWORD aligné). Le pilote miniport doit définir ce masque si l’adaptateur HBA prend en charge la diffusion/la collecte.
NumberOfAccessRanges
Spécifie le nombre d’éléments AccessRanges dans le tableau, décrit ensuite. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA lorsque le pilote miniport appelé ScsiPortInitialize.
AccessRanges
Reserved
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
NumberOfBuses
Spécifie le nombre de bus SCSI contrôlés par l’adaptateur HBA. Par défaut, la valeur de ce membre est zéro.
InitiatorBusId[8]
Indique l’ID du bus de l’initiateur. Si l’entrée InitiatorBusId[0] a la valeur zéro, le pilote miniport peut affecter une valeur par défaut si son adaptateur HBA ne nécessite pas l’utilisation de valeurs particulières déterminées par l’interrogation de l’adaptateur HBA. Sinon, le pilote miniport doit utiliser toute valeur différente de zéro attribuée par le pilote de port si possible. Chaque pilote miniport doit mettre à jour les spécifications InitiatorBusId pour qu’elles correspondent à ce que son adaptateur HBA utilise, en interrogeant l’adaptateur HBA pour déterminer la ou les valeurs appropriées.
Un pilote miniport doit définir une entrée pour chaque bus SCSI pris en charge par l’adaptateur HBA, comme indiqué par la valeur NumberOfBuses.
ScatterGather
Indique quand TRUE que l’adaptateur HBA prend en charge les points/regroupements. Lorsque la valeur EST FALSE , l’adaptateur HBA ne prend pas en charge la diffusion/la collecte. Par défaut, la valeur de ce membre est FALSE.
Master
Indique quand TRUE que l’adaptateur HBA est un master de bus. Lorsque la valeur est FALSE, l’adaptateur HBA n’est pas un master de bus. Par défaut, la valeur de ce membre est FALSE.
CachesData
Indique quand TRUE que l’adaptateur HBA met en cache les données ou maintient l’état mis en cache sur les périphériques. Lorsque la valeur est FALSE , l’adaptateur HBA ne met pas en cache les données ou ne conserve pas l’état mis en cache sur les périphériques. Par défaut, la valeur de ce membre est FALSE. Si ce paramètre est réinitialisé à TRUE, le pilote de port spécifique au système d’exploitation avertit le pilote miniport lorsque certains événements système se produisent, tels que les vidages du cache du système de fichiers et l’arrêt du système. Par exemple, si un contrôleur sur le bus met en miroir deux disques, le pilote miniport définit normalement ce membre sur TRUE.
AdapterScansDown
Indique quand TRUE que le BIOS du HBA analyse les cibles de bus SCSI de sept à zéro. Lorsque la valeur est FALSE, le BIOS de l’adaptateur HBA recherche des cibles de bus SCSI, en commençant par un ID zéro et en analysant jusqu’à maximumTargetIds (mais sans inclure). Par défaut, la valeur de AdapterScansDown est FALSE.
AtdiskPrimaryClaimed
Indique quand TRUE que la plage d’adresses de disque principale « AT » (compatible WD1003), 0x1F0 à 0x1FF, a été revendiquée dans le Registre par un autre pilote pour son appareil. Le pilote de port spécifique au système d’exploitation initialise toujours ce membre. Si la valeur d’entrée de ce membre est TRUE, un pilote miniport doit supposer qu’un pilote déjà chargé a revendiqué la plage de périphériques. Si la valeur d’entrée est FALSE, un pilote miniport peut revendiquer la plage d’adresses d’un adaptateur HBA qui émule un contrôleur de disque « AT » et réinitialiser ce membre à TRUE, empêchant ainsi l’accès à cette plage par le pilote de disque « AT » ou les pilotes miniports chargés ultérieurement.
AtdiskSecondaryClaimed
Indique quand TRUE que la plage d’adresses de disque AT secondaire, 0x170 à 0x17F a été revendiquée dans le Registre par un autre pilote pour son appareil. Lorsque la valeur EST FALSE , la plage d’adresses de disque AT secondaire n’a pas été revendiquée dans le Registre par un autre pilote. Le pilote de port spécifique au système d’exploitation initialise toujours ce membre. Les pilotes Miniport doivent traiter ce membre comme pour AtdiskPrimaryClaimed.
Dma32BitAddresses
Indique quand TRUE que l’adaptateur HBA a 32 lignes d’adresses et peut accéder à la mémoire avec des adresses physiques supérieures à 0x00FFFFFF. Lorsque la valeur EST FALSE , l’adaptateur HBA a un nombre de lignes d’adresse DMA autres que 32. Par défaut, la valeur de ce membre est FALSE. Si le pilote miniport définit Dma64BitAddresses, ce membre doit avoir la valeur FALSE.
DemandMode
Indique quand TRUE que le contrôleur DMA système doit être programmé pour le mode demande plutôt que pour les opérations à cycle unique. Si l’adaptateur HBA n’est pas un appareil subordonné, ce membre doit avoir la valeur FALSE.
MapBuffers
Indique quand TRUE que les mémoires tampons de données doivent être mappées aux plages d’adresses virtuelles système. Lorsque la valeur EST FALSE , les mémoires tampons de données n’ont pas besoin d’être mappées aux adresses virtuelles système. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle. Si la valeur est FALSE, le pilote miniport ne doit pas accéder directement à Srb.DataBuffer .
NeedPhysicalAddresses
Indique quand TRUE que le pilote miniport doit traduire les adresses virtuelles en adresses physiques, comme requis par l’adaptateur HBA. Lorsque la valeur est FALSE, le pilote miniport n’a pas besoin de traduire les adresses virtuelles en adresses physiques. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle.
TaggedQueuing
Indique quand TRUE que l’adaptateur HBA prend en charge la mise en file d’attente de plusieurs requêtes avec des balises SCSI. Quand la valeur est FALSE, l’adaptateur HBA ne prend pas en charge la file d’attente marquée par SCSI. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle.
AutoRequestSense
Indique quand TRUE que l’adaptateur HBA prend en charge le sens de requête automatique. Lorsque la valeur EST FALSE , l’adaptateur HBA ne prend pas en charge le sens de requête automatique. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle. Ce membre doit avoir la valeur TRUE avant que le pilote d’un bus-master HBA appelle ScsiPortGetUncachedExtension.
MultipleRequestPerLu
Indique quand TRUE que l’adaptateur HBA prend en charge plusieurs requêtes par unité logique. Lorsque la valeur EST FALSE , l’adaptateur HBA ne prend pas en charge plusieurs requêtes par unité logique. Le mécanisme par lequel l’adaptateur met en cache les requêtes est défini par l’adaptateur. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle.
ReceiveEvent
Indique quand TRUE que l’adaptateur HBA prend en charge les opérations d’événement de réception SCSI. Lorsque la valeur EST FALSE , l’adaptateur HBA ne prend pas en charge les opérations d’événement de réception SCSI. Le pilote de port spécifique au système d’exploitation définit toujours ce membre sur la valeur transmise dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize. Un pilote miniport peut réinitialiser cette valeur pour n’importe quel adaptateur HBA particulier qu’il contrôle.
RealModeInitialized
Indique quand TRUE qu’un pilote en mode réel (x86 uniquement) a déjà initialisé l’adaptateur HBA. Lorsque la valeur EST FALSE , l’adaptateur HBA n’a pas été initialisé par un pilote en mode réel. Le pilote de port dépendant du système d’exploitation initialise toujours ce membre. Si cette valeur est true, le pilote miniport ne doit pas initialiser son adaptateur HBA si la séquence d’initialisation du pilote est identique à l’initialisation de l’adaptateur HBA en mode réel ; le fait de ne pas réinitialiser l’adaptateur HBA dans ces circonstances rend le chargement du pilote miniport beaucoup plus rapide. La valeur de ce membre n’est pas pertinente pour tout pilote miniport qui initialise toujours son adaptateur HBA en mode protégé sur des plateformes x86 et pour tous les pilotes de miniport pour lesquels il n’est pas important qu’ils s’exécutent sur une plateforme CISC ou RISC.
BufferAccessScsiPortControlled
Indique quand TRUE que le pilote miniport appelle toujours ScsiPortXxx pour accéder aux mémoires tampons de données et/ou aux informations de détection de requête dans les SSB, ce qui permet au pilote de port spécifique au système d’exploitation d’optimiser le traitement des demandes d’E/S. Lorsque la valeur EST FALSE , le pilote miniport n’a pas besoin d’appeler des routines ScsiPortXxx pour accéder aux mémoires tampons de données ou aux informations de sens de requête. La définition de ce membre sur FALSE peut dégrader les performances d’E/S de l’adaptateur HBA. L’appel de routines autres que ScsiPortXxx rend un pilote miniport non portable sur les systèmes d’exploitation Microsoft.
MaximumNumberOfTargets
Spécifie le nombre de périphériques cibles que l’adaptateur HBA peut contrôler. Par défaut, la valeur de ce membre est SCSI_MAXIMUM_TARGETS, selon la norme SCSI. Un pilote miniport peut réinitialiser ce membre à une valeur inférieure si l’adaptateur HBA a des fonctionnalités plus limitées ou à une valeur supérieure, ce qui indique que l’adaptateur HBA a des fonctionnalités SCSI large ou Fibre Channel. Cette valeur est limitée à SCSI_MAXIMUM_TARGETS_PER_BUS.
ReservedUchars[2]
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
SlotNumber
Spécifie le numéro d’emplacement d’un adaptateur HBA avec des valeurs correspondantes à VendorId et DeviceId qui ont été spécifiées dans la structure HW_INITIALIZATION_DATA (SCSI) lorsque le pilote miniport appelé ScsiPortInitialize.
BusInterruptLevel2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
BusInterruptVector2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
InterruptMode2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
DmaChannel2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
DmaPort2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
DmaWidth2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
DmaSpeed2
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniports.
DeviceExtensionSize
Spécifie la taille en octets requise par un pilote miniport pour son extension de périphérique par HBA afin de gérer les transferts de données supérieurs à 64 000, ce qui peut nécessiter des listes de points/regroupements plus grandes que la taille définie dans le Registre pour ce pilote.
SpecificLuExtensionSize
Spécifie la taille en octets requise par le pilote miniport pour son stockage par unité logique, le cas échéant, pour gérer les transferts de données supérieurs à 64 000. 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 est en mesure de recevoir des adresses 32 bits, indépendamment de ce que le contrôleur peut réellement prendre en charge. Si un espace supplémentaire est nécessaire dans les extensions LUN ou SRB pour gérer les adresses 64 bits, des 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, pour gérer les transferts de données supérieurs à 64 Ko. Définissez ce membre avant d’appeler ScsiPortGetUncachedExtension pour modifier la taille du stockage par requête en fonction de NumberOfPhysicalBreaks. 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 est en mesure de recevoir des adresses 32 bits, indépendamment de ce que le contrôleur peut réellement prendre en charge. Si un espace supplémentaire est nécessaire dans les extensions LUN ou SRB pour gérer les adresses 64 bits, des ajustements appropriés doivent être apportés à cette valeur avant de l’utiliser avec des routines telles que ScsiPortGetUncachedExtension.
Dma64BitAddresses
Indique que l’adaptateur HBA peut accéder à des adresses supérieures à 4 Go ou 0x0FFFFFFFF si Dma64BitAddresses contient une valeur de SCSI_DMA64_MINIPORT_SUPPORTED. Avant Windows 2000, le SCSIPort définissait cette valeur en fonction du contenu de HW_INITIALIZATION_DATA (SCSI). Cela n’est plus le cas. Dans Windows 2000, la valeur de Dma64BitAddresses est déterminée par le rappel du pilote miniport HwScsiFindAdapter seul. Si le système d’exploitation prend en charge un espace d’adressage 64 bits, le pilote de port transmet une valeur de SCSI_DMA64_SYSTEM_SUPPORTED au pilote miniport dans ce membre. Si l’adaptateur HBA décrit par PORT_CONFIGURATION_INFORMATION prend également en charge les espaces d’adressage supérieurs à 32 bits, le pilote port/miniport est requis pour prendre en charge l’adressage 64 bits complet, et le rappel HwScsiFindAdapter du pilote miniport l’indique en affectant une valeur de SCSI_DMA64_MINIPORT_SUPPORTED à Dma64BitAddresses, en écrivant sur toute valeur précédente attribuée par le pilote de port. La valeur correcte doit être attribuée au membre Dma64BitAddresses avant que le pilote miniport appelle ScsiPortGetUncachedExtension.
ResetTargetSupported
Obsolète. Le pilote ScsiPort n’envoie plus SRB_FUNCTION_RESET_DEVICE requêtes à ses pilotes miniport. N’utilisez pas ce membre.
MaximumNumberOfLogicalUnits
Spécifie le nombre maximal d’unités logiques par cible que l’adaptateur HBA peut contrôler. Par défaut, la valeur de ce membre est SCSI_MAXIMUM_LOGICAL_UNITS. Un pilote miniport peut réinitialiser ce membre à une valeur inférieure si l’adaptateur HBA a des fonctionnalités plus limitées ou à une valeur supérieure, ce qui indique que l’adaptateur HBA a des fonctionnalités SCSI-3.
WmiDataProvider
Indique quand TRUE que le pilote miniport répond aux demandes WMI (Windows Management Instrumentation). Lorsque la valeur EST FALSE , le pilote miniport ne répond pas aux demandes WMI (Windows Management Instrumentation). Par défaut, la valeur de ce membre est FALSE.
Remarques
Les membres spécifiques initialisés dépendent du pilote miniport HBA et des informations de configuration disponibles pour le pilote de port spécifique au système d’exploitation. Le pilote de port spécifique au système d’exploitation définit des valeurs par défaut dans tous les membres pour lesquels il ne peut pas fournir d’informations de configuration à la routine HwScsiFindAdapter du pilote miniport.
Tous les pilotes de miniport HBA doivent avoir au moins un ensemble de valeurs par défaut à utiliser pour les membres concernés si le pilote de port spécifique au système d’exploitation ne transmet pas toutes les valeurs initialisées.
La routine HwScsiFindAdapter doit mettre à jour tous les membres pertinents pour un adaptateur HBA pris en charge par le pilote.
Les pilotes de classe de stockage Windows NT, qui se chargent plus tard que les pilotes miniports, dépendent des informations fournies par la routine HwScsiFindAdapter de chaque pilote miniport pour configurer leurs demandes d’E/S suivantes. Par exemple, les valeurs MaximumTransferLength et NumberOfPhysicalBreaks fournies par chaque pilote miniport déterminent si un pilote de classe doit fractionner les demandes de transfert volumineuses en un ensemble de transferts partiels en fonction des limites de l’adaptateur HBA.
Le membre Dma64BitAddresses de PORT_CONFIGURATION_INFORMATION ne doit plus être considéré comme une valeur BOOLEAN. La valeur SCSI_DMA64_SYSTEM_SUPPORTED indique que le pilote port/miniport est nécessaire pour prendre en charge l’adressage 64 bits, mais la routine ScsiPortGetUncachedExtension interprète toujours toute valeur différente de zéro de Dma64BitAddresses comme indiquant que la prise en charge 64 bits est requise. Cela signifie que ScsiPortGetUncachedExtension fonctionne toujours correctement lorsqu’il est appelé par un pilote hérité qui affecte des valeurs BOOLEAN à Dma64BitAddresses.
En plus de Dma64BitAddresses, PORT_CONFIGURATION_INFORMATION et HW_INITIALIZATION_DATA ont une paire de membres appelés SpecificLuExtensionSize et SrbExtensionSize dont les valeurs doivent maintenant être gérées différemment. Le pilote miniport doit calculer les valeurs initiales de SpecificLuExtensionSize et de SrbExtensionSize dans HW_INITIALIZATION_DATA en partant de l’hypothèse que l’adaptateur HBA est capable de recevoir des adresses 32 bits, quelle que soit la prise en charge par le contrôleur. Les valeurs par défaut pour SpecificLuExtensionSize et SrbExtensionSize dans PORT_CONFIGURATION_INFORMATION seront également basées sur une hypothèse d’adressage 32 bits, car les valeurs dans PORT_CONFIGURATION_INFORMATION sont dérivées des valeurs dans HW_INITIALIZATION_DATA.
Cela signifie que si le pilote miniport a besoin d’espace supplémentaire dans l’extension LUN ou dans l’extension SRB afin de gérer les adresses physiques 64 bits, il doit modifier les valeurs de SpecificLuExtensionSize et SrbExtensionSize dans PORT_CONFIGURATION_INFORMATION pour tenir compte de cela avant de passer PORT_CONFIGURATION_INFORMATION à ScsiPortGetUncachedExtension.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | srb.h (inclure Srb.h, Storport.h, Strmini.h) |