Funzione KeSynchronizeExecution (wdm.h)
La routine KeSynchronizeExecution sincronizza l'esecuzione della routine specificata con la routine di interruzione (ISR) assegnata a un set di uno o più oggetti di interruzione.
Sintassi
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
Parametri
[in, out] Interrupt
Puntatore a un set di oggetti di interruzione. Il chiamante ha ottenuto questo puntatore dalla routine IoConnectInterrupt o IoConnectInterruptEx.
[in] SynchronizeRoutine
Specifica una routine SynchCritSection fornita dal chiamante la cui esecuzione deve essere sincronizzata con l'esecuzione dell'ISR assegnata agli oggetti di interruzione.
[in, optional] SynchronizeContext
Puntatore a un valore di contesto fornito dal chiamante da passare alla routine SynchCritSection quando viene chiamata.
Valore restituito
KeSynchronizeExecution restituisce TRUE se l'operazione ha esito positivo. In caso contrario, restituisce FALSE.
Commenti
Quando questa routine viene chiamata, si verifica quanto segue:
- Il valore IRQL viene generato al valore SyncIrql specificato nella chiamata a IoConnectInterrupt o IoConnectInterruptEx.
- L'accesso a SyncContext viene sincronizzato con l'ISR assegnato acquisendo il blocco di spin dell'oggetto di interruzione associato (o l'oggetto evento di sistema, nel caso di un ISR in esecuzione in PASSIVE_LEVEL).
- La routine SynchCritSection specificata viene chiamata con il valore SyncContext come parametro.
I chiamanti di KeSynchronizeExecution devono essere in esecuzione in IRQL = DIRQL, ovvero in un irQL minore o uguale al valore del valore SyncIrql<specificato quando ha registrato l'ISR con IoConnectInterrupt o IoConnectInterruptEx.
A partire da Windows 8, un driver può chiamare KeSynchronizeExecution per sincronizzare l'esecuzione di una routine SynchCritSection con un ISR eseguito in IRQL = PASSIVE_LEVEL. Nelle versioni precedenti di Windows , KeSynchronizeExecution può sincronizzare l'esecuzione solo con un ISR eseguito in IRQL >= DISPATCH_LEVEL. Per altre informazioni, vedere Uso di routine del servizio di interruzione Passive-Level.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL (vedere la sezione Osservazioni) |