Condividi tramite


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 HwStorInitialize routine, un punto di ingresso obbligatorio per tutti i driver miniport.

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 può avere uno dei valori seguenti.

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 HwStorProcessServiceRequest 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.

HwCompleteServiceIrp

Puntatore alla routine del driver miniport virtuale HwStorCompleteServiceIrp. 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.

HwInitializeTracing

Puntatore alla routine del driver miniport virtuale HwStorInitializeTracing. 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.

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 HwStorUnitControl. Il driver della porta chiama questa routine con una richiesta di controllo per un dispositivo di unità di archiviazione.

Osservazioni

Ogni routine DriverEntry driver di Storport miniport deve chiamare StorPortInitialize dopo che il driver miniport è stato prima azzerato e quindi impostare i membri di HW_INITIALIZATION_DATA.

Fabbisogno

Requisito Valore
intestazione storport.h (include Storport.h)