IO_CSQ_RELEASE_LOCK funzione di callback (wdm.h)
La routine CsqReleaseLock viene usata dal sistema per rilasciare il blocco acquisito tramite CsqAcquireLock.
Sintassi
IO_CSQ_RELEASE_LOCK IoCsqReleaseLock;
void IoCsqReleaseLock(
[in] PIO_CSQ Csq,
[in] KIRQL Irql
)
{...}
Parametri
[in] Csq
Puntatore alla struttura IO_CSQ per la coda IRP annullata.
[in] Irql
Specifica un valore IRQL. Questo è il valore archiviato da CsqAcquireLock al momento dell'acquisizione del blocco.
Valore restituito
nessuno
Osservazioni
Il driver specifica la routine CsqReleaseLock per una coda IRP annullata quando inizializza la struttura di IO_CSQ della coda. Il driver specifica la routine come parametro CsqReleaseLock di IoCsqInitialize o IoCsqInitializeEx quando inizializza IO_CSQ. Per altre informazioni, vedere Cancel-Safe IRP Queues.For more information, see Cancel-Safe IRP Queues.
Il sistema chiama questa funzione per rilasciare un blocco acquisito usando CsqAcquireLock.
Se il driver usa un blocco spin per implementare il blocco per la coda, deve archiviare l'IRQL corrente quando acquisisce il blocco e specificare il runtime di integrazione archiviato quando rilascia il blocco. La routine CsqAcquireLock archivia l'IRQL corrente e il sistema passa il valore archiviato come parametro Irql aCsqReleaseLock. In caso contrario, il driver può ignorare il parametro Irql . Per informazioni sui blocchi di rotazione, vedere Spin Locks.For information about spin locks, see Spin Locks.
I driver possono usare qualsiasi meccanismo di blocco per bloccare la coda, ad esempio mutex. Per altre informazioni sui mutex, vedere Oggetti Mutex.
Esempio
Per definire una routine di callback CsqReleaseLock , è innanzitutto necessario fornire 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 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 CsqReleaseLock denominata MyCsqReleaseLock
, usare il tipo di IO_CSQ_RELEASE_LOCK, come illustrato nell'esempio di codice seguente:
IO_CSQ_RELEASE_LOCK MyCsqReleaseLock;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyCsqReleaseLock(
PIO_CSQ Csq,
KIRQL Irql
)
{
// Function body
}
Il tipo di funzione IO_CSQ_RELEASE_LOCK è 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 utilizzate le annotazioni applicate al tipo di funzione IO_CSQ_RELEASE_LOCK nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione 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) |