Metode IWDFDevice::CreateIoQueue (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode CreateIoQueue mengonfigurasi antrean I/O default yang terkait dengan perangkat atau membuat antrean I/O sekunder untuk perangkat.

Sintaks

HRESULT CreateIoQueue(
  [in, optional] IUnknown                   *pCallbackInterface,
  [in]           BOOL                       bDefaultQueue,
  [in]           WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
  [in]           BOOL                       bPowerManaged,
  [in]           BOOL                       bAllowZeroLengthRequests,
  [out]          IWDFIoQueue                **ppIoQueue
);

Parameter

[in, optional] pCallbackInterface

Penunjuk ke antarmuka IUnknown yang digunakan kerangka kerja untuk menentukan fungsi panggilan balik peristiwa yang berlangganan driver pada antrean. Ini adalah fungsi yang dipanggil kerangka kerja ketika peristiwa yang relevan terjadi.

Untuk UMDF versi 1.9 dan yang lebih baru, parameter ini diperlukan untuk antrean I/O yang menggunakan metode pengiriman berurutan atau paralel, dan bersifat opsional (dapat berupa NULL) untuk antrean I/O yang menggunakan metode pengiriman manual. Untuk versi UMDF yang lebih lama dari 1.9, parameter ini diperlukan untuk semua metode pengiriman.

[in] bDefaultQueue

Nilai BOOL yang menentukan apakah akan mengonfigurasi antrean I/O default atau membuat antrean I/O sekunder untuk perangkat. TRUE menunjukkan untuk mengonfigurasi antrean I/O default; FALSE menunjukkan untuk membuat antrean I/O sekunder.

[in] DispatchType

Nilai jenis WDF_IO_QUEUE_DISPATCH_TYPE yang mengidentifikasi bagaimana driver harus menerima permintaan dari antrean I/O.

[in] bPowerManaged

Nilai BOOL yang menentukan apakah antrean I/O dikelola daya. TRUE menunjukkan kerangka kerja secara otomatis mengoordinasikan pengiriman untuk antrean I/O dengan Plug and Play (PnP) dan status daya perangkat; FALSE menunjukkan tidak ada pengiriman terkoordinasi secara otomatis.

[in] bAllowZeroLengthRequests

Nilai BOOL yang menentukan apakah kerangka kerja menempatkan permintaan I/O panjang nol langsung dalam antrean I/O untuk ditangani driver. TRUE menunjukkan bahwa driver harus menerima permintaan baca dan tulis yang memiliki buffer panjang nol--yaitu, kerangka kerja secara otomatis menempatkan jenis permintaan ini langsung dalam antrean I/O untuk driver. FALSE menunjukkan bahwa kerangka kerja menyelesaikan permintaan I/O panjang nol alih-alih memasukkannya ke dalam antrean I/O.

[out] ppIoQueue

Penunjuk ke variabel yang menerima penunjuk ke antarmuka IWDFIoQueue untuk objek antrean I/O yang baru dibuat atau objek antrean I/O default.

Nilai kembali

CreateIoQueue mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK
Antrean I/O berhasil dibuat.
HRESULT_FROM_WIN32(ERROR_BAD_CONFIGURATION)
Antrean I/O dikonfigurasi dengan salah satu cara berikut:
  • Parameter DispatchType menentukan antrean nonmanual dan tidak ada antarmuka panggilan balik antrean I/O yang ditentukan di bagian Keterangan didukung melalui parameter pCallbackInterface .
  • Parameter DispatchType menentukan antrean manual dan satu atau beberapa antarmuka panggilan balik antrean I/O yang ditentukan di bagian Keterangan didukung melalui parameter pCallbackInterface .
Untuk informasi selengkapnya tentang konfigurasi ini, lihat bagian Keterangan.
 

CreateIoQueue mungkin juga mengembalikan nilai HRESULT lainnya.

Keterangan

Antarmuka IUnknown yang disediakan driver untuk parameter pCallbackInterface dapat mendukung beberapa fungsi panggilan balik antrean. Kerangka kerja memanggil metode QueryInterface pada antarmuka IUnknown yang disediakan beberapa kali untuk mengambil metode antarmuka yang didukung driver. Ketika aplikasi melakukan tindakan yang terkait dengan metode antarmuka yang didukung (seperti, permintaan baca I/O), kerangka kerja memanggil metode (seperti, metode IQueueCallbackRead::OnRead ) untuk memberi tahu driver. Kerangka kerja memanggil QueryInterface untuk antarmuka berikut:

IQueueCallbackBuat

IQueueCallbackDefaultIoHandler

IQueueCallbackDeviceIoControl

IQueueCallbackRead

IQueueCallbackWrite

Ketika driver melewati WdfIoQueueDispatchSequential atau WdfIoQueueDispatchParallel untuk parameter DispatchType dari CreateIoQueue untuk membuat antrean nonmanual, CreateIoQueue dapat mengembalikan S_OK hanya jika objek panggilan balik antrean driver mengimplementasikan setidaknya salah satu antarmuka sebelumnya dan menunjukkan dukungan antarmuka tersebut melalui antarmuka IUnknown yang ditunjuk pCallbackInterface .

Ketika driver melewati WdfIoQueueDispatchManual for DispatchType untuk membuat antrean manual, CreateIoQueue dapat mengembalikan S_OK hanya jika objek panggilan balik antrean driver tidak mengimplementasikan atau menunjukkan dukungan dari salah satu antarmuka panggilan balik sebelumnya. Untuk informasi selengkapnya tentang objek panggilan balik driver, lihat Membuat Objek Panggilan Balik.

Catatan Driver tidak dapat menggunakan objek panggilan balik yang sama untuk antrean manual yang digunakan driver untuk antrean berurutan atau paralel. Artinya, jika driver meneruskan pointer tertentu ke antarmuka IUnknown dalam panggilan ke CreateIoQueue untuk membuat antrean manual, driver nantinya tidak dapat meneruskan pointer identik ke IUnknown dalam panggilan ke CreateIoQueue untuk membuat antrean berurutan atau paralel.
 
Untuk informasi selengkapnya tentang mengonfigurasi mode pengiriman, lihat Mengonfigurasi Mode Pengiriman untuk Antrean I/O.

Kerangka kerja ini juga memanggil QueryInterface pada antarmuka IUnknown yang disediakan untuk menentukan apakah driver mendukung salah satu antarmuka berikut:

IObjectCleanup

IQueueCallbackIoResume

IQueueCallbackIoStop

Kerangka kerja ini juga memanggil QueryInterface pada antarmuka IUnknown yang disediakan untuk menentukan apakah driver mendukung antarmuka IQueueCallbackStateChange . Objek panggilan balik antrean driver dapat secara opsional mengimplementasikan dan menunjukkan dukungan IQueueCallbackStateChange hanya untuk antrean manual. Objek panggilan balik antrean driver tidak boleh menerapkan dan menunjukkan dukungan IQueueCallbackStateChange untuk antrean berurutan atau paralel.

Contoh

Untuk contoh kode tentang cara menggunakan metode CreateIoQueue , lihat IWDFDriver::CreateDevice.

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1,5
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IObjectCleanup

IQueueCallbackBuat

IQueueCallbackDefaultIoHandler

IQueueCallbackDeviceIoControl

IQueueCallbackIoResume

IQueueCallbackIoStop

IQueueCallbackRead

IQueueCallbackStateChange

IQueueCallbackWrite

IWDFDevice

IWDFIoQueue

WDF_IO_QUEUE_DISPATCH_TYPE