Condividi tramite


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

Vedere anche

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock