Fungsi RxPostToWorkerThread (rxworkq.h)

RxPostToWorkerThread memanggil rutinitas yang diteruskan sebagai parameter dalam konteks utas pekerja. Memori untuk WORK_QUEUE_ITEM harus dialokasikan oleh pemanggil.

Sintaks

NTSTATUS RxPostToWorkerThread(
  [in] IN PRDBSS_DEVICE_OBJECT     pMRxDeviceObject,
  [in] IN WORK_QUEUE_TYPE          WorkQueueType,
  [in] IN PRX_WORK_QUEUE_ITEM      pWorkQueueItem,
  [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 ini bisa menjadi salah satu nilai berikut:

CriticalWorkQueue

Sisipkan WORK_QUEUE_ITEM ke dalam antrean tempat alur sistem dengan atribut prioritas real-time akan memproses item kerja.

DelayedWorkQueue

Sisipkan WORK_QUEUE_ITEM ke dalam antrean tempat alur sistem dengan atribut prioritas variabel akan memproses item kerja.

HyperCriticalWorkQueue

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

[in] pWorkQueueItem

Penunjuk ke WORK_QUEUE_ITEM.

[in] Routine

Penunjuk ke rutinitas untuk dipanggil.

[in] pContext

Penunjuk ke parameter konteks yang terkait dengan item kerja untuk diselesaikan 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. Trade-off antara dua operasi pengiriman berikut adalah waktu versus ruang (penggunaan memori):

  • Ketika operasi akan dikirim berulang kali, waktu dilayani dengan mengalokasikan terlebih dahulu struktur WORK_QUEUE_ITEM sebagai bagian dari struktur data yang akan dikirim. Dalam hal ini, gunakan rutinitas RxPostToWorkerThread .
  • Untuk operasi yang jarang terjadi, Anda dapat menghemat ruang dengan mengalokasikan dan membebaskan memori secara dinamis untuk item antrean kerja saat diperlukan. Dalam hal ini, gunakan rutinitas RxDispatchToWorkerThread .
Rutinitas RxPostToWorkerThread memanggil rutinitas dalam konteks utas pekerja. Memori untuk struktur WORK_QUEUE_ITEM harus dialokasikan dari memori kumpulan non-halaman dengan rutinitas panggilan.

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

Jika rutinitas RxPostToWorkerThread gagal pada build debug, rutinitas _RxLog dipanggil dengan detail kesalahan. Jika rutinitas RxPostToWorkerThread 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

RxDispatchToWorkerThread

RxSpinDownMRxDispatcher

_RxLog