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 timer o temporale correlata.

[in, optional] SetTimer

Facoltativamente, contiene un puntatore a una funzione KStrSetTimer definita dal driver da usare per generare callback timer DPC in base a un'ora di presentazione. Se questa impostazione è impostata, la funzione verrà usata per impostare i timer in base ai 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 usata per approssimare l'ora di notifica successiva. Questo parametro viene normalmente impostato solo se è stata usata anche una funzione KStrCorrelatedTime . La funzione KStrSetTimer deve avere le stesse caratteristiche di KeSetTimerEx.

[in, optional] CancelTimer

Facoltativamente, contiene un puntatore a una funzione KStrCancelTimer definita dal driver da usare per annullare i callback timer in sospeso. Se si specifica una funzione KStrCancelTimer per annullare i timer, è necessario specificare anche una funzione KStrSetTimer corrispondente. Passare NULL in questo parametro se la funzione KeCancelTimer predefinita 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 una funzione KStrCorrelatedTime definita dal driver per recuperare sia l'ora fisica che la presentazione in modo correlato. In questo modo il proprietario dell'orologio può determinare completamente l'ora corrente. Passare NULL se la funzione KeQueryPerformanceCounter predefinita deve essere usata per regolare l'avanzamento 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, altrimenti 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.

Commenti

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 usato per determinare se il proprietario dell'orologio deve liberare la struttura o se un DPC in sospeso deve liberarlo in modo asincrono.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib
IRQL PASSIVE_LEVEL

Vedi anche

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock