struttura HW_INITIALIZATION_DATA (storport.h)
La struttura HW_INITIALIZATION_DATA (Storport) contiene informazioni specifiche per ogni driver miniport e l'hardware gestito dal driver miniport.
Sintassi
typedef struct _HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PVOID 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;
PHW_TRACING_ENABLED HwTracingEnabled;
ULONG FeatureSupport;
ULONG SrbTypeFlags;
ULONG AddressTypeFlags;
ULONG Reserved1;
PHW_UNIT_CONTROL HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
Membri
HwInitializationDataSize
Specifica le dimensioni di questa struttura in byte restituite da sizeof(HW_INITIALIZATION_DATA). In effetti, questo membro indica la versione di questa struttura utilizzata dal driver miniport. La routine DriverEntry di un driver miniport deve impostare il valore di questo membro per il driver di porta.
AdapterInterfaceType
Il driver Storport non supporta gli autobus legacy. Pertanto, la maggior parte dei tipi di interfaccia di scheda usati con il driver porta SCSI non è valida per Storport. In particolare, Isa, Eisa, MicroChannele TurboChannel non sono supportati. Inoltre, a differenza del caso della porta SCSI, non è necessario un driver miniport che funziona con il driver Storport per fornire valori per i membri VendorIdLength, VendorId, DeviceIdLengthe membri deviceId.
HwInitialize
Puntatore alla routine
HwStartIo
Puntatore alla routine HwStorStartIo del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport.
HwInterrupt
Puntatore alla routine HwStorInterrupt del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport.
HwFindAdapter
Puntatore alla routine HwStorFindAda pter del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport.
HwResetBus
Puntatore alla routine HwStorResetBus del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport.
HwDmaStarted
Il driver Storport non supporta DMA in modalità subordinata. Pertanto, questo membro deve essere NULL.
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 per l'estensione del dispositivo per adattatore. Un driver miniport usa l'estensione del dispositivo come risorsa di archiviazione per informazioni sull'adattatore host determinato dal driver (HBA). Il driver di porta specifico del sistema operativo inizializza ogni estensione del dispositivo una volta, quando alloca per la prima volta l'estensione e la riempie con zeri. Passa un puntatore all'estensione del dispositivo specifica dell'HBA in ogni chiamata a un driver miniport. Le dimensioni specificate non includono alcun driver miniport richiesto per ogni unità logica di archiviazione. Le dimensioni dell'archiviazione per unità logica vengono specificate tramite il campo SpecificLuExtensionSize descritto più avanti in questo argomento.
Anche se SCSIPort inizializza nuovamente l'estensione del dispositivo ogni volta che la scheda viene arrestata e quindi le chiamate successive a HwScsiFindAdapter ricevono un'estensione del dispositivo con zeroout, Storport non segue tale modello. Storport reimposta invece l'estensione del dispositivo su zero solo quando viene allocata per la prima volta, quindi solo la prima chiamata a HwStorFindAdapter per una determinata scheda riceve un'estensione del dispositivo con zeroout. Le chiamate successive a HwStorFindAdapter e altre funzioni miniport ricevono l'estensione del dispositivo come ultima modifica dal miniport. Ciò consente al driver miniport di mantenere la conoscenza dello stato dell'adattatore tra i arresti e i riavvii di Plug and Play (PnP), possibilmente abilitando il driver miniport per ottimizzare la procedura di inizializzazione.
SpecificLuExtensionSize
Specifica le dimensioni in byte richieste dal driver miniport per lo spazio di archiviazione per unità logica, se presente. Un driver miniport può usare le estensioni LU come risorsa di archiviazione per informazioni sulle unità logiche determinate dal driver sulle periferiche del bus. Il driver Storport inizializza ogni estensione LU allocata con zeri. Lasciare questo membro impostato su zero se il driver miniport non mantiene le informazioni per lu per cui richiede l'archiviazione. Questo valore si basa sul presupposto che l'HBA sia in grado di ricevere indirizzi a 32 bit, indipendentemente da ciò che il controller può effettivamente supportare. Se è necessario spazio aggiuntivo nelle estensioni LUN o SRB per gestire gli indirizzi a 64 bit, è necessario apportare modifiche appropriate a questo valore prima di usarlo con routine come StorPortGetUncachedExtension.
SrbExtensionSize
Specifica le dimensioni, in byte, richieste dal driver miniport per l'archiviazione per richiesta, se presenti. Un driver miniport può usare le estensioni SRB come risorsa di archiviazione per informazioni specifiche del driver, ad esempio i dati necessari per elaborare una determinata richiesta. Il driver Storport non inizializza le estensioni SRB, ma imposta un puntatore a questa risorsa di archiviazione in ogni SRB inviato al driver miniport. Un'estensione SRB può essere accessibile in modo sicuro dall'hardware HBA. Poiché i driver miniport 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. Lasciare questo membro impostato su zero se il driver miniport non mantiene le informazioni per SRB per cui richiede l'archiviazione.
Questo valore si basa sul presupposto che l'HBA sia in grado di ricevere indirizzi a 32 bit, indipendentemente da ciò che il controller può effettivamente supportare. Se è necessario spazio aggiuntivo nelle estensioni LUN o SRB per gestire gli indirizzi a 64 bit, è necessario apportare modifiche appropriate a questo valore prima di usarlo con routine come StorPortGetUncachedExtension.
NumberOfAccessRanges
Specifica il numero di intervalli di accesso utilizzati dall'adapter. Ogni è un intervallo di indirizzi di memoria o di porte di I/O.
Reserved
Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.
MapBuffers
Indica se il driver Storport esegue il mapping degli indirizzi del buffer dei dati SRB agli indirizzi virtuali di sistema. Il membro MapBuffers
Valore | Significato |
---|---|
STOR_MAP_NO_BUFFERS (0) | Non eseguire il mapping di SRB ad eccezione di SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI. |
STOR_MAP_ALL_BUFFERS (1) | Obsoleto. Questo valore ha lo stesso effetto di STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS (2) | Eseguire il mapping del buffer per tutte le operazioni di I/O, ad eccezione delle richieste di lettura o scrittura. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) | Eseguire il mapping del buffer per tutte le operazioni di I/O, incluse le richieste di lettura e scrittura. Questo valore è valido a partire da Windows 8. |
NeedPhysicalAddresses
Deve essere impostato su TRUE. Il valore TRUE indica che il driver miniport deve convertire determinati tipi di indirizzi in indirizzi fisici. I conducenti miniport che lavorano con il driver Storport devono supportare DMA master del bus, quindi saranno sempre necessari per eseguire la traduzione degli indirizzi.
TaggedQueuing
Deve essere impostato su TRUE. Il valore TRUE indica che il driver miniport supporta l'accodamento con tag SCSI. Tutti i driver miniport che funzionano con il driver Storport devono supportare l'accodamento con tag.
AutoRequestSense
Deve essere TRUE. Il valore TRUE indica che l'HBA può eseguire un'operazione di tipo request-sense senza richiedere una richiesta esplicita. Tutti i driver miniport che funzionano con il driver Storport devono supportare il senso di richiesta automatica SCSI.
MultipleRequestPerLu
Deve essere impostato su TRUE. Il valore TRUE indica che il driver miniport può accodamento di più richieste per unità logica. I driver Miniport che funzionano con il driver Storport devono supportare più richieste per unità logica.
ReceiveEvent
Il driver Storport ignora questo membro.
VendorIdLength
Il driver Storport ignora questo membro, perché i driver miniport che funzionano con il driver Storport devono supportare PnP.
VendorId
Il driver Storport ignora questo membro, perché i driver miniport che funzionano con il driver Storport devono supportare PnP.
ReservedUshort
PortVersionFlags
Flag per indicare le funzionalità supportate.
DeviceIdLength
Il driver Storport ignora questo membro, perché i driver miniport che funzionano con il driver Storport devono supportare PnP.
DeviceId
Il driver Storport ignora questo membro, perché i driver miniport che funzionano con il driver Storport devono supportare PnP.
HwAdapterControl
Puntatore al driver miniport routine HwStorAdapterControl. Si tratta di una routine obbligatoria perché i driver miniport che funzionano con il driver Storport richiedono il supporto PnP.
HwBuildIo
Puntatore a un facoltativo HwStorBuildIo routine che il driver della porta chiama per eseguire l'elaborazione non sincronizzata prima di chiamare la routine del driver miniport HwStorStartIo. Questo callback è specifico dei miniport fisici e deve essere impostato su NULL da miniport virtuali.
HwFreeAdapterResources
Puntatore alla routine HwStorFreeAdapterResource s del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali. Questo callback è specifico dei miniport virtuali ed è impostato su NULL per miniport fisici.
Questo callback viene aggiunto in Windows 8. I miniport virtuali per le versioni precedenti di Windows devono usare VIRTUAL_HW_INITIALIZATION_DATA anziché questa struttura.
HwProcessServiceRequest
Puntatore alla routine di
Questo callback viene aggiunto in Windows 8. I miniport virtuali per le versioni precedenti di Windows devono usare VIRTUAL_HW_INITIALIZATION_DATA anziché questa struttura.
HwCompleteServiceIrp
Puntatore alla routine
Questo callback viene aggiunto in Windows 8. I miniport virtuali per le versioni precedenti di Windows devono usare VIRTUAL_HW_INITIALIZATION_DATA anziché questa struttura.
HwInitializeTracing
Puntatore alla routine del driver miniport virtuale
Questo callback viene aggiunto in Windows 8. I miniport virtuali per le versioni precedenti di Windows devono usare VIRTUAL_HW_INITIALIZATION_DATA anziché questa struttura.
HwCleanupTracing
Puntatore alla routine HwStorCleanupTracing del driver miniport virtuale. Questo callback è specifico dei miniport virtuali ed è impostato su NULL per miniport fisici.
Questo callback viene aggiunto in Windows 8. I miniport virtuali per le versioni precedenti di Windows devono usare VIRTUAL_HW_INITIALIZATION_DATA anziché questa struttura.
HwTracingEnabled
Puntatore a un facoltativo HwStorTracingEnabled routine che il driver della porta chiama per notificare al miniport se la traccia è abilitata o meno.
FeatureSupport
Flag che indicano le funzionalità supportate dal miniport. FeatureSupport è impostato su una combinazione di questi valori:
Valore | Significato |
---|---|
STOR_FEATURE_VIRTUAL_MINIPORT (0x00000001) | Si tratta di un driver miniport virtuale. |
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) | Il miniport supporta il pass-through ATA. |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES (0x00000004) | Il miniport fornisce impostazioni complete nella struttura STOR_DEVICE_CAPABILITIES_EX. |
STOR_FEATURE_DUMP_POINTERS (0x00000008) | Il miniport supporta le SBS del puntatore di dump. |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) | Il driver miniport non vuole che il suffisso "SCSI tipo dispositivo" come parte del nome descrittivo del dispositivo. |
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) | La funzionalità di dump del miniport è funzionale per riprendere dall'ibernazione. |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) | Il driver Storport inizializza il STORAGE_DEVICE_DESCRIPTOR dalla pagina ATA Information VPD anziché dai dati DI RICHIESTA. |
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) | Il driver miniport vuole SRBEX_DATA_IO_INFO in un SRBEX, se disponibile. |
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) | Il driver miniport può elaborare in modo sicuro la chiamata AdapterControl da Storport prima di ricevere HwFindAdapter. |
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT (0x00000200) | Il driver miniport non richiede la risorsa Porta I/O per la relativa scheda. |
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) | Il driver miniport vuole che HwDeviceExtension sia allineato a 16 byte in modalità dump. |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) | Il miniport vuole che Storport imposti il tipo di interfaccia dell'adattatore. |
STOR_FEATURE_DUMP_INFO (0x00001000) | Il driver miniport supporta le informazioni di dump SRB. |
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) | Il driver miniport supporta l'allocazione di DMA alla memoria fisica senza limiti. |
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) | Il driver miniport supporta adattatori di archiviazione basati su NVMe. |
STOR_FEATURE_REPORT_INTERNAL_DATA (0x00008000) | Il driver miniport supporta la creazione di report di dati interni. |
STOR_FEATURE_EARLY_DUMP (0x00010000) | Il driver miniport supporta la generazione anticipata di dump di arresto anomalo del sistema. |
STOR_FEATURE_NVME_ICE (0x00020000) | Il driver miniport supporta NVMe ICE. |
SrbTypeFlags
Flag che indicano i tipi SRB supportati dal miniport. SrbTypeFlags è impostato su 0 o su una combinazione dei valori seguenti:
Valore | Significato |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) | Il miniport usa srb standard. |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) | Il miniport supporta srb estesi. |
AddressTypeFlags
Schemi di indirizzi supportati dal miniport. Attualmente, è supportato l'unico schema di indirizzi e il miniport deve impostare questo membro su ADDRESS_TYPE_FLAG_BTL8.
Valore | Significato |
---|---|
ADDRESS_TYPE_FLAG_BTL8 (0x1) | Indirizzamento a 8 bit (Bus, Target e LUN) a 8 bit. |
Reserved1
Riservato, impostato su 0.
HwUnitControl
Puntatore alla routine del driver miniport
Osservazioni
Ogni routine DriverEntry
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
storport.h (include Storport.h) |