MINIPORT_SYNCHRONIZE_INTERRUPT funzione di callback (ndis.h)
Un driver miniport deve fornire un gestore MiniportSynchronizeInterrupt se qualsiasi funzione driver eseguita in meno di DIRQL condivide le risorse con la funzione MiniportInterrupt .
Per le interruzioni segnalate dal messaggio, il driver miniport fornisce un gestore MiniportSynchronizeMessageInterrupt se qualsiasi funzione driver eseguita in meno di DIRQL condivide le risorse per un interruzione del messaggio segnalato con la funzione MiniportMessageInterrupt .
Sintassi
MINIPORT_SYNCHRONIZE_INTERRUPT MiniportSynchronizeInterrupt;
BOOLEAN MiniportSynchronizeInterrupt(
[in] NDIS_HANDLE SynchronizeContext
)
{...}
Parametri
[in] SynchronizeContext
Handle per un'area di contesto fornita quando la funzione miniportxxx o interna del driver miniport Funzione NdisMSynchronizeWithInterruptEx .
Valore restituito
MiniportSynchronizeInterrupt restituisce un valore booleano con un significato determinato dal driver. NDIS restituisce lo stesso valore quando NDIS restituisce da NdisMSynchronizeWithInterruptEx.
Commenti
Per sincronizzare l'accesso alle risorse condivise con MiniportInterrupt, le funzioni del driver con priorità inferiore devono chiamare Funzione NdisMSynchronizeWithInterruptEx . La funzione MiniportSynchronizeInterrupt del driver accede alle risorse condivise in DIRQL. La chiamata a NdisMSynchronizeWithInterruptEx impedisce le condizioni di gara e i deadlock in tale miniport driver.
Le funzioni driver con priorità inferiore che condividono le risorse tra di loro (ma non con alcuna funzione eseguita in DIRQL) devono usare un blocco spin per proteggere tali risorse condivise.
MiniportSynchronizeInterrupt viene eseguito all'indirizzo DIRQL assegnato quando la funzione MiniportInitializeEx del driver chiama la Funzione NdisMRegisterInterruptEx . Come qualsiasi funzione driver eseguita in DIRQL, MiniportSynchronizeInterrupt deve restituire il controllo al chiamante il più rapidamente possibile e può chiamare solo quelle funzioni NdisXxx sicure per chiamare in qualsiasi IRQL.
Esempi
Per definire una funzione MiniportSynchronizeInterrupt , è prima necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione usando i tipi di funzione 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 funzione MiniportSynchronizeInterrupt denominata "MySynchronizeInterrupt ", usare il tipo MINIPORT_SYNCHRONIZE_INTERRUPT come illustrato nell'esempio di codice seguente:
MINIPORT_SYNCHRONIZE_INTERRUPT MySynchronizeInterrupt;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
BOOLEAN
MySynchronizeInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Per definire una funzione MiniportSynchronizeMessageInterrupt per gli interruzioni segnalati dal messaggio, usare il tipo di MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT come illustrato nell'esempio di codice seguente:
MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT MySynchronizeMessageInterrupt;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
BOOLEAN
MySynchronizeMessageInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
I tipi di funzione MINIPORT_SYNCHRONIZE_INTERRUPT e MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT sono definiti nel file di intestazione Ndis.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 alle definizioni delle funzioni. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione 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 NDIS.
Per informazioni su Use_decl_annotations, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato in NDIS 6.0 e versioni successive. |
Piattaforma di destinazione | Windows |
Intestazione | ndis.h (includere Ndis.h) |
IRQL | Vedere La sezione Osservazioni |