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