Condividi tramite


HW_RESET_BUS funzione di callback (storport.h)

La routine HwStorResetBus viene chiamata dal driver della porta per cancellare le condizioni di errore.

Sintassi

HW_RESET_BUS HwResetBus;

BOOLEAN HwResetBus(
  PVOID DeviceExtension,
  ULONG PathId
)
{...}

Parametri

DeviceExtension

Puntatore all'area di archiviazione del driver miniport per ogni area di archiviazione HBA.

PathId

Identifica il bus SCSI da reimpostare.

Valore restituito

Se il bus viene reimpostato correttamente, HwStorResetBus restituisce TRUE.

Commenti

Il nome HwStorResetBus è solo un segnaposto. Il prototipo effettivo di questa routine viene definito in Storport.h come indicato di seguito:

typedef
BOOLEAN
HW_RESET_BUS (
  _In_ PVOID  DeviceExtension,
  _In ULONG  PathId
  );

Il driver di porta sospende tutte le code di I/O del dispositivo per l'adattatore e quindi chiama la routine HwStorResetBus in IRQL DISPATCH_LEVEL dopo aver acquisito il blocco di selezione StartIo. Un driver miniport è responsabile del completamento degli SRB ricevuti da HwStorStartIo per PathId durante questa routine e l'impostazione del relativo stato su SRB_STATUS_BUS_RESET, se necessario.

Oltre al blocco di selezione StartIo acquisito e successivamente rilasciato dopo la restituzione di HwStorResetBus , se il miniport ha richiesto il supporto di più canali tramite PERF_CONFIGURATION_DATA, verranno acquisiti tutti i token del canale e, al ritorno del callback, rilasciato. Ciò garantisce che nessun I/O venga inviato a HwStorStartIo durante la fase di reimpostazione del bus.

Esempio

Per definire una funzione di callback HwStorResetBus , è innanzitutto 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 tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback HwStorResetBus denominata MyHwResetBus, usare il tipo di HW_RESET_BUS , come illustrato nell'esempio di codice seguente:

HW_RESET_BUS MyHwResetBus;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
BOOLEAN
MyHwResetBus (
  _In_ PVOID  DeviceExtension,
  _In_ ULONG  PahtId
  );
  {
      ...
  }

Il tipo di funzione HW_RESET_BUS è definito nel file di intestazione Storport.h. Per identificare in modo più accurato gli errori quando si eseguono gli 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 utilizzate le annotazioni applicate al tipo di funzione HW_RESET_BUS 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 sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

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