Função ExAllocateTimer (wdm.h)
A rotina ExAllocateTimer aloca e inicializa um objeto de temporizador.
Sintaxe
PEX_TIMER ExAllocateTimer(
[in, optional] PEXT_CALLBACK Callback,
[in, optional] PVOID CallbackContext,
[in] ULONG Attributes
);
Parâmetros
[in, optional] Callback
Um ponteiro para uma rotina de retorno de chamada ExTimerCallback implementada pelo driver. O sistema operacional chama essa rotina quando o temporizador expira. Esse parâmetro é opcional e pode ser NULL se nenhuma rotina de retorno de chamada for necessária.
[in, optional] CallbackContext
Um valor de contexto para a rotina de retorno de chamada apontada pelo parâmetro Callback . O sistema operacional passa esse valor como um parâmetro para a rotina de retorno de chamada ExTimerCallback , se for especificado. Esse parâmetro normalmente é um ponteiro para uma estrutura definida pelo chamador que contém informações de contexto usadas pela rotina de retorno de chamada. Esse parâmetro é opcional e pode ser definido como NULL se nenhuma informação de contexto for necessária.
[in] Attributes
Os atributos do temporizador. Defina esse parâmetro como zero ou como bit a bit-OR de um ou mais dos bits de sinalizador do temporizador a seguir.
Bit do sinalizador do temporizador | Descrição |
---|---|
EX_TIMER_HIGH_RESOLUTION | Temporizador de alta resolução. Torne o temporizador mais preciso usando um relógio de resolução mais alta para conduzir o temporizador. |
EX_TIMER_NO_WAKE | Temporizador sem ativação. Faça com que o temporizador atrase a expiração do processador até que o tempo de expiração do temporizador mais sua tolerância a atrasos seja excedido. |
EX_TIMER_NOTIFICATION | Temporizador de notificação. Torne o temporizador um temporizador de notificação em vez de um temporizador de sincronização. Se esse sinalizador não estiver definido, o temporizador será um temporizador de sincronização. |
O bit de sinalizador EX_TIMER_NOTIFICATION pode ser definido independentemente de quais outros bits de sinalizador estão definidos.
Os bits de sinalizador EX_TIMER_HIGH_RESOLUTION e EX_TIMER_NO_WAKE são mutuamente exclusivos. Se o chamador definir esses dois bits de sinalizador, o bug de rotina verificará.
Para obter mais informações sobre atributos de temporizador, consulte Comentários.
Retornar valor
Essa rotina retorna um ponteiro para uma estrutura EX_TIMER , se a chamada for bem-sucedida. Essa estrutura é o objeto de temporizador que a rotina alocou e inicializou. Se a chamada falhar, a rotina retornará NULL.
Comentários
Essa rotina retorna um ponteiro para o novo objeto de temporizador. Para usar o temporizador, o driver de chamada fornece esse ponteiro em chamadas subsequentes para as rotinas ExSetTimer, ExCancelTimer e ExDeleteTimer . Se o driver fornecer um ponteiro para uma rotina de retorno de chamada ExTimerCallback como um parâmetro de entrada para a rotina ExAllocateTimer , o sistema operacional passará esse objeto de temporizador como um parâmetro de entrada para a rotina ExTimerCallback .
Um temporizador pode ser um temporizador de notificação ou um temporizador de sincronização. Quando um temporizador de notificação é sinalizado, todos os threads de espera têm sua espera atendida. O estado desse temporizador permanece sinalizado até que seja redefinido explicitamente. Quando um temporizador de sincronização expira, seu estado é definido como sinalizado até que um único thread de espera seja liberado. Em seguida, o temporizador é redefinido para o estado não sinalizado.
Se o bit de sinalizador EX_TIMER_HIGH_RESOLUTION estiver definido em Atributos, o sistema operacional aumentará a resolução do relógio do sistema, conforme necessário, para que os horários em que o temporizador expire mais precisamente correspondam aos tempos de expiração nominais especificados nos parâmetros DueTime e Period para a rotina ExSetTimer . Para obter mais informações, confira Temporizadores de alta resolução.
Se o bit do sinalizador EX_TIMER_NO_WAKE estiver definido em Atributos, o temporizador evitará desnecessariamente acordar o processador de um estado de baixa potência. Para obter mais informações, consulte No-Wake Timers.
ExAllocateTimer aloca o armazenamento para o objeto de temporizador. Quando esse objeto não é mais necessário, o chamador é responsável por liberar esse objeto chamando a rotina ExDeleteTimer .
O parâmetro De retorno de chamada é opcional. Um driver que não fornece uma rotina ExTimerCallback pode, em vez disso, iniciar uma operação de espera no objeto de temporizador. Um thread de driver pode chamar uma rotina como KeWaitForSingleObject ou KeWaitForMultipleObjects para aguardar a expiração do temporizador. Quando o temporizador expira, o objeto de temporizador é sinalizado.
Para obter mais informações, consulte Rotinas exXxxTimer e objetos EX_TIMER.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 8.1. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | Ntoskrnl.lib |
IRQL | <= DISPATCH_LEVEL |