HW_INITIALIZATION_DATA struttura (srb.h)

Ogni routine driver driver SCSI Miniport deve inizializzare con zero e quindi compilare le informazioni relative HW_INITIALIZATION_DATA (SCSI) per il driver di porta specifico del sistema operativo.

Nota I modelli di driver di porta SCSI e miniport SCSI possono essere modificati o non disponibili in futuro. È invece consigliabile usare i modelli di driver Storport e 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;

Members

HwInitializationDataSize

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

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

Se questo è impostato su PCIBus, il driver miniport deve fornire valori per i membri VendorIdLength, VendorId, DeviceIdLength e DeviceId, descritti più avanti.

HwInitialize

Puntatore alla routine HwSCSIInitialize del driver miniport, che è 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, che è un punto di ingresso obbligatorio per tutti i driver miniport. Il prototipo per questa routine è PHW_STARTIO.

HwInterrupt

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

HwFindAdapter

Puntatore alla routine HwScsiFindAdapter 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, che è 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 la sua HBA usa il sistema DMA, ovvero un controller DMA di sistema. Impostare questa opzione 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, che è un punto di ingresso obbligatorio per i driver miniport di HBA con BIOS collegati a un driver di porta dipendente dal sistema operativo, x86-platform-only driver che deve passare tra modalità di processore protette e reali x86. Se il driver miniport non necessita di 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 x86 solo. Il prototipo per questa routine è PHW_ADAPTER_STATE.

DeviceExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'estensione del dispositivo PER HBA. Un driver miniport usa l'estensione del dispositivo come archiviazione per informazioni HBA determinate dal driver. Il driver di porta specifico del sistema operativo inizializza ogni estensione del dispositivo allocata con zero e passa un puntatore all'estensione specifica del dispositivo HBA in ogni chiamata a un driver miniport, ad eccezione della routine DriverEntry . Le dimensioni specificate non includono alcun driver miniport richiesto per l'archiviazione per unità logica, descritto di seguito.

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 archiviazione per le informazioni sull'unità logica determinata dal driver sulle periferiche SCSI sul bus. Il driver di porta specifico del sistema operativo 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 SCSIPortGetUncachedExtension.

SrbExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'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 di porta specifico del sistema operativo 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. 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 SCSIPortGetUncachedExtension.

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. Una tipica HBA 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, tutti gli indirizzi del buffer dati devono essere mappati agli indirizzi virtuali per l'accesso dal driver miniport. Quando FALSE, gli indirizzi del buffer dei dati non devono essere mappati agli indirizzi virtuali.

NeedPhysicalAddresses

Indica, quando true, che il driver miniport deve tradurre il proprio dispositivo, qualsiasi per LU e qualsiasi indirizzo di estensione per SRB, nonché indirizzi buffer SRB, agli 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 richiesta senza richiedere una richiesta esplicita. Quando FALSE, l'HBA richiede una richiesta esplicita prima di poter eseguire un'operazione di richiesta. Solo i driver miniport che guidano HBA con firmware predefinito per eseguire operazioni di rilevamento delle richieste devono impostare questo membro su TRUE.

MultipleRequestPerLu

Indica, quando TRUE, 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 la SRB_FLAGS_QUEUE_ACTION_ENABLE non è impostata nel membro SrbFlags della struttura SCSI_REQUEST_BLOCK.

ReceiveEvent

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

VendorIdLength

Specifica le dimensioni in byte della stringa VendorId , descritte di seguito.

VendorId

Puntatore a una stringa di byte ASCII che identifica il produttore dell'HBA. Questo membro è irrilevante per i driver di 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, la stringa VendorId fornita dal driver miniport sarà ('1', '0', '0', '1', '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 , descritte 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 di Plug and Play.

Se l'adapterInterfaceType specificato è PCIBus, un ID dispositivo è un valore USHORT assegnato dal produttore dell'HBA. Il driver miniport deve convertire qualsiasi valore ID dispositivo PCI per gli HBA(s) che può supportare in stringhe di byte DeviceId , 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, che è 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.

Commenti

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

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

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 dal supporto effettivo del controller. Per ulteriori dettagli, vedere la discussione in PORT_CONFIGURATION_DATA.

Requisiti

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

Vedi anche

DriverEntry del driver miniport SCSI

HwScsiInitialize

SCSI_REQUEST_BLOCK

ScsiPortInitialize