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;
Members
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 della porta.
AdapterInterfaceType
Per i driver miniport virtuali storport, il valore di 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 adattatore usati con il driver della porta SCSI non è valida per i driver Storport. In particolare, Storport non supporta:
- Isa
- Eisa
- MicroChannel
- TurboChannel
Inoltre, a differenza del caso della porta SCSI, non è necessario un driver miniport virtuale che funziona con il driver Storport per fornire i valori per i membri seguenti:
- VendorIdLength
- VendorId
- DeviceIdLength
- Deviceid
HwInitialize
Puntatore alla routine HwStorInitialize del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwStartIo
Puntatore alla routine HwStorStartIo del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwInterrupt
Non usato. I driver miniport virtuali non elaborano interruzioni.
HwFindAdapter
Puntatore alla routine VirtualHwStorFindAdapter del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwResetBus
Puntatore alla routine HwStorResetBus del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwDmaStarted
Non usato. I driver miniport virtuali non eseguono DMA.
HwAdapterState
Il driver Storport non supporta 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 scheda. 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 unità logica di archiviazione.
SpecificLuExtensionSize
Specifica le dimensioni, in byte, richieste dal driver miniport virtuale per l'archiviazione non di paging per unità logica, se presenti. Un driver miniport virtuale può usare le estensioni dell'unità logica (LU) come risorsa di archiviazione per informazioni lu determinate dal driver sulle periferiche nel bus virtuale. Il driver di porta specifico del sistema operativo inizializza ogni estensione LU allocata con zeri. Lasciare questo membro impostato su zero se il driver miniport virtuale non gestisce 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 usato. I driver miniport virtuali non supportano l'hardware.
Reserved
Riservato per l'utilizzo nel 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, lo 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 usano in genere questa impostazione. |
NeedPhysicalAddresses
Non usato. 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. Un valore TRUE indica che l'HBA può eseguire un'operazione di rilevamento della richiesta senza richiedere una richiesta esplicita.
MultipleRequestPerLu
Deve essere impostato su TRUE. Un 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 HwStorFreeAdapterResources del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali.
HwProcessServiceRequest
Puntatore alla routine HwStorProcessServiceRequest del driver miniport virtuale.
HwCompleteServiceIrp
Puntatore alla routine HwStorCompleteServiceIrp del driver miniport virtuale.
HwInitializeTracing
Puntatore alla routine HwStorInitializeTracing del driver miniport virtuale.
HwCleanupTracing
Puntatore alla routine HwStorCleanupTracing del driver miniport virtuale.
Commenti
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.
Requisiti
Requisito | Valore |
---|---|
Intestazione | storport.h (include Storport.h) |