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 IoConnectInterrupt ou rotina de 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 de SynchCritSection quando ele for chamado.
Valor de retorno
KeSynchronizeExecution retornará verdadeiro se a operação for bem-sucedida. Caso contrário, ele retornará FALSE.
Observações
Quando essa rotina é chamada, ocorre o seguinte:
- O IRQL é gerado para o valor SynchronizeIrql especificado na chamada para IoConnectInterrupt ou IoConnectInterruptEx.
- O acesso a 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 executado em PASSIVE_LEVEL).
- A rotina de SynchCritSection especificada é chamada com o valor SynchronizeContext como seu parâmetro.
Os chamadores de KeSynchronizeExecution devem estar em execução no IRQL <= DIRQL; ou seja, em um IRQL menor ou igual ao valor do SynchronizeIrql que o chamador especificou quando registrou seu ISR com IoConnectInterrupt ou IoConnectInterruptEx.
A partir do Windows 8, um driver pode chamar KeSynchronizeExecution para sincronizar a execução de uma rotina de synchCritSection com um ISR executado em IRQL = PASSIVE_LEVEL. Em versões anteriores do Windows, KeSynchronizeExecution pode sincronizar a execução somente com um ISR executado em IRQL >= DISPATCH_LEVEL. Para obter mais informações, consulte Usando rotinas de serviço de interrupção de Passive-Level.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 2000. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | <= DIRQL (consulte a seção Comentários) |