Fungsi NdisQueueIoWorkItem (ndis.h)

Driver NDIS memanggil fungsi NdisQueueIoWorkItem untuk mengantre item kerja.

Sintaks

void NdisQueueIoWorkItem(
  [in] NDIS_HANDLE              NdisIoWorkItemHandle,
  [in] NDIS_IO_WORKITEM_ROUTINE Routine,
  [in] PVOID                    WorkItemContext
);

Parameter

[in] NdisIoWorkItemHandle

Handel ke struktur IO_WORKITEM privat yang dikembalikan oleh panggilan sebelumnya ke Fungsi NdisAllocateIoWorkItem .

[in] Routine

Titik entri ke fungsi yang dipanggil NDIS untuk memproses item kerja. NDIS memanggil rutinitas ini dalam konteks utas sistem.

Catatan Anda harus mendeklarasikan fungsi dengan menggunakan jenis NDIS_IO_WORKITEM_FUNCTION (bukan NDIS_IO_WORKITEM_ROUTINE). Untuk informasi selengkapnya, lihat bagian Contoh berikut ini.
 
Rutinitas mencakup parameter input berikut:

WorkItemContext

Penunjuk ke area konteks yang diteruskan driver ke parameter WorkItemContextdari NdisQueueIoWorkItem.

NdisIoWorkItemHandle

Handel ke struktur NDIS_IO_WORKITEM privat yang dikembalikan oleh panggilan sebelumnya ke Fungsi NdisAllocateIoWorkItem .

[in] WorkItemContext

Penunjuk ke area konteks yang disediakan penelepon yang diteruskan NDIS ke rutinitas panggilan balik. WorkItemContext dapat menjadi data yang ditentukan pemanggil apa pun yang diperlukan driver untuk mengelola item kerja.

Nilai kembali

Tidak ada

Keterangan

NdisQueueIoWorkItem memanggil IoQueueWorkItem untuk mengantre item kerja. Item kerja NDIS menggunakan jenis antrean CriticalWorkQueue .

Rutinitas panggilan balik yang disediakan penelepon (NDIS_IO_WORKITEM_ROUTINE) berjalan dalam konteks utas sistem di IRQL = PASSIVE_LEVEL.

Rutinitas yang disediakan penelepon ini dapat memanggil fungsi NdisFreeIoWorkItem untuk mengklaim kembali penyimpanan yang dialokasikan untuk item kerja.

Contoh

Untuk menentukan fungsi Rutin , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan fungsi Rutin yang diberi nama "MyWorkitemRoutine", gunakan jenis NDIS_IO_WORKITEM_FUNCTION seperti yang ditunjukkan dalam contoh kode ini:

NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyWorkitemRoutine(
    PVOID   WorkItemContext,
    NDIS_HANDLE  NdisIoWorkItemHandle
    )
  {...}

Jenis fungsi NDIS_IO_WORKITEM_FUNCTION ditentukan dalam file header Ndis.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi NDIS_IO_WORKITEM_FUNCTION dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver NDIS.

Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Universal
Header ndis.h (termasuk Ndis.h)
Pustaka Ndis.lib
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI Irql_Miscellaneous_Function(ndis)

Lihat juga

IoQueueWorkItem

MiniportHaltEx

Item Kerja I/O NDIS

NdisAllocateIoWorkItem

NdisFreeIoWorkItem