structure PORT_CONFIGURATION_INFORMATION (storport.h)

PORT_CONFIGURATION_INFORMATION contient des informations de configuration pour un adaptateur de bus hôte (HBA).

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                                  MiniportDumpData;
  PVOID                                  Reserved;
  UCHAR                                  NumberOfBuses;
  CCHAR                                  InitiatorBusId[8];
  BOOLEAN                                ScatterGather;
  BOOLEAN                                Master;
  BOOLEAN                                CachesData;
  BOOLEAN                                AdapterScansDown;
  BOOLEAN                                AtdiskPrimaryClaimed;
  BOOLEAN                                AtdiskSecondaryClaimed;
  BOOLEAN                                Dma32BitAddresses;
  BOOLEAN                                DemandMode;
  UCHAR                                  MapBuffers;
  BOOLEAN                                NeedPhysicalAddresses;
  BOOLEAN                                TaggedQueuing;
  BOOLEAN                                AutoRequestSense;
  BOOLEAN                                MultipleRequestPerLu;
  BOOLEAN                                ReceiveEvent;
  BOOLEAN                                RealModeInitialized;
  BOOLEAN                                BufferAccessScsiPortControlled;
  UCHAR                                  MaximumNumberOfTargets;
  UCHAR                                  SrbType;
  UCHAR                                  AddressType;
  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;
  STOR_SYNCHRONIZATION_MODEL             SynchronizationModel;
  PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
  INTERRUPT_SYNCHRONIZATION_MODE         InterruptSynchronizationMode;
  MEMORY_REGION                          DumpRegion;
  ULONG                                  RequestedDumpBufferSize;
  BOOLEAN                                VirtualDevice;
  UCHAR                                  DumpMode;
  UCHAR                                  DmaAddressWidth;
  ULONG                                  ExtendedFlags1;
  ULONG                                  MaxNumberOfIO;
  ULONG                                  MaxIOsPerLun;
  ULONG                                  InitialLunQueueDepth;
  ULONG                                  BusResetHoldTime;
  ULONG                                  FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Membres

Length

Taille, en octets, de la structure PORT_CONFIGURATION_INFORMATION . Initialisé par le pilote Storport, ce membre sert également de version de structure.

SystemIoBusNumber

Numéro attribué par le système du bus d’E/S auquel l’adaptateur HBA est connecté. Les pilotes miniports ne doivent pas modifier ce membre. Sa valeur est affectée par le système, car la plateforme peut avoir plusieurs bus d’E/S de l’adaptateurInterfaceType spécifié.

AdapterInterfaceType

Interface de bus d’E/S. Storport initialise ce membre à la valeur spécifiée par le pilote miniport dans la structure HW_INITIALIZATION_DATA . Les pilotes miniports ne doivent pas modifier ce membre.

BusInterruptLevel

Niveau de demande d’interruption relative au bus. Storport 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. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

BusInterruptVector

Vecteur relatif au bus retourné par l’adaptateur HBA. Storport 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. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

InterruptMode

Spécifie si l’adaptateur HBA utilise des interruptions LevelSensitive ou Latched (parfois appelées « déclenchées par le bord »). Storport initialise ce membre à une valeur appropriée pour le bus et l’appareil, par exemple, LevelSensitive pour PCIBus. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

MaximumTransferLength

Nombre maximal d’octets que l’adaptateur HBA peut transférer en 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 HwStorInterrupt 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 ne dégrade pas les performances globales du système.

NumberOfPhysicalBreaks

Nombre maximal de pages physiques que l’adaptateur de stockage peut gérer dans un seul transfert (en d’autres termes, l’étendue de sa prise en charge des points/regroupements). Par défaut, la valeur de ce membre est 0x11. Le pilote miniport doit réinitialiser ce membre en fonction de la capacité de l’adaptateur de stockage.

DmaChannel

Canal DMA utilisé par un HBA subordonné. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

DmaPort

Port DMA utilisé par un adaptateur HBA subordonné. Par défaut, la valeur de ce membre est SP_UNINITIALIZED_VALUE. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

DmaWidth

Largeur des transferts DMA si l’adaptateur HBA utilise DMA. Par défaut, la valeur de ce membre est zéro. Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

DmaSpeed

Vitesse de transfert de données DMA pour les adaptateurs HBA Eisa . Storport initialise ce membre et les pilotes miniport ne doivent pas le modifier.

AlignmentMask

Masque indiquant les restrictions d’alignement pour les mémoires tampons requises par l’adaptateur HBA pour les opérations de transfert. Quelques exemples de valeurs de masque valides sont 0 (aligné sur octet), 1 (mot aligné), 3 (DWORD aligné) et 7 (double d’alignement DWORD). Le pilote miniport doit définir ce masque si l’adaptateur HBA prend en charge la diffusion/la collecte. Les valeurs de masque d’alignement autorisées suivantes sont définies dans wdm.h :

Valeur Signification
FILE_BYTE_ALIGNMENT (0x00000000) Les données sont alignées sur les octets (aucune exigence d’alignement pour l’appareil)
FILE_WORD_ALIGNMENT (0x00000001) Les données doivent être alignées sur une limite de 2 octets.
FILE_LONG_ALIGNMENT (0x00000003) Les données doivent être alignées sur une limite de 4 octets.
FILE_QUAD_ALIGNMENT (0x00000007) Les données doivent être alignées sur une limite de 8 octets.
FILE_OCTA_ALIGNMENT (0x0000000f) Les données doivent être alignées sur une limite de 16 octets.
FILE_32_BYTE_ALIGNMENT (0x0000001f) Les données doivent être alignées sur une limite de 32 octets.
FILE_64_BYTE_ALIGNMENT (0x0000003f) Les données doivent être alignées sur une limite de 64 octets.
FILE_128_BYTE_ALIGNMENT (0x0000007f) Les données doivent être alignées sur une limite de 128 octets.
FILE_256_BYTE_ALIGNMENT (0x000000ff) Les données doivent être alignées sur une limite de 256 octets.
FILE_512_BYTE_ALIGNMENT (0x000001ff) Les données doivent être alignées sur une limite de 512 octets.

NumberOfAccessRanges

Spécifie le nombre d’éléments AccessRanges dans le tableau.

AccessRanges

Pointeur vers un tableau d’éléments de type ACCESS_RANGE. Storport alloue de la mémoire pour les plages d’accès et initialise ce membre. Les pilotes miniports ne doivent pas modifier ce membre.

MiniportDumpData

Pointeur vers un contexte de vidage utilisé lors d’un crashdump ou d’une mise en veille prolongée.

Reserved

Réservé à l’utilisation du système (pré-Windows 8).

NumberOfBuses

Nombre de bus contrôlés par l’adaptateur. Par défaut, la valeur de ce membre est zéro. La valeur maximale de ce membre est SCSI_MAXIMUM_BUSES_PER_ADAPTER. Ce membre est disponible à partir de Windows 8.

InitiatorBusId[8]

ID du bus de l’initiateur. Si l’élément d’entrée InitiatorBusId[0] a la valeur SP_UNINITIALIZED_VALUE, 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. En règle générale, cette valeur est limitée par la valeur définie pour MaximumNumberOfTargets.

ScatterGather

Quand la valeur EST TRUE, l’adaptateur HBA prend en charge les points/regroupements. Storport initialise ce membre sur TRUE , car ses pilotes miniports doivent prendre en charge la diffusion/la collecte. Les pilotes miniport qui fonctionnent avec Storport ne doivent pas modifier cette valeur. (REMARQUE : dans les versions de Windows antérieures à Windows Server 2008 R2 et Windows 7, ce membre a la valeur FALSE. Dans ce cas, les pilotes miniport doivent définir ce membre sur TRUE. Le fait de ne pas définir ce membre sur TRUE entraîne l’échec du démarrage de l’appareil HBA.)

Master

Lorsque la valeur est TRUE, l’adaptateur HBA est un bus master. Storport initialise ce membre en TRUE , car ses pilotes miniport doivent prendre en charge la gestion DMA de bus. Les pilotes miniport qui fonctionnent avec Storport ne doivent pas modifier cette valeur. (REMARQUE : dans les versions de Windows antérieures à Windows Server 2008 R2 et Windows 7, ce membre a la valeur FALSE. Dans ce cas, les pilotes miniport doivent définir ce membre sur TRUE. Le fait de ne pas définir ce membre sur TRUE entraîne l’échec du démarrage de l’appareil HBA.)

CachesData

Quand la valeur EST TRUE, 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. S’il est réinitialisé à TRUE, Storport avertit le pilote miniport lorsque certains événements système se produisent, tels que des vidages du cache du système de fichiers.

AdapterScansDown

Storport ignore ce membre.

AtdiskPrimaryClaimed

Storport n’utilise pas ce membre et ses pilotes miniport ne doivent pas le définir.

AtdiskSecondaryClaimed

Storport n’utilise pas ce membre et ses pilotes miniport ne doivent pas le définir.

Dma32BitAddresses

Lorsque la valeur est TRUE, l’adaptateur HBA a 32 lignes d’adresses et peut accéder à la mémoire avec des adresses physiques supérieures à 0x00FFFFFF. Storport initialise ce membre sur TRUE, car ses pilotes miniport doivent prendre en charge la DMA de largeur de bus. Les pilotes miniport ne doivent pas modifier cette valeur, car il s’agit de l’adressage DMA par défaut si une valeur pour Dma64BitAddresses n’est pas définie. REMARQUE : si seules les adresses 32 bits sont prises en charge par le matériel de l’appareil, Dma64BitAddresses doit être défini sur 0.

DemandMode

Indique si le contrôleur DMA système doit être programmé pour le mode demande plutôt que pour les opérations à cycle unique. Storport initialise ce membre sur FALSE, car il ne prend pas en charge DMA en mode subordonné. Les pilotes miniport ne doivent pas modifier cette valeur.

MapBuffers

Indique si Storport mappe les adresses de mémoire tampon de données SRB aux adresses virtuelles système. Le pilote miniport définit ce membre sur l’une des valeurs suivantes pour contrôler le mappage des adresses de mémoire tampon de données SRB.

Valeur Signification
STOR_MAP_NO_BUFFERS Mappe la mémoire tampon uniquement pour SRB_FUNCTION_IO_CONTROL et SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Obsolète. Cette valeur a le même effet que STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Mappe la mémoire tampon pour toutes les E/S à l’exception des demandes de lecture et d’écriture.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Mappe la mémoire tampon pour toutes les E/S, y compris les demandes de lecture et d’écriture. Les miniports prenant en charge le démarrage doivent gérer une demande de lecture ou d’écriture de PAGE_SIZE. Ces demandes de lecture ou d’écriture doivent toujours se terminer correctement. Storport peut ne pas mapper la mémoire tampon dans des conditions de mémoire système faibles. Dans ce cas, le membre DataBuffer dans le SRB aura la valeur NULL.

NeedPhysicalAddresses

Lorsque la valeur EST TRUE, le pilote miniport doit traduire les adresses virtuelles en adresses physiques, comme requis par l’adaptateur HBA. Storport initialise ce membre sur TRUE, car ses pilotes miniports doivent prendre en charge les listes de points/regroupements. Miniport ne doit pas modifier cette valeur.

TaggedQueuing

Quand la valeur EST TRUE, l’adaptateur HBA prend en charge la mise en file d’attente de plusieurs requêtes avec des balises SCSI. Storport initialise ce membre sur TRUE , car ses pilotes miniport doivent prendre en charge la mise en file d’attente étiquetée. Les pilotes miniport ne doivent pas modifier cette valeur.

AutoRequestSense

Quand la valeur EST TRUE, l’adaptateur HBA prend en charge l’sens de requête automatique. Storport initialise ce membre sur TRUE , car ses pilotes miniport doivent prendre en charge le sens de requête automatique. Les pilotes miniport ne doivent pas modifier cette valeur.

MultipleRequestPerLu

Quand la valeur EST TRUE, l’adaptateur HBA prend en charge plusieurs requêtes par unité logique. Storport initialise ce membre sur TRUE , car ses pilotes miniports doivent prendre en charge plusieurs requêtes émises à une unité logique à la fois. Les pilotes miniport ne doivent pas modifier cette valeur.

ReceiveEvent

Storport n’utilise pas ce membre et ses pilotes miniport ne doivent pas le définir.

RealModeInitialized

Storport n’utilise pas ce membre et ses pilotes miniport ne doivent pas le définir.

BufferAccessScsiPortControlled

Storport n’utilise pas ce membre et ses pilotes miniport ne doivent pas le définir.

MaximumNumberOfTargets

Nombre de périphériques cibles que l’adaptateur peut contrôler. Par défaut, la valeur de ce membre est SCSI_MAXIMUM_TARGETS_PER_BUS. 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 de bus étendues. La valeur maximale de ce membre est 255.

SrbType

Type de SBS à envoyer au pilote miniport. Disponible à partir de Windows 8. Cette valeur est définie sur l’une des valeurs suivantes :

Valeur Signification
SRB_TYPE_SCSI_REQUEST_BLOCK Le pilote miniport reçoit des SSB standard.
SRB_TYPE_STORAGE_REQUEST_BLOCK Le pilote miniport reçoit des SSB étendus.

AddressType

Type d’adresse utilisé entre Storport et le pilote miniport. Disponible à partir de Windows 8. Cette valeur peut être définie sur la valeur suivante :

Valeur Signification
STORAGE_ADDRESS_TYPE_BTL8 Adressage 8 bits bus, cible et LUN (BTL).

ReservedUchars[2]

Réservé à l’utilisation du système (pré-Windows 8).

SlotNumber

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

BusInterruptLevel2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

BusInterruptVector2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

InterruptMode2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

DmaChannel2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

DmaPort2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

DmaWidth2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

DmaSpeed2

Réservé à l’utilisation par Storport. Les pilotes miniports ne doivent pas modifier ce membre.

DeviceExtensionSize

Taille, en octets, requise par le pilote miniport pour son extension de périphérique par adaptateur. 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 d’appareil une fois, lorsqu’il alloue l’extension pour la première fois, et la remplit avec des zéros. Il passe un pointeur vers l’extension d’appareil spécifique à HBA dans chaque appel à un pilote miniport. La taille donnée n’inclut pas de stockage miniport demandé par unité logique. La taille du stockage par unité logique est spécifiée via le champ SpecificLuExtensionSize , décrit plus loin dans cette rubrique.

Storport ne suit pas le modèle de SCSIPort (qui réinitialise l’extension de l’appareil chaque fois que l’adaptateur est arrêté et, par conséquent, les appels ultérieurs à HwScsiFindAdapter reçoivent une extension d’appareil à zéro). Storport réinitialise l’extension de l’appareil à zéro uniquement lorsqu’elle est allouée pour la première fois. Par conséquent, seul le premier appel à HwStorFindAdapter pour un adaptateur donné reçoit une extension d’appareil à zéro. Les appels suivants à HwStorFindAdapter et à d’autres fonctions miniport reçoivent l’extension de l’appareil comme dernière modification par le pilote miniport. Cela permet au pilote miniport de conserver des connaissances sur l’état de l’adaptateur entre Plug-and-Play (PnP) s’arrête et redémarre, ce qui permet éventuellement au pilote miniport d’optimiser sa procédure d’initialisation.

SpecificLuExtensionSize

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. Storport initialise ce membre à la valeur dans le même membre de la structure HW_INITIALIZATION_DATA envoyée dans la routine StorPortInitialize .

Définissez ce membre 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 StorPortGetUncachedExtension.

SrbExtensionSize

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 000. Storport initialise ce membre à la valeur dans le même membre de la structure HW_INITIALIZATION_DATA envoyée dans la routine StorPortInitialize .

Définissez ce membre avant d’appeler StorPortGetUncachedExtension pour modifier la taille du stockage par requête en fonction de NumberOfPhysicalBreaks. Définissez ce membre 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

Si le matériel de l’appareil prend uniquement en charge les adresses 32 bits, Dma64BitAddresses doit être défini sur 0. Si l’appareil prend en charge les adresses 64 bits, ce champ indique si l’adaptateur HBA peut accéder à des adresses supérieures à 4 Go.

Les adaptateurs Storport sont nécessaires pour prendre en charge la DMA de largeur du bus. Par conséquent, sur un ordinateur 64 bits ou PAE, Storport initialise Dma64BitAddresses pour SCSI_DMA64_SYSTEM_SUPPORTED indiquant que l’adaptateur peut accéder à la plage complète d’adresses. Lorsque les pilotes miniport détectent cette valeur, ils doivent retourner l’une des valeurs du tableau suivant dans le même membre pour indiquer au pilote de port que le pilote miniport prend en charge la DMA 64 bits. Si le miniport ne parvient pas à effectuer cette opération, il risque de dégrader gravement les performances de l’adaptateur.

Valeur Signification
SCSI_DMA64_MINIPORT_SUPPORTED Le pilote miniport prend en charge les adresses physiques 64 bits pour les transferts d’E/S.
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED Le pilote miniport prend en charge l’adressage 64 bits complet. Cela indique que les demandes d’E/S peuvent avoir des adresses physiques > de 4 Go. L’extension non mise en cache, SenseInfo et l’extension Srb peuvent exister au-dessus de 4 Go. Les allocations sont limitées à l’alignement des limites de 4 Go afin de les empêcher de franchir une limite de 4 Go.
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED Le pilote miniport prend en charge l’adressage 64 bits complet. Cela indique que les demandes d’E/S peuvent avoir des adresses physiques > de 4 Go. L’extension non mise en cache, SenseInfo et l’extension Srb peuvent exister au-dessus de 4 Go. Les allocations n’ont aucune exigence d’alignement des limites.
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED Le pilote miniport prend en charge l’adressage 64 bits dans une seule région de 4 Go. Cela indique que les demandes d’E/S, l’extension non mise en cache, SenseInfo et l’extension Srb peuvent avoir des adresses physiques > de 4 Go dans une seule région de 4 Go.

ResetTargetSupported

Obsolète. N’utilisez pas ce membre.

MaximumNumberOfLogicalUnits

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 étendues. La valeur maximale de ce membre est SCSI_MAXIMUM_LUNS_PER_TARGET.

WmiDataProvider

Lorsque la valeur EST TRUE, le pilote miniport répond aux demandes WMI (Windows Management Instrumentation). Storport initialise ce membre en TRUE , car ses pilotes miniport doivent prendre en charge WMI. En outre, les pilotes miniport pour les adaptateurs Fibre Channel doivent prendre en charge l’API HBA de gestion SAN via WMI, et les pilotes miniport pour les cartes RAID basées sur l’hôte sont nécessaires pour prendre en charge l’interface de gestion RAID.

Les pilotes miniport ne doivent pas modifier cette valeur.

SynchronizationModel

Modèle de synchronisation d’E/S pris en charge par le pilote miniport. Les valeurs possibles sont les suivantes :

Valeur Signification
StorSynchronizeFullDuplex Le miniport prend en charge le mode duplex intégral.
StorSynchronizeHalfDuplex Le miniport prend en charge le mode demi-duplex.

HwMSInterruptRoutine

Pointeur vers la routine HwMSInterruptRoutine du pilote miniport, qui est nécessaire pour tout pilote miniport d’un adaptateur HBA qui génère des interruptions signalées (MSIs) de message. Un pilote miniport définit ce membre sur NULL si l’adaptateur HBA ne génère pas d’IMS.

InterruptSynchronizationMode

Valeur INTERRUPT_SYNCHRONIZATION_MODE qui spécifie le mode de synchronisation d’interruption. Le mode de synchronisation d’interruption détermine la façon dont le pilote de port synchronise les interruptions signalées par le message.

DumpRegion

Une structure MEMORY_REGION qui décrit une région de mémoire contiguë physiquement que les pilotes miniports peuvent utiliser lors d’un vidage ou d’une mise en veille prolongée sur incident.

RequestedDumpBufferSize

Taille en octets de l’extension non mise en cache à allouer pour une utilisation pendant le vidage/mise en veille prolongée.

VirtualDevice

Lorsque la valeur est TRUE, il n’y a pas de matériel réel derrière cet appareil (par exemple, pas d’objet DMA, d’interruption, de ports d’E/S). Storport se comporte différemment dans certaines circonstances lorsqu’il prend en charge un miniport « virtuel » au lieu d’un miniport qui contrôle le matériel réel.

DumpMode

Indique l’utilisation du miniport pendant le mode de vidage. Il peut avoir l’une des valeurs suivantes.

Valeur Signification
DUMP_MODE_CRASH Le miniport en mode dump est utilisé pour un crashdump.
DUMP_MODE_HIBER Le miniport en mode dump est utilisé pour une mise en veille prolongée.
DUMP_MODE_MARK_MEMORY Le miniport en mode vidage est utilisé pour marquer la mémoire requise.
DUMP_MODE_RESUME Le miniport en mode vidage est utilisé pour un CV de mise en veille prolongée.

DmaAddressWidth

Largeur de l’adresse DMA d’un adaptateur. Les miniports doivent spécifier STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED dans FeatureSupport lors de la fourniture de cette valeur. La valeur spécifiée doit être (0 <DmaAddressWidth<= 64). Ce champ peut être utilisé à partir de Windows 10, version 2004.

ExtendedFlags1

Réservé pour le système.

MaxNumberOfIO

Nombre maximal d’opérations d’E/S en suspens prises en charge par l’adaptateur HBA. La valeur par défaut est 1000 par Storport. Si l’adaptateur HBA ne prend pas en charge 1 000 opérations d’E/S en suspens, le miniport doit l’ajuster à une valeur plus petite appropriée.

Si l’adaptateur HBA peut prendre en charge plus de 1 000 opérations d’E/S en suspens, le miniport peut augmenter ce membre à n’importe quelle valeur prise en charge par le matériel de l’adaptateur. Pour autoriser plus de 1 000 opérations d’E/S en suspens, l’adaptateur HBA doit prendre en charge l’une des méthodes d’adressage DMA 64 bits suivantes, définies dans le champ Dma64BitAddresses :

  • SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
  • SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
  • SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED

MaxIOsPerLun

Nombre maximal de demandes d’E/S prises en charge sur une LUN. Storport définit cette valeur par défaut 255. Si un LUN ne prend pas en charge 255 demandes d’E/S en attente, le miniport doit ajuster ce membre à une valeur plus petite appropriée. Ce membre doit être <= MaxNumberOfIO. Pour prendre en charge MaxIOsPerLun> 255, le champ SrbType doit être défini sur SRB_TYPE_STORAGE_REQUEST_BLOCK. Disponible à partir de Windows 8.

InitialLunQueueDepth

Profondeur initiale de la file d’attente d’E/S LUN. Storport définit cette valeur par défaut sur 20 pour les miniports physiques et sur 250 pour les miniports virtuels. Ce membre ajuste la profondeur de la file d’attente initiale pour toutes les LUN de l’adaptateur. La profondeur de file d’attente d’un LUN individuel est définie en appelant StorPortSetDeviceQueueDepth. Ce membre est généralement défini sur la même valeur que MaxIOsPerLun. Disponible à partir de Windows 8.

BusResetHoldTime

Durée, en microsecondes, de pause de l’adaptateur après la détection d’une réinitialisation. Définissez cette valeur sur 0 si aucun temps d’attente n’est nécessaire après la réinitialisation d’un bus. Disponible à partir de Windows 8.

FeatureSupport

Fonctionnalités Storport demandées pour l’adaptateur. Disponible à partir de Windows 8. Un pilote miniport peut définir ce membre comme un masque au niveau du bit de l’une des valeurs suivantes :

Valeur Signification
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 Le pilote miniport prend en charge la télémétrie des périphériques de stockage.
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 Le miniport demande de recevoir la commande STOP_UNIT pendant l’arrêt du système.
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 Le pilote miniport souhaite qu’UncachedExtension soit alloué à partir du nœud NUMA de l’adaptateur.
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 Le pilote miniport préfère utiliser l’API du noyau DMA V3 pour l’adaptateur.
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 Le pilote miniport prend en charge la possibilité d’abandonner une commande exceptionnelle via SRB_FUNCTION_ABORT_COMMAND.
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 L’adaptateur prend en charge des informations de seuil de température plus riches que celles définies dans la spécification SPC4 SCSI.
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 Le pilote miniport a spécifié la largeur d’adresse DMA dans DmaAddressWidth pour l’adaptateur. Cette valeur peut être utilisée à partir de Windows 10, version 2004.

Remarques

Le pilote Storport alloue et initialise cette structure, fournit autant d’informations de configuration spécifiques au HBA que possible et transmet la structure à la routine HwStorFindAdapter du pilote miniport. Storport ne prend pas en charge les appareils non PnP. HwStorFindAdapter ne recherche donc pas l’adaptateur. Sa fonction principale est d’initialiser PORT_CONFIGURATION_INFORMATION.

Configuration requise

Condition requise Valeur
En-tête storport.h (include Srb.h, Storport.h, Strmini.h)

Voir aussi

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth