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.
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) |