Condividi tramite


KSYNCHRONIZE_ROUTINE funzione di callback (wdm.h)

La routine SynchCritSection viene usata per accedere alle risorse hardware o ai dati del driver condivisi con la routine InterruptService di un driver.

Sintassi

KSYNCHRONIZE_ROUTINE KsynchronizeRoutine;

BOOLEAN KsynchronizeRoutine(
  [in] PVOID SynchronizeContext
)
{...}

Parametri

[in] SynchronizeContext

Informazioni sul contesto fornite dal chiamante, specificate dalla chiamata del driver a KeSynchronizeExecution.

Valore restituito

Se l'operazione della routine ha esito positivo, la routine deve restituire TRUE; in caso contrario, deve restituire FALSE. (Esito positivo e negativo di questa routine sono definiti dal driver). Il valore restituito specificato diventa il valore restituito per KeSynchronizeExecution.

Commenti

I driver devono usare routine SynchCritSection per accedere alle risorse hardware o ai dati del driver che possono essere accessibili anche da una routine InterruptService (ISR).

Il sistema chiama la routine SynchCritSection di un driver quando il driver chiama KeSynchronizeExecution. Quando un driver chiama KeSynchronizeExecution, specifica l'indirizzo di una routine SynchCritSection , informazioni sul contesto per la routine e un puntatore a oggetti di interruzione. La routine KeSynchronizeExecution acquisisce il blocco spin dell'oggetto interrupt, quindi chiama la routine SynchCritSection .

La routine SynchCritSection di un driver viene eseguita nello stesso IRQL dell'ISR con cui è associata. In particolare, viene eseguito in alcune operazioni DIRQL assegnate dal sistema, come specificato dal parametro SyncIrql a IoConnectInterrupt. Altri dispositivi, con valori DIRQL più elevati, possono interrompere una routine SynchCritSection .

Esempio

Per definire una routine di callback SynchCritSection , è prima necessario specificare una dichiarazione di funzione che identifica il tipo di routine 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 SynchCritSection denominata MySynchCritSection, usare il tipo di KSYNCHRONIZE_ROUTINE come illustrato nell'esempio di codice seguente:

KSYNCHRONIZE_ROUTINE MySynchCritSection;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
BOOLEAN
  MySynchCritSection(
    PVOID  SynchronizeContext
    )
  {
      // Function body
  }

Il tipo di funzione KSYNCHRONIZE_ROUTINE è definito nel file di intestazione Wdm.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 usate le annotazioni applicate al tipo di funzione KSYNCHRONIZE_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 WDM. Per informazioni su _Use_decl_annotations_, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chiamato in DIRQL (vedere la sezione Osservazioni).