Función KsAllocateDefaultClockEx (ks.h)
La función KsAllocateDefaultClockEx asigna e inicializa la estructura de reloj predeterminada.
Sintaxis
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
);
Parámetros
[out] DefaultClock
Especifica la estructura de reloj compartida asignada por el autor de la llamada. La hora actual se establece en cero y el estado se establece en KSSTATE_STOP. Una vez completada correctamente esta rutina, la estructura indicada por este puntero contendrá una referencia al reloj predeterminado. Los datos devueltos deben tratarse como opacos y reservados para uso del sistema.
[in, optional] Context
Opcionalmente, contiene el contexto de las instalaciones de tiempo alternativas. Debe establecerse si se usa un temporizador o una función de tiempo correlacionada.
[in, optional] SetTimer
Opcionalmente, contiene un puntero a una función KStrSetTimer definida por el controlador que se usará para generar devoluciones de llamada del temporizador DPC basadas en un tiempo de presentación. Si se establece, la función se usará para establecer temporizadores basados en diferencias en el tiempo de presentación actual para generar notificaciones de eventos. Si proporciona una función KStrSetTimer para establecer temporizadores, también debe proporcionar una función KStrCancelTimer correspondiente. Pase NULL en este parámetro si la función KeSetTimerEx predeterminada se usará para aproximarse a la próxima hora de notificación. Normalmente, este parámetro solo se establecería si también se usaba una función KStrCorrelatedTime . La función KStrSetTimer debe tener las mismas características que KeSetTimerEx.
[in, optional] CancelTimer
Opcionalmente, contiene un puntero a una función KStrCancelTimer definida por el controlador para cancelar devoluciones de llamada del temporizador pendientes. Si proporciona una función KStrCancelTimer para cancelar temporizadores, también debe proporcionar una función KStrSetTimer correspondiente. Pase NULL en este parámetro si la función KeCancelTimer predeterminada se va a usar para cancelar temporizadores. La función KStrCancelTimer debe tener las mismas características que KeCancelTimer.
[in, optional] CorrelatedTime
Opcionalmente, contiene un puntero a una función KStrCorrelatedTime definida por el controlador para recuperar la presentación y el tiempo físico de una manera correlacionada. Esto permite al propietario del reloj determinar completamente la hora actual. Pase NULL si la función KeQueryPerformanceCounter predeterminada se usará para regular la progresión del tiempo.
[in, optional] Resolution
Opcionalmente, contiene una granularidad alternativa o un factor de error para el reloj. Esto solo se puede usar si se proporciona un temporizador alternativo o una función de tiempo correlacionada. Se puede especificar una granularidad alternativa si se usa un tiempo correlacionado alternativo; de lo contrario, el elemento structure debe ser cero. Se puede especificar un error alternativo si se usa un temporizador alternativo; de lo contrario, el elemento structure debe ser cero.
[in] Flags
Reservado, establecido en cero.
Valor devuelto
La función KsAllocateDefaultClockEx devuelve STATUS_SUCCESS si se ejecuta correctamente o si se produce un error de memoria si no se realiza correctamente.
Comentarios
El elemento DefaultClock.ReferenceCount interno se inicializa en uno mediante la función KsAllocateDefaultClock . El elemento se incrementa y disminuye a medida que cada DPC de notificación se pone en cola y se completa. Cuando se va a liberar la estructura, el elemento se usa para determinar si el propietario del reloj debe liberar la estructura o si un DPC pendiente debe liberarlo de forma asincrónica.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ks.h (incluye Ks.h) |
Library | Ks.lib |
IRQL | PASSIVE_LEVEL |