Condividi tramite


struttura HW_INITIALIZATION_DATA (srb.h)

Ogni driver miniport SCSI driverEntry routine deve inizializzare con zeri e quindi compilare le informazioni pertinenti HW_INITIALIZATION_DATA (SCSI) per il driver di porta specifico del sistema operativo.

Nota I modelli di driver porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare driver Storport e modelli di driver miniport Storport.
 

Sintassi

typedef struct _HW_INITIALIZATION_DATA {
  ULONG               HwInitializationDataSize;
  INTERFACE_TYPE      AdapterInterfaceType;
  PHW_INITIALIZE      HwInitialize;
  PHW_STARTIO         HwStartIo;
  PHW_INTERRUPT       HwInterrupt;
  PHW_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;
  BOOLEAN             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;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

Membri

HwInitializationDataSize

Specifica le dimensioni di questa struttura in byte, come restituito da sizeof(). 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

Specifica il tipo di bus di I/O a cui è connesso l'HBA, che può essere uno dei seguenti: interno , Isa, Eisa, MicroChannel, TurboChannelo PCIBus. Tuttavia, in futuro saranno supportati altri tipi di autobus. Il limite superiore per i tipi di autobus supportati è sempre MaximumInterfaceType.

Se questa proprietà è impostata su PCIBus, il driver miniport deve fornire valori per i membri VendorIdLength, VendorId, DeviceIdLengthe Membri deviceId, descritti più avanti.

HwInitialize

Puntatore alla routine del driver miniport HwScsiInitialize, ovvero un punto di ingresso obbligatorio per tutti i driver miniport. Il prototipo per questa routine è PHW_INITIALIZE.

HwStartIo

Puntatore alla routine HwScsiStartIo del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport. Il prototipo per questa routine è PHW_STARTIO.

HwInterrupt

Puntatore alla routine HwScsiInterrup t del driver miniport, che è un punto di ingresso obbligatorio per qualsiasi driver miniport di un HBA che genera interrupt. Impostare questa opzione su null se il driver miniport non necessita di ISR. Il prototipo per questa routine è PHW_INTERRUPT.

HwFindAdapter

Puntatore alla routine HwScsiFindAda pter del driver miniport, che è un punto di ingresso obbligatorio per tutti i driver miniport. Il prototipo per questa routine è PHW_FIND_ADAPTER.

HwResetBus

Puntatore alla routine HwScsiResetBus del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport. Il prototipo per questa routine è PHW_RESET_BUS.

HwDmaStarted

Puntatore alla routine HwScsiDmaStarted del driver miniport se l'HBA usa DMA di sistema, ovvero un controller DMA di sistema. Impostarla su NULL se l'HBA è un master del bus o usa PIO. Il prototipo per questa routine è PHW_DMA_STARTED.

HwAdapterState

Puntatore alla routine HwScsiAdapterState del driver miniport, un punto di ingresso obbligatorio per i driver miniport di HBA con BIOS collegati a un driver di porta x86 dipendente dal sistema operativo che deve passare tra le modalità di processore protette x86 e reali. Se il driver miniport non richiede routine HwScsiAdapterState, impostare questo membro su NULL. Un driver miniport per un HBA che dispone di un BIOS deve avere una routine HwScsiAdapterState per essere compatibile con il driver di porta x86 e portabile in un ambiente del sistema operativo solo x86. Il prototipo per questa routine è PHW_ADAPTER_STATE.

DeviceExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'estensione per dispositivo HBA. Un driver miniport usa l'estensione del dispositivo come risorsa di archiviazione per informazioni HBA determinate 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 specifico di HBA in ogni chiamata a un driver miniport, ad eccezione della routine DriverEntry. Le dimensioni specificate non includono alcun driver miniport richiesto per unità logica di archiviazione, descritto di seguito.

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 SCSI nel bus. 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 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 ScsiPortGetUncachedExtension.

SrbExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'archiviazione per richiesta, se presente. 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 di porta specifico del sistema operativo 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. 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 ScsiPortGetUncachedExtension.

NumberOfAccessRanges

Specifica il numero di intervalli di accesso utilizzati dall'adapter. Ogni è un intervallo di indirizzi di memoria o di porte di I/O. Un hba tipico usa due intervalli, uno per le porte di I/O e un altro per l'intervallo di memoria del dispositivo.

Reserved

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

MapBuffers

Indica, quando TRUE, è necessario eseguire il mapping di tutti gli indirizzi del buffer di dati agli indirizzi virtuali per l'accesso da parte del driver miniport. Quando FALSE, non è necessario eseguire il mapping degli indirizzi del buffer dei dati agli indirizzi virtuali.

NeedPhysicalAddresses

Indica, quando TRUE, che il driver miniport deve convertire il proprio dispositivo, qualsiasi indirizzo di estensione PER LU e qualsiasi indirizzo di estensione SRB per SRB, nonché indirizzi del buffer SRB, in indirizzi fisici, come richiesto dall'HBA. Quando FALSE, nessuno di questi indirizzi deve essere convertito in indirizzi fisici.

TaggedQueuing

Indica, quando TRUE, tale driver miniport può supportare l'accodamento con tag SCSI. Quando false, il driver miniport non può supportare l'accodamento con tag SCSI.

AutoRequestSense

Indica, quando TRUE, che l'HBA può eseguire un'operazione di tipo request-sense senza richiedere una richiesta esplicita. Quando FALSE, l'HBA richiede una richiesta esplicita prima di poter eseguire un'operazione di tipo request-sense. Solo i driver miniport che guidano HBA con firmware predefinito per eseguire operazioni di tipo request-sense devono impostare questo membro su TRUE.

MultipleRequestPerLu

Indica, quando TRUE, che il driver miniport può accodamento di più richieste per unità logica, in particolare, all'interno dell'HBA. Quando FALSE, il driver miniport non può accodamento di più richieste per unità logica. Si noti che un HBA deve supportare il senso della richiesta automatica per il driver miniport per abilitare questa funzionalità. Se un driver miniport imposta questo membro su TRUE, deve usare ogni membro SRB QueueTag per le richieste di questo tipo, ma il SRB_FLAGS_QUEUE_ACTION_ENABLE non è impostato nel SrbFlags membro della struttura SCSI_REQUEST_BLOCK.

ReceiveEvent

Indica, quando TRUE, che il driver miniport guida un HBA in grado di supportare l'SRB dell'evento di ricezione per gli eventi asincroni SCSI. Quando FALSE, l'HBA non può supportare l'SRB dell'evento di ricezione per gli eventi asincroni SCSI.

VendorIdLength

Specifica le dimensioni in byte della stringa VendorId descritta di seguito.

VendorId

Puntatore a una stringa di byte ASCII che identifica il produttore dell'HBA. Questo membro è irrilevante per i driver Plug and Play.

Se l'AdapterInterfaceType specificato è PCIBus, l'ID fornitore è un valore USHORT allocato da PCI SIG, che deve essere convertito in una stringa di byte dal driver miniport. Ad esempio, se il valore ID fornitore PCI assegnato è 1001, il driver miniport fornito VendorId stringa sarà ('1', '0', '0', '1').

ReservedUshort

Riservato per l'uso del sistema e non è disponibile per l'uso da parte dei driver miniport.

PortVersionFlags

DeviceIdLength

Specifica le dimensioni in byte della stringa DeviceId descritta di seguito.

DeviceId

Puntatore a una stringa di byte ASCII che identifica i modelli HBA supportati dal driver miniport. Questo membro è irrilevante per i driver Plug and Play.

Se il AdapterInterfaceType specificato è PCIBus, un ID dispositivo è un valore USHORT assegnato dal produttore dell'HBA. Il driver miniport deve convertire qualsiasi valore di ID dispositivo PCI per l'HBA(s) che può supportare in DeviceId stringhe di byte, come per il membro VendorId. Ad esempio, se un driver miniport può supportare hba con ID dispositivo PCI 8040 e 8050, potrebbe impostare DeviceId con un puntatore alla stringa di byte ('8', '0').

HwAdapterControl

Puntatore alla routine HwScsiAdapterControl del driver miniport, un punto di ingresso obbligatorio per tutti i driver miniport PnP. Impostare questa opzione su NULL se il driver miniport non supporta Plug and Play.

Osservazioni

Ogni driver miniport deve inizializzare la struttura HW_INITIALIZATION_DATA con zeri prima di impostare i valori dei membri pertinenti in questa struttura e chiama ScsiPortInitialize.

Il Dma64BitAddresses membro di HW_INITIALIZATION_DATA è stato eliminato in Windows 2000 (per altri dettagli, vedere la discussione in PORT_CONFIGURATION_DATA).

Sia HW_INITIALIZATION_DATA che PORT_CONFIGURATION_INFORMATION hanno una coppia di membri denominati SpecificLuExtensionSize e SrbExtensionSize i cui valori vengono gestiti in modo diverso rispetto a quelli precedenti a Windows 2000. Il driver miniport deve calcolare i valori iniziali di SpecificLuExtensionSize e SrbExtensionSize in HW_INITIALIZATION_DATA in base al presupposto che l'HBA sia in grado di gestire gli indirizzi a 32 bit, indipendentemente da ciò che il controller può effettivamente supportare. Per altri dettagli, vedere la discussione in PORT_CONFIGURATION_DATA.

Fabbisogno

Requisito Valore
intestazione srb.h (include Srb.h, Strmini.h)

Vedere anche

DriverEntry del driver miniport SCSI

HwScsiInitialize

SCSI_REQUEST_BLOCK

ScsiPortInitialize