Bagikan melalui


RTL_UMS_SCHEDULER_ENTRY_POINT fungsi panggilan balik (winnt.h)

Fungsi titik entri penjadwalan mode pengguna yang ditentukan aplikasi (UMS) yang terkait dengan daftar penyelesaian UMS.

Jenis PUMS_SCHEDULER_ENTRY_POINT menentukan penunjuk ke fungsi ini. UmsSchedulerProc adalah tempat penampung untuk nama fungsi yang ditentukan aplikasi.

Sintaks

RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;

void RtlUmsSchedulerEntryPoint(
  [in] RTL_UMS_SCHEDULER_REASON Reason,
  [in] ULONG_PTR ActivationPayload,
  [in] PVOID SchedulerParam
)
{...}

Parameter

[in] Reason

Alasan titik masuk penjadwal dipanggil. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
UmsSchedulerStartup
0
Utas penjadwal UMS dibuat. Titik masuk dipanggil dengan alasan ini setelah setiap kali EnterUmsSchedulingMode dipanggil.
UmsSchedulerThreadBlocked
1
Utas pekerja UMS diblokir.
UmsSchedulerThreadYield
2
Utas pekerja UMS yang dijalankan menghasilkan kontrol dengan memanggil fungsi UmsThreadYield .

[in] ActivationPayload

Jika parameter Alasan adalah UmsSchedulerStartup, parameter ini adalah NULL.

Jika parameter Reason adalah UmsSchedulerThreadBlocked, bit 0 dari parameter ini menunjukkan jenis aktivitas yang sedang dilayani ketika utas pekerja UMS diblokir.

Nilai Makna
0
Utas diblokir pada perangkap (misalnya, kesalahan halaman keras) atau gangguan (misalnya, panggilan prosedur asinkron).
1
Utas diblokir pada panggilan sistem.
 

Jika parameter Reason adalah UmsSchedulerThreadYield, parameter ini adalah penunjuk ke konteks utas UMS dari utas pekerja UMS yang dihasilkan.

[in] SchedulerParam

Jika parameter Reason adalah UmsSchedulerStartup, parameter ini adalah anggota SchedulerParam dari struktur UMS_SCHEDULER_STARTUP_INFO yang diteruskan ke fungsi EnterUmsSchedulingMode yang memicu panggilan titik masuk.

Jika parameter Reason adalah UmsSchedulerThreadYield parameter ini adalah parameter SchedulerParam yang diteruskan ke fungsi UmsThreadYield yang memicu panggilan titik masuk.

Jika parameter Reason adalah UmsSchedulerThreadBlocked, parameter ini adalah NULL.

Mengembalikan nilai

Tidak ada

Keterangan

Jenis penunjuk fungsi UmsSchedulerProc didefinisikan sebagai PUMS_SCHEDULER_ENTRY_POINT di WinBase.h. Jenis fungsi yang mendasar didefinisikan sebagai RTL_UMS_SCHEDULER_ENTRY_POINT di WinNT.h

Setiap utas penjadwal UMS memiliki fungsi titik entri UmsSchedulerProc terkait yang ditentukan ketika utas memanggil fungsi EnterUmsSchedulingMode . Sistem memanggil fungsi titik masuk penjadwal dengan alasan UmsSchedulerStartup ketika utas penjadwal dikonversi untuk UMS.

Selanjutnya, ketika utas pekerja UMS yang berjalan pada utas penjadwal menghasilkan atau memblokir, sistem memanggil fungsi titik masuk utas penjadwal dengan penunjuk ke konteks utas UMS dari utas pekerja.

Penjadwal aplikasi bertanggung jawab untuk memilih utas pekerja UMS berikutnya untuk dijalankan. Penjadwal menerapkan semua kebijakan yang memengaruhi eksekusi utas UMS-nya, termasuk afinitas prosesor dan prioritas utas. Misalnya, penjadwal mungkin memberikan prioritas pada utas intensif I/O, atau mungkin menjalankan utas berdasarkan urutan pertama yang dilayani. Logika ini dapat diimplementasikan dalam fungsi titik entri penjadwal atau di tempat lain dalam aplikasi.

Ketika utas pekerja UMS yang diblokir menjadi tidak diblokir, sistem mengantre utas yang tidak diblokir ke daftar penyelesaian terkait dan memberi sinyal peristiwa daftar penyelesaian. Untuk mengambil utas pekerja UMS dari daftar penyelesaian, gunakan fungsi DequeueUmsCompletionListItems .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 (hanya 64-bit) [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winnt.h (termasuk WinBase.h, Windows.h)

Lihat juga

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield