struttura VIRTUAL_HW_INITIALIZATION_DATA (storport.h)
La struttura VIRTUAL_HW_INITIALIZATION_DATA contiene informazioni specifiche per ogni driver miniport virtuale.
Sintassi
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;
Membri
HwInitializationDataSize
Specifica le dimensioni di questa struttura in byte, come restituito da sizeof(). Questo membro indica la versione di questa struttura utilizzata dal driver miniport virtuale. La routine DriverEntry di un driver miniport virtuale deve impostare il valore di questo membro per il driver di porta.
AdapterInterfaceType
Per i driver miniport virtuali storport, il valore per AdapterInterfaceType sarà quasi sempre interno . Ciò è dovuto al fatto che il driver Storport non supporta gli autobus legacy.
Si noti che per questo motivo, la maggior parte dei tipi di interfaccia di scheda usati con il driver di porta SCSI non è valida per i driver Storport. In particolare, Storport non supporta:
- Isa
- Eisa
- MicroChannel
- TurboChannel
A differenza del caso della porta SCSI, inoltre, un driver miniport virtuale che funziona con il driver Storport non è necessario per fornire valori per i membri seguenti:
- VendorIdLength
- VendorId
- DeviceIdLength
- DeviceId
HwInitialize
Puntatore al driver miniport virtuale HwStorInitialize routine, un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwStartIo
Puntatore alla routine del driver miniport virtuale HwStorStartIo, un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwInterrupt
Non utilizzato. I driver miniport virtuali non elaborano interruzioni.
HwFindAdapter
Puntatore alla routine virtual miniport driver VirtualHwStorFindAdapter routine, un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwResetBus
Puntatore alla routine HwStorResetBus del driver miniport virtuale, un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwDmaStarted
Non utilizzato. I driver miniport virtuali non eseguono DMA.
HwAdapterState
Il driver Storport non supporta i driver legacy. Pertanto, questo membro deve essere NULL.
DeviceExtensionSize
Specifica le dimensioni, in byte, richieste dal driver miniport virtuale per l'estensione del dispositivo non di paging per adattatore. Un driver miniport virtuale usa l'estensione del dispositivo come risorsa di archiviazione per informazioni sull'adattatore determinato dal driver. Il driver di porta specifico del sistema operativo inizializza ogni estensione del dispositivo allocata con zeri e passa un puntatore all'estensione del dispositivo specifica dell'adattatore nella maggior parte delle chiamate al driver miniport virtuale. Le dimensioni specificate non includono alcun driver miniport virtuale richiesto per ogni risorsa di archiviazione unità logica.
SpecificLuExtensionSize
Specifica le dimensioni, in byte, richieste dal driver miniport virtuale per lo spazio di archiviazione non di paging per unità logica, se presente. Un driver miniport virtuale può usare le estensioni di unità logica (LU) come risorsa di archiviazione per le informazioni lu determinate dal driver sulle periferiche del bus virtuale. Il driver di porta specifico del sistema operativo inizializza ogni estensione LU allocata con zeri. Lasciare il membro impostato su zero se il driver miniport virtuale non mantiene le informazioni per lu per cui richiede l'archiviazione.
SrbExtensionSize
Specifica le dimensioni, in byte, richieste dal driver miniport virtuale per l'archiviazione non di paging per richiesta, se presente. Poiché i driver miniport virtuali che funzionano con il driver Storport devono supportare elenchi a dispersione/raccolta e gli elenchi di dispersione/raccolta per SRB vengono in genere allocati nell'estensione SRB, questo membro è raramente zero.
NumberOfAccessRanges
Non utilizzato. I driver miniport virtuali non supportano l'hardware.
Reserved
Riservato per l'uso del sistema.
MapBuffers
Nome | Descrizione |
---|---|
STOR_MAP_NO_BUFFERS | Esegue il mapping del buffer solo per SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI. |
STOR_MAP_ALL_BUFFERS | Obsoleto, stesso comportamento di STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Esegue il mapping del buffer per le richieste di I/O ad eccezione di READ e WRITE. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | Esegue il mapping del buffer per tutte le richieste di I/O, tra cui READ e WRITE. I driver Miniport useranno in genere questa impostazione. |
NeedPhysicalAddresses
Non utilizzato. I driver miniport virtuali non supportano l'hardware.
TaggedQueuing
Deve essere impostato su TRUE. Il valore TRUE indica che il driver miniport virtuale supporta l'accodamento con tag.
AutoRequestSense
Deve essere impostato su TRUE. Il valore TRUE indica che l'HBA può eseguire un'operazione di tipo request-sense senza richiedere una richiesta esplicita.
MultipleRequestPerLu
Deve essere impostato su TRUE. Il valore TRUE indica che il driver miniport virtuale può accodamento di più richieste per unità logica (LU).
ReceiveEvent
Questo valore non viene più usato e può essere impostato su TRUE o FALSE.
VendorIdLength
Lunghezza, in byte, dell'identificatore del fornitore.
VendorId
Identificatore del fornitore.
ReservedUshort
Riservato.
PortVersionFlags
Bitmap di flag che indicano le funzionalità supportate dal driver di porta. Attualmente, l'unico flag disponibile è SP_VER_TRACE_SUPPORT, che indica che il driver della porta supporta la traccia.
DeviceIdLength
Lunghezza, in byte, dell'identificatore del dispositivo.
DeviceId
Identificatore del dispositivo.
HwAdapterControl
Puntatore alla routine HwStorAdapterControl del driver miniport virtuale.
HwBuildIo
Questo membro non viene utilizzato.
HwFreeAdapterResources
Puntatore alla routine HwStorFreeAdapterResource s del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwProcessServiceRequest
Puntatore alla routine diHwStorProcessServiceRequest del driver miniport virtuale.
HwCompleteServiceIrp
Puntatore alla routinedel driver miniport virtuale HwStorCompleteServiceIrp.
HwInitializeTracing
Puntatore alla routinedel driver miniport virtualeHwStorInitializeTracing.
HwCleanupTracing
Puntatore alla routine HwStorCleanupTracing del driver miniport virtuale.
Osservazioni
Se un driver miniport virtuale verrà eseguito solo in Windows 8 o versione successiva, il driver deve usare la struttura HW_INITIALIZATION_DATA anziché VIRTUAL_HW_INITIALIZATION_DATA.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | storport.h (include Storport.h) |