Fungsi ExInitializeWorkItem (wdm.h)
ExInitializeWorkItem menginisialisasi item antrean kerja dengan konteks yang disediakan pemanggil dan rutinitas panggilan balik untuk diantrekan untuk dieksekusi saat utas pekerja sistem diberikan kontrol.
Peringatan
Gunakan rutinitas ini dengan sangat hati-hati. Lihat bagian Keterangan di bawah ini.
Sintaks
void ExInitializeWorkItem(
[in] PWORK_QUEUE_ITEM Item,
[in] PWORKER_THREAD_ROUTINE Routine,
[in] PVOID Context
);
Parameter
[in] Item
Penunjuk ke struktur WORK_QUEUE_ITEM yang dialokasikan penelepon yang akan diinisialisasi. Struktur ini harus dialokasikan dari kumpulan yang tidak disebarkan. Rutinitas panggilan balik yang ditentukan dalam parameter Rutin bertanggung jawab untuk membebaskan item kerja ini ketika tidak lagi diperlukan dengan memanggil ExFreePool atau ExFreePoolWithTag.
[in] Routine
Arahkan ke rutinitas yang ditentukan penelepon yang akan dipanggil untuk memproses item kerja. Rutinitas ini akan dipanggil dalam konteks utas sistem di IRQL PASSIVE_LEVEL. Rutinitas ini dinyatakan sebagai berikut:
VOID
(*PWORKER_THREAD_ROUTINE)(
IN PVOID Parameter
);
Parameter
Penunjuk informasi konteks yang diteruskan dalam parameter Konteks .
[in] Context
Arahkan ke informasi konteks yang disediakan pemanggil untuk diteruskan ke rutinitas panggilan balik yang ditentukan dalam parameter Rutin .
Mengembalikan nilai
Tidak ada
Keterangan
ExInitializeWorkItem menginisialisasi item kerja dengan rutinitas panggilan balik dan penunjuk konteks dan penunjuk daftar NULL yang ditentukan.
Untuk menambahkan item kerja ke antrean kerja sistem, panggil ExQueueWorkItem.
Item kerja adalah sumber daya terbatas, dan driver hanya boleh mengalokasikannya sesuai kebutuhan. Misalnya, jangan mengalokasikan item kerja di DriverEntry untuk penggunaan khusus driver.
ExInitializeWorkItem dan ExQueueWorkItem hanya dapat digunakan dalam kasus di mana item kerja yang ditentukan tidak terkait dengan objek perangkat atau tumpukan perangkat apa pun. Dalam semua kasus lainnya, driver harus menggunakan IoAllocateWorkItem, IoFreeWorkItem, dan IoQueueWorkItem, karena hanya rutinitas ini yang memastikan bahwa objek perangkat yang terkait dengan item kerja yang ditentukan tetap tersedia sampai item kerja telah diproses.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | wdm.h (termasuk FltKernel.h, Ntifs.h, Ntddk.h, Wdm.h) |
IRQL | Tingkat apa pun |