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) |