HW_DPC_ROUTINE funzione di callback (storport.h)

La routine HwStorDpcRoutine è una routine posticipata per l'esecuzione in DISPATCH IRQL tramite il meccanismo DPC (deferred procedure call).

Sintassi

HW_DPC_ROUTINE HwDpcRoutine;

void HwDpcRoutine(
  PSTOR_DPC Dpc,
  PVOID HwDeviceExtension,
  PVOID SystemArgument1,
  PVOID SystemArgument2
)
{...}

Parametri

Dpc

Puntatore a un contesto DPC Storport.

HwDeviceExtension

Puntatore all'estensione del dispositivo per adattatore.

SystemArgument1

Puntatore alle informazioni fornite dal chiamante.

SystemArgument2

Puntatore alle informazioni fornite dal chiamante.

Valore restituito

nessuno

Osservazioni

Quando un driver miniport chiama StorPortInitializeDpc per inizializzare un DPC, deve caricare il parametro HwDpcRoutine della routine StorPortInitializeDpc con un puntatore alla routine HwStorDpcRoutine .

Qualsiasi istanza specifica di una routine DPC è garantita la sincronizzazione con altre istanze della routine DPC. Una routine DPC può sincronizzarsi con la routine HwStorStartIo o con la routine HwStorInterrupt acquisendo il blocco di spin appropriato con una chiamata a StorPortAcquireSpinLock. Per altre informazioni sulla gestione dei blocchi di spin all'interno di routine DPC, vedere StorPortIssueDpc.

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

typedef
BOOLEAN
HW_DPC_ROUTINE (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );

Il driver di porta chiama la routine HwStorDpcRoutine in DISPATCH IRQL.

Esempio

Per definire una funzione di callback HwStorDpcRoutine , è prima necessario specificare 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 HwStorDpcRoutine denominata MyHwDpcRoutine, usare il tipo di HW_DPC_ROUTINE come illustrato in questo esempio di codice:

HW_DPC_ROUTINE MyHwDpcRoutine;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );
  {
      ...
  }

Il tipo di funzione HW_DPC_ROUTINE è 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_DPC_ROUTINE 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 DISPATCH_LEVEL (vedere la sezione Osservazioni).

Vedi anche

Quando un driver miniport chiama per inizializzare un DPC, deve caricare il parametro HwDpcRoutine della routine StorPortInitializeDpc con un puntatore alla routine HwStorDpcRoutine .

Qualsiasi istanza specifica di una routine DPC è garantita la sincronizzazione con altre istanze della routine DPC. Una routine DPC può sincronizzarsi con la routine o con la routine acquisendo il blocco di spin appropriato con una chiamata a . Per altre informazioni sulla gestione dei blocchi di spin all'interno di routine DPC, vedere .

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc