Fungsi WdfUsbTargetPipeConfigContinuousReader (wdfusb.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfUsbTargetPipeConfigContinuousReader mengonfigurasi kerangka kerja untuk terus membaca dari pipa USB tertentu.
Sintaks
NTSTATUS WdfUsbTargetPipeConfigContinuousReader(
[in] WDFUSBPIPE Pipe,
[in] PWDF_USB_CONTINUOUS_READER_CONFIG Config
);
Parameter
[in] Pipe
Handel ke objek pipa kerangka kerja yang diperoleh dengan memanggil WdfUsbInterfaceGetConfiguredPipe.
[in] Config
Penunjuk ke struktur WDF_USB_CONTINUOUS_READER_CONFIG yang dialokasikan penelepon.
Nilai kembali
WdfUsbTargetPipeConfigContinuousReader mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini dapat mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Ukuran struktur WDF_USB_CONTINUOUS_READER_CONFIG yang ditentukan parameter Konfigurasi salah. |
|
Parameter yang tidak valid terdeteksi. |
|
Memori tidak cukup tersedia. |
|
Tipe pipa tidak valid. |
|
Anggota HeaderLength, TransferLength, atau TrailerLength dari struktur WDF_USB_CONTINUOUS_READER_CONFIG bahwa parameter Config menentukan ukuran yang terlalu besar atau tidak valid. |
|
Ukuran buffer baca bukan kelipatan ukuran paket maksimum pipa. |
Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfUsbTargetPipeConfigContinuousReader , lihat Kesalahan Pembuatan Objek Kerangka Kerja.
Metode ini juga mungkin mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Anda dapat mengonfigurasi pembaca berkelanjutan untuk pipa massal atau pipa interupsi. Pipa harus memiliki titik akhir input.
Setelah memanggil WdfUsbTargetPipeConfigContinuousReader untuk mengonfigurasi pembaca berkelanjutan, driver Anda harus memanggil WdfIoTargetStart untuk memulai pembaca. Untuk menghentikan pembaca, driver harus memanggil WdfIoTargetStop.
Biasanya, driver memanggil WdfUsbTargetPipeConfigContinuousReader dari dalam fungsi panggilan balik EvtDevicePrepareHardware . Driver harus memanggil WdfIoTargetStart dari dalam fungsi panggilan balik EvtDeviceD0Entry dan harus memanggil WdfIoTargetStop dari dalam fungsi panggilan balik EvtDeviceD0Exit-nya .
Setiap kali target I/O pipa berhasil menyelesaikan permintaan baca, kerangka kerja memanggil fungsi panggilan balik EvtUsbTargetPipeReadComplete driver. Jika target I/O melaporkan kegagalan saat memproses permintaan, kerangka kerja memanggil fungsi panggilan balik EvtUsbTargetPipeReadersFailed driver setelah semua permintaan baca selesai. (Oleh karena itu, fungsi panggilan balik EvtUsbTargetPipeReadComplete tidak akan dipanggil saat fungsi panggilan balik EvtUsbTargetPipeReadersFailed dijalankan).
Jika Anda tidak menyediakan panggilan balik EvtUsbTargetPipeReadersFailed opsional, kerangka kerja merespons upaya baca yang gagal dengan mengirim permintaan baca lain. Oleh karena itu, jika bus dalam keadaan tidak menerima bacaan, kerangka kerja terus mengirim permintaan baru untuk pulih dari pembacaan yang gagal.
Setelah driver memanggil WdfUsbTargetPipeConfigContinuousReader, driver tidak dapat menggunakan WdfUsbTargetPipeReadSynchronously atau WdfRequestSend untuk mengirim permintaan I/O ke pipa kecuali pembaca berkelanjutan telah dihentikan. Untuk menghentikan pembaca, driver dapat memanggil WdfIoTargetStop atau mengembalikan FALSE dari fungsi panggilan balik EvtUsbTargetPipeReadersFailed . Jika driver memanggil WdfUsbTargetPipeReadSynchronously saat pembaca dihentikan, driver harus mengatur bendera WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE di anggota Bendera parameter RequestOptions . Jika tidak, permintaan akan ditunda hingga target dimulai ulang.
Kerangka kerja menetapkan bendera USBD_SHORT_TRANSFER_OK di URB internalnya. Mengatur bendera ini memungkinkan paket terakhir transfer data menjadi kurang dari ukuran paket maksimum.
Untuk informasi selengkapnya tentang metode WdfUsbTargetPipeConfigContinuousReader dan target I/O USB, lihat Membaca dari Pipa.
Contoh
Contoh kode berikut menginisialisasi struktur WDF_USB_CONTINUOUS_READER_CONFIG dan memanggil WdfUsbTargetPipeConfigContinuousReader.
WDF_USB_CONTINUOUS_READER_CONFIG contReaderConfig;
NTSTATUS status;
WDF_USB_CONTINUOUS_READER_CONFIG_INIT(
&contReaderConfig,
OsrFxEvtUsbInterruptPipeReadComplete,
DeviceContext,
sizeof(UCHAR)
);
status = WdfUsbTargetPipeConfigContinuousReader(
Pipe,
&contReaderConfig
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfusb.h (termasuk Wdfusb.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), FailD0EntryIoTargetState(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), UsbContReader(kmdf), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf) |
Lihat juga
WDF_USB_CONTINUOUS_READER_CONFIG
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk