Condividi tramite


HW_FIND_ADAPTER funzione di callback (storport.h)

La routine HwStorFindAdapter usa la configurazione fornita per determinare se è supportato un HBA specifico e, se è, per restituire informazioni di configurazione su tale scheda.

Sintassi

HW_FIND_ADAPTER HwFindAdapter;

ULONG HwFindAdapter(
           PVOID DeviceExtension,
  [in]     PVOID HwContext,
  [in]     PVOID BusInformation,
  [in]     PCHAR ArgumentString,
  [in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in]     PBOOLEAN Reserved3
)
{...}

Parametri

DeviceExtension

Fornisce un'area di archiviazione per adattatore.

[in] HwContext

Impostata su NULL.

[in] BusInformation

Impostata su NULL.

[in] ArgumentString

Fornisce una stringa con terminazione NULL con informazioni di contesto sul driver.

[in/out] ConfigInfo

Fornisce una struttura di PORT_CONFIGURATION_INFORMATION inizializzata usata dal driver miniport durante l'inizializzazione.

[in] Reserved3

Riservato per l'utilizzo nel sistema.

Valore restituito

HwStorFindAdapter deve restituire uno dei valori di stato seguenti:

Codice restituito Descrizione
SP_RETURN_FOUND Indica che è stato trovato un HBA supportato e che le informazioni di configurazione rilevanti per HBA sono state determinate e impostate correttamente nella struttura PORT_CONFIGURATION_INFORMATION .
SP_RETURN_ERROR Indica che è stato trovato un HBA, ma si è verificato un errore durante l'acquisizione delle informazioni di configurazione. Se possibile, tale errore deve essere registrato con StorPortLogError.
SP_RETURN_BAD_CONFIG Indica che le informazioni di configurazione fornite non sono valide per l'adapter.
SP_RETURN_NOT_FOUND Indica che non è stato trovato alcun HBA supportato per le informazioni di configurazione fornite.

Commenti

Poiché il driver Storport supporta solo i dispositivi Plug and Play (PnP), i parametri HwContext e BusInformation su HwStorFindAdapter non vengono forniti ai driver miniport non virtuali.

HwStorFindAdapter deve impostare i campi MaximumTransferLength e NumberOfPhysicalBreaks nella struttura ConfigInfo . Oltre a questi campi, la struttura PORT_CONFIGURATION_INFORMATION specifica sempre tutte le risorse dell'adattatore necessarie per avviare l'adapter.

Il nome HwStorFindAdapter è solo un segnaposto. Il prototipo effettivo di questa routine è definito in Storport.h come segue:

typedef
ULONG
HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );

Nella maggior parte dei casi StorPort chiama la routine HwStorFindAdapter in IRQL == PASSIVE_LEVEL senza acquisire blocchi di spin. Il caso di eccezione è quando il miniport non supporta la chiamata di HwStorAdaptorControl con il tipo di controllo SCSIRestartAdapter . In questa situazione StorPort reinizializzerà invece l'adattatore chiamando sia HwStorFindAdapter che HwStorInitialize. Quando si tratta del caso, HwStorFindAdapter viene chiamato irQL == DISPATCH_LEVEL. Inoltre, quando in modalità dump , HwStorFindAdapter viene chiamato in IRQL == HIGH_LEVEL.

Esempio

Per definire una funzione callback HwStorFindAdapter , è prima necessario fornire una dichiarazione di funzione che identifica il tipo di funzione di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback HwStorFindAdapter denominata MyHwFindAdapter, usare il tipo di HW_FIND_ADAPTER come illustrato in questo esempio di codice:

HW_FIND_ADAPTER MyHwFindAdapter;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
ULONG
MyHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );
  {
      ...
  }

Il tipo di funzione HW_FIND_ADAPTER è definito nel file di intestazione Storport.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione HW_FIND_ADAPTER nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver Storport. Per informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione Storport.h (include Storport.h)
IRQL PASSIVE_LEVEL (vedere la sezione Osservazioni).

Vedi anche

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError