Função KeSynchronizeExecution (wdm.h)
A rotina KeSynchronizeExecution sincroniza a execução da rotina especificada com a ISR (rotina de serviço de interrupção) atribuída a um conjunto de um ou mais objetos de interrupção.
Sintaxe
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
Parâmetros
[in, out] Interrupt
Um ponteiro para um conjunto de objetos de interrupção. O chamador obteve esse ponteiro da rotina IoConnectInterrupt ou IoConnectInterruptEx .
[in] SynchronizeRoutine
Especifica uma rotina SynchCritSection fornecida pelo chamador cuja execução deve ser sincronizada com a execução do ISR atribuído aos objetos de interrupção.
[in, optional] SynchronizeContext
Um ponteiro para um valor de contexto fornecido pelo chamador a ser passado para a rotina SynchCritSection quando ele for chamado.
Retornar valor
KeSynchronizeExecution retornará TRUE se a operação for bem-sucedida. Caso contrário, retornará FALSE.
Comentários
Quando essa rotina é chamada, ocorre o seguinte:
- O IRQL é gerado para o valor SynchronizeIrql especificado na chamada para IoConnectInterrupt ou IoConnectInterruptEx.
- O acesso ao SynchronizeContext é sincronizado com o ISR atribuído adquirindo o bloqueio de rotação do objeto de interrupção associado (ou objeto de evento do sistema, no caso de um ISR executado em PASSIVE_LEVEL).
- A rotina SynchCritSection especificada é chamada com o valor SynchronizeContext como seu parâmetro.
Os chamadores de KeSynchronizeExecution devem estar em execução em IRQL <= DIRQL; ou seja, em um IRQL menor ou igual ao valor de SynchronizeIrql que o chamador especificou quando registrou seu ISR com IoConnectInterrupt ou IoConnectInterruptEx.
Começando com Windows 8, um driver pode chamar KeSynchronizeExecution para sincronizar a execução de uma rotina SynchCritSection com um ISR executado em IRQL = PASSIVE_LEVEL. Em versões anteriores do Windows, KeSynchronizeExecution só pode sincronizar a execução com um ISR executado em IRQL >= DISPATCH_LEVEL. Para obter mais informações, consulte Usando Passive-Level rotinas de serviço de interrupção.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL (consulte a seção Comentários) |