Bagikan melalui


Fungsi RxDispatchToWorkerThread (rxworkq.h)

RxDispatchToWorkerThread memanggil rutinitas dalam konteks utas pekerja. Memori untuk WORK_QUEUE_ITEM dialokasikan oleh rutinitas ini.

Sintaks

NTSTATUS RxDispatchToWorkerThread(
  [in] IN PRDBSS_DEVICE_OBJECT     pMRxDeviceObject,
  [in] IN WORK_QUEUE_TYPE          WorkQueueType,
  [in] IN PRX_WORKERTHREAD_ROUTINE Routine,
  [in] IN PVOID                    pContext
);

Parameter

[in] pMRxDeviceObject

Penunjuk ke objek perangkat dari driver pengalih mini jaringan yang sesuai.

[in] WorkQueueType

Jenis antrean kerja yang mewakili prioritas tugas. Parameter WorkQueueType bisa menjadi salah satu dari bisa menjadi salah satu enumerasi berikut untuk WORK_QUEUE_TYPE:

CriticalWorkQueue

Masukkan WORK_QUEUE_ITEM ke dalam antrean tempat utas sistem dengan atribut prioritas real time akan memproses item kerja.

DelayedWorkQueue

Masukkan WORK_QUEUE_ITEM ke dalam antrean tempat utas sistem dengan atribut prioritas variabel akan memproses item kerja.

HyperCriticalWorkQueue

Masukkan WORK_QUEUE_ITEM ke dalam antrean tempat utas sistem akan memproses item kerja sehingga rutinitas yang akan dipanggil tidak diblokir.

[in] Routine

Penunjuk ke rutinitas yang akan dipanggil.

[in] pContext

Penunjuk ke parameter konteks yang terkait dengan item kerja untuk menyelesaikan yang diteruskan ke driver.

Nilai kembali

RxDispatchToWorkerThread mengembalikan STATUS_SUCCESS pada keberhasilan atau salah satu kode kesalahan berikut tentang kegagalan:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES
Item tidak dapat dikirim.

Keterangan

Ada dua kasus umum operasi pengiriman ke utas pekerja:

  • Untuk operasi yang sangat jarang, ruang dapat dilestarikan dengan mengalokasikan dan membebaskan memori secara dinamis untuk item antrean kerja ketika diperlukan. Rutinitas RxDispatchToWorkerThread akan digunakan dalam kasus ini
  • Ketika operasi akan dikirim berulang kali, waktu dilestarikan dengan mengalokasikan terlebih dahulu WORK_QUEUE_ITEM sebagai bagian dari struktur data yang akan dikirim dan menggunakan memori yang telah dialokasikan sebelumnya ini berulang kali. Rutinitas RxPostToWorkerThread akan digunakan dalam kasus ini
Trade off antara dua operasi pengiriman adalah waktu versus ruang (penggunaan memori).

RxDispatchToWorkerThread memanggil rutinitas dalam konteks utas pekerja. Memori untuk WORK_QUEUE_ITEM dialokasikan oleh rutinitas RxDispatchToWorkerThread dari memori kumpulan non-halaman. Oleh karena itu rutinitas ini dapat gagal jika sumber daya yang tidak mencukuum tersedia.

Implementasi antrean rutin RxDispatchToWorkerThread saat ini bekerja ke prosesor yang sama dari mana panggilan berasal.

Jika rutinitas RxDispatchToWorkerThread gagal pada build debug, rutinitas _RxLog dipanggil dengan detail kesalahan. Jika rutinitas RxDispatchToWorkerThread gagal dan WMI diaktifkan di kernel, detail kesalahan akan dicatat dengan WMI.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header rxworkq.h (termasuk Rxworkq.h, Rxstruc.h, Ntifs.h)
IRQL <= APC_LEVEL

Lihat juga

RxPostToWorkerThread

RxSpinDownMRxDispatcher