Partager via


structure VIRTUAL_HW_INITIALIZATION_DATA (storport.h)

La structure VIRTUAL_HW_INITIALIZATION_DATA contient des informations spécifiques à chaque pilote 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 taille de(). Ce membre indique la version de cette structure utilisée par le pilote miniport virtuel. La routine de 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 qu’en raison de cela, 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 miniport virtuel, qui est un point d’entrée requis pour tous les pilotes de miniport virtuel.

HwStartIo

Pointeur vers la routine HwStorStart Io du pilote miniport virtuel, qui est un point d’entrée requis pour tous les pilotes miniport virtuels.

HwInterrupt

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

HwFindAdapter

Pointeur vers la routine virtual miniport driver’s VirtualHwStorFindAdapter, qui est un point d’entrée requis pour tous les pilotes de miniport virtuel.

HwResetBus

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

HwDmaStarted

Non utilisé. Les pilotes miniport virtuels 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 miniport virtuel pour son extension d’appareil non paginée par adaptateur. Un pilote miniport virtuel utilise son extension de périphérique comme stockage pour les informations sur l’adaptateur déterminé par le pilote. Le pilote de port spécifique au système d’exploitation initialise chaque extension de périphérique qu’il alloue avec zéros et transmet un pointeur à l’extension d’appareil spécifique à l’adaptateur dans la plupart des appels au pilote miniport virtuel. La taille donnée n’inclut aucun stockage de miniport virtuel demandé par unité logique.

SpecificLuExtensionSize

Spécifie la taille, en octets, requise par le pilote 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 lu 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 lu qu’elle alloue avec zéros. Laissez ce membre défini sur zéro si le pilote miniport virtuel ne conserve pas les informations par unité logique pour lesquelles il nécessite un stockage.

SrbExtensionSize

Spécifie la taille, en octets, requise par le pilote 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 les listes de nuages 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é à l’utilisation du 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 requêtes 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, notamment LECTURE et ÉCRITURE. 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 miniport virtuel prend en charge la mise en file d’attente marquée.

AutoRequestSense

Doit être défini sur TRUE. Une valeur de TRUE indique que l’adaptateur HBA peut effectuer une opération de sens des requêtes sans exiger qu’une requête explicite le fasse.

MultipleRequestPerLu

Doit être défini sur TRUE. Une valeur de TRUE indique que le pilote miniport virtuel peut mettre en file d’attente plusieurs requêtes 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 miniport virtuel.

HwBuildIo

Ce membre n’est pas utilisé.

HwFreeAdapterResources

Pointeur vers le HwStorFreeAdapterResources du pilote miniport virtuel routine, qui est un point d’entrée requis pour tous les pilotes miniport virtuels.

HwProcessServiceRequest

Pointeur vers la routine HwStorProcessServiceRequest du pilote miniport virtuel.

HwCompleteServiceIrp

Pointeur vers la routine HwStorCompleteServiceIrp du pilote miniport virtuel.

HwInitializeTracing

Pointeur vers la routine de HwStorInitializeTracing du pilote miniport virtuel.

HwCleanupTracing

Pointeur vers la routine HwStorCleanupTracing du pilote miniport virtuel.

Remarques

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

Exigences

Exigence Valeur
d’en-tête storport.h (include Storport.h)

Voir aussi

HwStorAdapterControl

HwStorCleanupTracing

HwStorCompleteServiceIrp

HwStorFreeAdapterResources

HwStorInitialize

HwStorInitializeTracing

HwStorProcessServiceRequest

HwStorResetBus

HwStorStartIo

VirtualHwStorFindAdapter