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

Lihat juga

ExFreePool

ExFreePoolWithTag

ExQueueWorkItem

IoAllocateWorkItem

IoFreeWorkItem

IoQueueWorkItem

WORK_QUEUE_ITEM