Condividi tramite


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.

Nota È necessario dichiarare la funzione usando il tipo di NDIS_TIMER_FUNCTION . Per altre informazioni, vedere la sezione Esempi seguenti.
 

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

Vedi anche

Inizializzazione dei timer NDIS

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

Timer di manutenzione

Impostazione e cancellazione dei timer