Fungsi KeSynchronizeExecution (wdm.h)
Rutinitas KeSynchronizeExecution menyinkronkan eksekusi rutinitas yang ditentukan dengan rutinitas layanan interupsi (ISR) yang ditetapkan ke satu set atau beberapa objek interupsi.
Sintaks
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
Parameter
[in, out] Interrupt
Penunjuk ke sekumpulan objek interupsi. Penelepon memperoleh pointer ini dari rutinitas IoConnectInterrupt atau IoConnectInterruptEx .
[in] SynchronizeRoutine
Menentukan rutinitas SynchCritSection yang disediakan penelepon yang eksekusinya akan disinkronkan dengan eksekusi ISR yang ditetapkan ke objek interupsi.
[in, optional] SynchronizeContext
Penunjuk ke nilai konteks yang disediakan penelepon untuk diteruskan ke rutinitas SynchCritSection saat dipanggil.
Mengembalikan nilai
KeSynchronizeExecution mengembalikan TRUE jika operasi berhasil. Jika tidak, ia mengembalikan FALSE.
Keterangan
Ketika rutinitas ini dipanggil, hal-hal berikut terjadi:
- IRQL dinaikkan ke nilai SynchronizeIrql yang ditentukan dalam panggilan ke IoConnectInterrupt atau IoConnectInterruptEx.
- Akses ke SynchronizeContext disinkronkan dengan ISR yang ditetapkan dengan memperoleh kunci putar objek interupsi terkait (atau objek peristiwa sistem, dalam kasus ISR yang berjalan pada PASSIVE_LEVEL).
- Rutinitas SynchCritSection yang ditentukan dipanggil dengan nilai SynchronizeContext sebagai parameternya.
Penelepon KeSynchronizeExecution harus berjalan di IRQL <= DIRQL; yaitu, pada IRQL yang kurang dari atau sama dengan nilai SynchronizeIrql yang ditentukan pemanggil ketika mendaftarkan ISR-nya dengan IoConnectInterrupt atau IoConnectInterruptEx.
Dimulai dengan Windows 8, driver dapat memanggil KeSynchronizeExecution untuk menyinkronkan eksekusi rutinitas SynchCritSection dengan ISR yang berjalan di IRQL = PASSIVE_LEVEL. Di versi Windows yang lebih lama, KeSynchronizeExecution hanya dapat menyinkronkan eksekusi dengan ISR yang berjalan di IRQL >= DISPATCH_LEVEL. Untuk informasi selengkapnya, lihat Menggunakan Rutinitas Layanan Interupsi Passive-Level.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 2000. |
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL (lihat bagian Keterangan) |