Condividi tramite


HW_INITIALIZATION_DATA struttura (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;

Members

HwInitializationDataSize

Specifica le dimensioni di questa struttura in byte, come restituito da sizeof(HW_INITIALIZATION_DATA). In effetti, questo membro indica la versione di questa struttura usata dal driver miniport. La routine DriverEntry di un miniport deve impostare il valore di questo membro per il driver della porta.

AdapterInterfaceType

Il driver Storport non supporta gli autobus legacy. Pertanto, la maggior parte dei tipi di interfaccia adattatore usati con il driver porta SCSI non è valida per Storport. In particolare, Isa, Eisa, MicroChannel e TurboChannel non sono supportati. Inoltre, a differenza del case porta SCSI, un driver miniport che funziona con il driver Storport non è necessario per specificare i valori per i membri VendorIdLength, VendorId, DeviceIdLength e DeviceId.

HwInitialize

Puntatore alla routine HwStorInitialize del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport.

HwStartIo

Puntatore alla routine HwStorStartIo del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport.

HwInterrupt

Puntatore alla routine HwStorInterrupt del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport.

HwFindAdapter

Puntatore alla routine HwStorFindAdapter del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport.

HwResetBus

Puntatore alla routine HwStorResetBus del driver miniport, che è 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 archiviazione per le informazioni sull'adattatore del bus host determinato dal driver (HBA). Il driver di porta specifico del sistema operativo inizializza ogni estensione del dispositivo una sola volta, quando alloca prima l'estensione e la riempie con zero. Passa un puntatore all'estensione specifica del dispositivo 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 ri inizializza l'estensione del dispositivo ogni volta che l'adattatore viene arrestato e quindi le chiamate successive a HwScsiFindAdapter ricevono un'estensione del dispositivo zeroed-out, Storport non segue tale modello. Storport reimposta invece l'estensione del dispositivo su zero solo quando viene prima allocata, quindi solo la prima chiamata a HwStorFindAdapter per una determinata scheda riceve un'estensione del dispositivo zeroed-out. Le chiamate successive a HwStorFindAdapter e altre funzioni miniport ricevono l'estensione del dispositivo come ultima modificata dal miniport. Ciò consente al driver miniport di mantenere la conoscenza dello stato dell'adattatore tra Plug and Play (PnP) arresta e riavvia, eventualmente abilitando il driver miniport per ottimizzare la procedura di inizializzazione.

SpecificLuExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'archiviazione per unità logica, se presente. Un driver miniport può usare le estensioni LU come risorsa di archiviazione per le informazioni sull'unità logica determinata dal driver sulle periferiche sul bus. Il driver Storport inizializza ogni estensione LU allocata con zero. Lasciare questo membro impostato su zero se il driver miniport non gestisce 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 usarle con routine come StorPortGetUncachedExtension.

SrbExtensionSize

Specifica le dimensioni, in byte, richieste dal driver miniport per la relativa risorsa di archiviazione per richiesta, se presente. Un driver miniport può usare estensioni SRB come archiviazione per informazioni specifiche del driver determinate dal driver, ad esempio i dati necessari per elaborare una richiesta specifica. Il driver Storport non inizializza le estensioni SRB, ma imposta un puntatore a questa risorsa di archiviazione in ogni SRB che invia 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 di 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 gestisce 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 usarle con routine come StorPortGetUncachedExtension.

NumberOfAccessRanges

Specifica il numero di intervalli di accesso usati dall'adapter. Ogni è un intervallo di indirizzi di memoria o indirizzi di porta 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 dati SRB agli indirizzi virtuali del sistema. Il membro MapBuffers può avere uno dei valori seguenti.

Valore Significato
STOR_MAP_NO_BUFFERS Non eseguire il mapping per qualsiasi SRB tranne SRB_FUNCTION_IO_CONTROL e SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Obsoleta. Questo valore ha lo stesso effetto dell'STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Eseguire il mapping del buffer per tutte le richieste di I/O, ad eccezione delle richieste di lettura o scrittura.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Eseguire il mapping del buffer per tutte le richieste di I/O, incluse le richieste di lettura e scrittura. Questo valore è valido a partire da Windows 8.

NeedPhysicalAddresses

Deve essere impostato su TRUE. Un valore true indica che il driver miniport deve tradurre determinati tipi di indirizzi in indirizzi fisici. I driver 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. Un 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. Un valore true indica che l'HBA può eseguire un'operazione di richiesta 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. Un 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 alla routine HwStorAdapterControl del driver miniport. Questa è una routine obbligatoria perché i driver miniport che funzionano con il driver Storport richiedono il supporto PnP.

HwBuildIo

Puntatore a una routine HwStorBuildIo facoltativa che il driver di porta chiama per eseguire l'elaborazione non sincronizzata prima di chiamare la routine HwStorStartIo del driver miniport. Questo callback è specifico per miniport fisici e deve essere impostato su NULL per miniport virtuali.

HwFreeAdapterResources

Puntatore alla routine HwStorFreeAdapterResources del driver miniport virtuale, che è un punto di ingresso obbligatorio per tutti i driver miniport virtuali. Questo callback è specifico per i 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 HwStorProcessServiceRequest del driver miniport virtuale. Questo callback è specifico per i 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 HwStorCompleteServiceIrp del driver miniport virtuale. Questo callback è specifico per i 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 HwStorInitializeTracing del driver miniport virtuale. Questo callback è specifico per i 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 per i 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 una routine HwStorTracingEnabled facoltativa che il driver di 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 Si tratta di un driver miniport virtuale.
STOR_FEATURE_ATA_PASS_THROUGH Il miniport supporta il passaggio ATA.
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES Il miniport fornisce impostazioni complete nella sua struttura STOR_DEVICE_CAPABILITIES_EX .
STOR_FEATURE_DUMP_POINTERS Il miniport supporta le SRB del puntatore di dump.
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX Il driver miniport non vuole che il suffisso " Dispositivo tipo SCSI" come parte del nome descrittivo del dispositivo.
STOR_FEATURE_DUMP_RESUME_CAPABLE La funzionalità dump del miniport è funzionale per la ripresa dall'ibernazione.
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD Il driver Storport inizializza la STORAGE_DEVICE_DESCRIPTOR dalla pagina VPD informazioni ATA anziché dai dati DI RICHIESTA.
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE Il driver Storport imposta il tipo di interfaccia dell'adattatore.

SrbTypeFlags

Flag che indicano i tipi SRB supportati dal miniport. SrbTypeFlags è impostato su 0 o una combinazione dei valori seguenti:

Valore Significato
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK Il miniport usa SRB standard.
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK Il miniport supporta srB estesi.

AddressTypeFlags

Schemi di indirizzi supportati dal miniport. Attualmente, l'unico schema di indirizzi è supportato e il miniport deve impostare questo membro su ADDRESS_TYPE_FLAG_BTL8.

Valore Significato
ADDRESS_TYPE_FLAG_BTL8 Indirizzamento a 8 bit (Bus, Target e LUN).

Reserved1

Riservato, impostato su 0.

HwUnitControl

Puntatore alla routine HwStorUnitControl del driver miniport. Il driver di porta chiama questa routine con una richiesta di controllo per un dispositivo unità di archiviazione.

Commenti

Ogni routine driver DriverEntry di StorPort deve chiamare StorPortInitialize dopo che il driver miniport ha prima zero e quindi impostare i membri di HW_INITIALIZATION_DATA.

Requisiti

Requisito Valore
Intestazione Storport.h (include Storport.h)