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) |