Partager via


VIRTUAL_HW_INITIALIZATION_DATA structure (storport.h)

La structure VIRTUAL_HW_INITIALIZATION_DATA contient des informations spécifiques à chaque pilote de miniport virtuel.

Syntaxe

typedef struct _VIRTUAL_HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVIRTUAL_HW_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;
  UCHAR                       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;
  PHW_BUILDIO                 HwBuildIo;
  PHW_FREE_ADAPTER_RESOURCES  HwFreeAdapterResources;
  PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
  PHW_COMPLETE_SERVICE_IRP    HwCompleteServiceIrp;
  PHW_INITIALIZE_TRACING      HwInitializeTracing;
  PHW_CLEANUP_TRACING         HwCleanupTracing;
} VIRTUAL_HW_INITIALIZATION_DATA, *PVIRTUAL_HW_INITIALIZATION_DATA;

Membres

HwInitializationDataSize

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

AdapterInterfaceType

Pour les pilotes de miniport virtuel storport, la valeur de AdapterInterfaceType sera presque toujours interne. Cela est dû au fait que le pilote Storport ne prend pas en charge les bus hérités.

Notez que pour cette raison, la plupart des types d’interface d’adaptateur utilisés avec le pilote de port SCSI ne sont pas valides pour les pilotes Storport. En particulier, Storport ne prend pas en charge :

  • Isa
  • Eisa
  • MicroChannel
  • TurboChannel

En outre, contrairement au cas de port SCSI, un pilote miniport virtuel qui fonctionne avec le pilote Storport n’est pas nécessaire pour fournir des valeurs pour les membres suivants :

  • VendorIdLength
  • VendorId
  • DeviceIdLength
  • DeviceId

HwInitialize

Pointeur vers la routine HwStorInitialize du pilote de miniport virtuel, qui est un point d’entrée obligatoire pour tous les pilotes de miniport virtuel.

HwStartIo

Pointeur vers la routine HwStorStartIo du pilote de miniport virtuel, qui est un point d’entrée obligatoire pour tous les pilotes de miniport virtuel.

HwInterrupt

Non utilisé. Les pilotes miniport virtuels ne traitent pas les interruptions.

HwFindAdapter

Pointeur vers la routine VirtualHwStorFindAdapter du pilote de miniport virtuel, qui est un point d’entrée obligatoire pour tous les pilotes de miniport virtuel.

HwResetBus

Pointeur vers la routine HwStorResetBus du pilote de miniport virtuel, qui est un point d’entrée obligatoire pour tous les pilotes de miniport virtuel.

HwDmaStarted

Non utilisé. Les pilotes de miniport virtuel n’exécutent pas DMA.

HwAdapterState

Le pilote Storport ne prend pas en charge les pilotes hérités. Par conséquent, ce membre doit être NULL.

DeviceExtensionSize

Spécifie la taille, en octets, requise par le pilote de miniport virtuel pour son extension de périphérique non paginé par adaptateur. Un pilote miniport virtuel utilise son extension de périphérique comme stockage pour les informations d’adaptateur 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 des zéros et transmet un pointeur vers l’extension de périphérique spécifique à l’adaptateur dans la plupart des appels au pilote de miniport virtuel. La taille donnée n’inclut pas de stockage de pilote de miniport virtuel demandé par unité logique.

SpecificLuExtensionSize

Spécifie la taille, en octets, requise par le pilote de miniport virtuel pour son stockage non paginé par unité logique, le cas échéant. Un pilote de miniport virtuel peut utiliser ses extensions d’unité logique (LU) comme stockage pour les informations sur les unités logiques déterminées par le pilote sur les périphériques du bus virtuel. Le pilote de port spécifique au système d’exploitation initialise chaque extension de lu qu’il alloue avec des zéros. Laissez ce membre défini sur zéro si le pilote de miniport virtuel ne conserve pas les informations par lu pour lesquelles il a besoin de stockage.

SrbExtensionSize

Spécifie la taille, en octets, requise par le pilote de miniport virtuel pour son stockage non paginé par requête, le cas échéant. Étant donné que les pilotes miniport virtuels qui fonctionnent avec le pilote Storport doivent prendre en charge les listes de nuages de points/regroupements, et que les listes de points/regroupements par SRB sont généralement allouées dans l’extension SRB, ce membre est rarement égal à zéro.

NumberOfAccessRanges

Non utilisé. Les pilotes miniport virtuels ne prennent pas en charge le matériel.

Reserved

Réservé pour le système.

MapBuffers

Nom Description
STOR_MAP_NO_BUFFERS Mappe uniquement la mémoire tampon pour les SRB_FUNCTION_IO_CONTROL et les SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Obsolète, même comportement que STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Mappe la mémoire tampon pour les demandes d’E/S à l’exception de READ et WRITE.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Mappe la mémoire tampon pour toutes les demandes d’E/S, y compris READ et WRITE. Les pilotes miniport utilisent généralement ce paramètre.

NeedPhysicalAddresses

Non utilisé. Les pilotes miniport virtuels ne prennent pas en charge le matériel.

TaggedQueuing

Doit être défini sur TRUE. La valeur TRUE indique que le pilote de miniport virtuel prend en charge la mise en file d’attente étiquetée.

AutoRequestSense

Doit être défini sur TRUE. La valeur TRUE indique que l’adaptateur HBA peut effectuer une opération de détection de requête sans nécessiter de requête explicite.

MultipleRequestPerLu

Doit être défini sur TRUE. La valeur TRUE indique que le pilote de miniport virtuel peut mettre en file d’attente plusieurs demandes par unité logique (LU).

ReceiveEvent

Cette valeur n’est plus utilisée et peut être définie sur TRUE ou FALSE.

VendorIdLength

Longueur, en octets, de l’identificateur du fournisseur.

VendorId

Identificateur du fournisseur.

ReservedUshort

Réservé.

PortVersionFlags

Bitmap d’indicateurs qui indiquent les fonctionnalités prises en charge par le pilote de port. Actuellement, le seul indicateur disponible est SP_VER_TRACE_SUPPORT, ce qui indique que le pilote de port prend en charge le suivi.

DeviceIdLength

Longueur, en octets, de l’identificateur de l’appareil.

DeviceId

Identificateur de l’appareil.

HwAdapterControl

Pointeur vers la routine HwStorAdapterControl du pilote de miniport virtuel.

HwBuildIo

Ce membre n’est pas utilisé.

HwFreeAdapterResources

Pointeur vers la routine HwStorFreeAdapterResources du pilote miniport virtuel, qui est un point d’entrée obligatoire pour tous les pilotes de miniport virtuel.

HwProcessServiceRequest

Pointeur vers la routine HwStorProcessServiceRequest du pilote de miniport virtuel.

HwCompleteServiceIrp

Pointeur vers la routine HwStorCompleteServiceIrp du pilote de miniport virtuel.

HwInitializeTracing

Pointeur vers la routine HwStorInitializeTracing du pilote de miniport virtuel.

HwCleanupTracing

Pointeur vers la routine HwStorCleanupTracing du pilote de miniport virtuel.

Remarques

Si un pilote de miniport virtuel s’exécute uniquement sur Windows 8 ou une version ultérieure, le pilote doit utiliser la structure de HW_INITIALIZATION_DATA au lieu de VIRTUAL_HW_INITIALIZATION_DATA.

Configuration requise

Condition requise Valeur
En-tête storport.h (inclure Storport.h)

Voir aussi

HwStorAdapterControl

HwStorCleanupTracing

HwStorCompleteServiceIrp

HwStorFreeAdapterResources

HwStorInitialize

HwStorInitializeTracing

HwStorProcessServiceRequest

HwStorResetBus

HwStorStartIo

VirtualHwStorFindAdapter