Funzione KsAllocateDefaultClockEx (ks.h)
La funzione KsAllocateDefaultClockEx alloca e inizializza la struttura di clock predefinita.
Sintassi
KSDDKAPI NTSTATUS KsAllocateDefaultClockEx(
[out] PKSDEFAULTCLOCK *DefaultClock,
[in, optional] PVOID Context,
[in, optional] PFNKSSETTIMER SetTimer,
[in, optional] PFNKSCANCELTIMER CancelTimer,
[in, optional] PFNKSCORRELATEDTIME CorrelatedTime,
[in, optional] const KSRESOLUTION *Resolution,
[in] ULONG Flags
);
Parametri
[out] DefaultClock
Specifica la struttura di clock predefinita condivisa allocata dal chiamante. L'ora corrente è impostata su zero e lo stato è impostato su KSSTATE_STOP. Al termine di questa routine, la struttura indicata da questo puntatore conterrà un riferimento all'orologio predefinito. I dati restituiti devono essere considerati opachi e riservati per l'uso del sistema.
[in, optional] Context
Facoltativamente, contiene il contesto delle strutture temporali alternative. Questa impostazione deve essere impostata se viene usata una funzione di tempo timer o correlata.
[in, optional] SetTimer
Facoltativamente, contiene un puntatore a una funzione di definita dal driver KStrSetTimer da usare per generare callback timer DPC in base a un'ora di presentazione. Se questa opzione è impostata, la funzione verrà usata per impostare timer basati su delta sull'ora di presentazione corrente per generare notifiche degli eventi. Se si specifica una funzione KStrSetTimer per impostare i timer, è necessario specificare anche una funzione KStrCancelTimer corrispondente. Passare NULL in questo parametro se la funzione keSetTimerEx predefinita deve essere utilizzata per approssimare la notifica successiva. Questo parametro viene in genere impostato solo se è stata usata anche una funzione di KStrCorrelatedTime. La funzione KStrSetTimer deve avere le stesse caratteristiche di KeSetTimerEx.
[in, optional] CancelTimer
Facoltativamente contiene un puntatore a una funzione di KStrCancelTimer definita dal driver per annullare i callback timer in sospeso. Se si specifica una funzione di KStrCancelTimer per annullare i timer, è necessario specificare anche una funzione KStrSetTimer corrispondente. Passare NULL in questo parametro se la funzione predefinita KeCancelTimer deve essere usata per annullare i timer. La funzione KStrCancelTimer deve avere le stesse caratteristiche di KeCancelTimer.
[in, optional] CorrelatedTime
Facoltativamente, contiene un puntatore a un driver definito funzione KStrCorrelatedTime per recuperare sia la presentazione che l'ora fisica in modo correlato. In questo modo il proprietario dell'orologio può determinare completamente l'ora corrente. Passare NULL se la funzione predefinita KeQueryPerformanceCounter deve essere usata per regolare la progressione del tempo.
[in, optional] Resolution
Facoltativamente, contiene una granularità alternativa e/o un fattore di errore per l'orologio. Questa opzione può essere utilizzata solo se viene fornita una funzione temporale alternativa o correlata. È possibile specificare una granularità alternativa se viene utilizzato un tempo correlato alternativo, altrimenti l'elemento della struttura deve essere zero. È possibile specificare un errore alternativo se viene utilizzato un timer alternativo; in caso contrario, l'elemento della struttura deve essere zero.
[in] Flags
Riservato, impostato su zero.
Valore restituito
La funzione KsAllocateDefaultClockEx restituisce STATUS_SUCCESS in caso di esito positivo o un errore di memoria in caso di esito negativo.
Osservazioni
L'elemento DefaultClock.ReferenceCount interno viene inizializzato in uno dalla funzione KsAllocateDefaultClock. L'elemento viene incrementato e decrementato man mano che ogni notifica DPC viene accodata e completata. Quando la struttura deve essere liberata, l'elemento viene utilizzato per determinare se il proprietario dell'orologio deve liberare la struttura o se un DPC in sospeso deve liberarlo in modo asincrono.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |
IRQL | PASSIVE_LEVEL |