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 é chamado.
Valor retornado
KeSynchronizeExecution retornará TRUE se a operação for bem-sucedida. Caso contrário, ele 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 de objeto de interrupção associado (ou objeto de evento do sistema, no caso de um ISR que é 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 do valor SynchronizeIrql especificado pelo chamador 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 que é 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
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 seção Comentários) |