NDIS_TIMER_FUNCTION funzione di callback (ndis.h)
La funzione di callback NdisTimerFunction viene chiamata da NDIS dopo che un driver imposta un timer one-shot o periodico quando viene attivato un timer.
Sintassi
NDIS_TIMER_FUNCTION NdisTimerFunction;
void NdisTimerFunction(
[in] PVOID SystemSpecific1,
[in] PVOID FunctionContext,
[in] PVOID SystemSpecific2,
[in] PVOID SystemSpecific3
)
{...}
Parametri
[in] SystemSpecific1
Puntatore a un valore specifico del sistema riservato per l'uso del sistema.
[in] FunctionContext
Puntatore a un'area di contesto fornita dal driver passata alla funzione NdisSetTimerObject . Se il parametro FunctionContext di NdisSetTimerObject era NULL, NDIS usa il valore predefinito specificato nel driver specificato nell'oggetto NDIS_TIMER_CHARACTERISTICS struttura. Il driver ha passato la struttura alla funzione NdisAllocateTimerObject per inizializzare l'oggetto timer associato.
[in] SystemSpecific2
Puntatore a un valore specifico del sistema riservato per l'uso del sistema.
[in] SystemSpecific3
Puntatore a un valore specifico del sistema riservato per l'uso del sistema.
Valore restituito
nessuno
Osservazioni
Qualsiasi driver NDIS può avere una o più funzioni di callback di NdisTimerFunction . Ogni callback NdisTimerFunction deve essere associato a un oggetto timer allocato e allocato da driver diverso.
Il driver inizializza un oggetto timer allocato dal driver chiamando Funzione NdisAllocateTimerObject .
Una chiamata successiva alla funzione NdisSetTimerObject causa il callback NdisTimerFunction associato all'oggetto timer da eseguire dopo un intervallo specificato o periodicamente.
Per annullare le chiamate a NdisTimerFunction, chiamare la funzione NdisCancelTimerObject . NDIS potrebbe comunque chiamare NdisTimerFunction se il timeout è già scaduto prima della chiamata a NdisCancelTimerObject.
Se un callback di NdisTimerFunction condivide le risorse con altre funzioni driver, il driver deve sincronizzare l'accesso a tali risorse con un blocco di spin.
Esempi
Per definire una funzione NdisTimerFunction , è prima necessario specificare 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 NdisTimerFunction denominata "MyTimerCallback ", usare il tipo di NDIS_TIMER_FUNCTION come illustrato in questo esempio di codice:
NDIS_TIMER_FUNCTION MyTimerCallback;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
VOID
MyTimerCallback(
PVOID SystemSpecific1,
PVOID FunctionContext,
PVOID SystemSpecific2,
PVOID SystemSpecific3
)
{...}
Il tipo di funzione NDIS_TIMER_FUNCTION è definito 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 alla definizione della funzione. L'annotazione Use_decl_annotations garantisce che vengano usate le annotazioni applicate al tipo di funzione NDIS_TIMER_FUNCTION 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 | DISPATCH_LEVEL |