Bagikan melalui


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:

  1. IRQL dinaikkan ke nilai SynchronizeIrql yang ditentukan dalam panggilan ke IoConnectInterrupt atau IoConnectInterruptEx.
  2. 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).
  3. Rutinitas SynchCritSection yang ditentukan dipanggil dengan nilai SynchronizeContext sebagai parameternya.
Jika ISR berjalan di DIRQL >= DISPATCH_LEVEL, rutinitas SynchCritSection berjalan pada DIRQL yang sama dan karenanya harus berjalan sesingkat mungkin untuk menghindari penundaan tugas prioritas tinggi lainnya.

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)

Lihat juga

IoConnectInterrupt

IoConnectInterruptEx