PORT_CONFIGURATION_INFORMATION structure (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 le HBA est connecté. Les pilotes miniport 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 miniport ne doivent pas modifier ce membre.
BusInterruptLevel
Niveau de demande d’interruption relative du bus. Storport ne fait aucune hypothèse sur 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 de bus retourné par l’adaptateur HBA. Storport ne fait aucune hypothèse sur 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 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 avec 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 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 du 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 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 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 les octets), 1 (mot aligné), 3 (DWORD aligné) et 7 (double d’alignement DWORD). Le pilote de 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 miniport ne doivent pas modifier ce membre.
MiniportDumpData
Pointeur vers un contexte de vidage utilisé pendant un crashdump ou 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. Ce membre a une valeur maximale de SCSI_MAXIMUM_BUSES_PER_ADAPTER. Ce membre est disponible à partir de Windows 8.
InitiatorBusId[8]
ID du bus initiateur. Si l’entrée InitiatorBusId[0] a la valeur SP_UNINITIALIZED_VALUE, le pilote miniport peut affecter une valeur par défaut si son 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 affecté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 nuages de points/regroupements. Storport initialise ce membre sur TRUE , car ses pilotes miniport doivent prendre en charge les nuages de points/regroupements. 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 est défini sur FALSE. Dans ce cas, les pilotes miniport doivent définir ce membre sur TRUE. Le fait de ne pas affecter la valeur TRUE à ce membre entraîne l’échec du démarrage de l’appareil HBA.)
Master
Quand la valeur est TRUE, l’adaptateur HBA est un bus master. Storport initialise ce membre sur TRUE , car ses pilotes miniport doivent prendre en charge le DMA de mastering 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 est défini sur FALSE. Dans ce cas, les pilotes miniport doivent définir ce membre sur TRUE. Le fait de ne pas affecter la valeur TRUE à ce membre 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. Si la valeur est FALSE, l’adaptateur HBA ne met pas en cache les données et ne conserve pas l’état mis en cache sur les périphériques. Par défaut, la valeur de ce membre est FALSE. Si cette valeur est réinitialisée à 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 aucune valeur pour Dma64BitAddresses n’est 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 de longueur. 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 sera 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 miniport doivent prendre en charge les listes de nuages 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
Lorsque 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 la détection de la demande 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 miniport doivent prendre en charge plusieurs demandes é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 SSR à 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 SSR standard. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | Le pilote miniport reçoit des SSR é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 miniport ne doivent pas modifier ce membre.
BusInterruptLevel2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
BusInterruptVector2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
InterruptMode2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
DmaChannel2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
DmaPort2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
DmaWidth2
Réservé à l’utilisation par Storport. Les pilotes miniport ne doivent pas modifier ce membre.
DmaSpeed2
Réservé à l’utilisation par Storport. Les pilotes miniport 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 de périphérique 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 de périphérique spécifique à HBA dans chaque appel à un pilote miniport. La taille donnée n’inclut pas de stockage par unité logique demandé par pilote miniport. 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 périphérique 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). Au lieu de cela, Storport réinitialise l’extension d’appareil à zéro uniquement lorsqu’elle est allouée pour la première fois, de sorte que 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 périphérique comme dernière modification par le pilote miniport. Cela permet au pilote miniport de conserver des connaissances sur l’état de l’adaptateur entre les arrêts et les redémarrages de Plug-and-Play (PnP), 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 Ko. Storport initialise ce membre à la valeur du 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 a besoin de 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 Ko. Storport initialise ce membre à la valeur du 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 ne prend en charge que 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 aux adresses supérieures à 4 Go.
Les adaptateurs Storport sont nécessaires pour prendre en charge l’assistant DMA de largeur de 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 DMA 64 bits. Si le miniport ne parvient pas à le faire, il peut dégrader considérablement 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 requêtes WMI (Windows Management Instrumentation). Storport initialise ce membre sur TRUE , car ses pilotes miniport doivent prendre en charge WMI. En outre, les pilotes miniport pour les adaptateurs Fibre Channel sont censés prendre en charge l’API HBA de gestion SAN via WMI, et les pilotes miniport pour les adaptateurs RAID basés 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 HBA qui génère des interruptions de signal de message (MSIs). Un pilote miniport affecte à ce membre la valeur 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 des interruptions détermine la façon dont le pilote de port synchronise les interruptions signalées par le message.
DumpRegion
Structure MEMORY_REGION qui décrit une région de mémoire physiquement contiguë que les pilotes de miniport peuvent utiliser lors d’un vidage sur incident ou d’une mise en veille prolongée.
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 en mode vidage. Il peut avoir l’une des valeurs suivantes.
Valeur | Signification |
---|---|
DUMP_MODE_CRASH | Le miniport en mode vidage est utilisé pour un crashdump. |
DUMP_MODE_HIBER | Le miniport en mode vidage 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 attente 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 attente, 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 attente, 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 attente, 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 un numéro d’unité logique. Storport définit cette valeur par défaut sur 255. Si un numéro d’unité logique 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 de la file d’attente d’E/S de LUN initiale. Storport a défini 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 tous les lun sur 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 du périphérique de stockage. |
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 | Le miniport demande à 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 en attente 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 de l’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 à HBA que possible et transmet la structure à la routine HwStorFindAdapter du pilote miniport. Storport ne prend pas en charge les appareils non PnP. Par conséquent, HwStorFindAdapter ne recherche 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) |