Fungsi WdfUsbTargetPipeResetSynchronously (wdfusb.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfUsbTargetPipeResetSynchronously membangun permintaan reset dan mengirimkannya secara sinkron ke pipa USB tertentu.
Sintaksis
NTSTATUS WdfUsbTargetPipeResetSynchronously(
[in] WDFUSBPIPE Pipe,
[in, optional] WDFREQUEST Request,
[in, optional] PWDF_REQUEST_SEND_OPTIONS RequestOptions
);
Parameter
[in] Pipe
Handel ke objek pipa kerangka kerja yang diperoleh dengan memanggil WdfUsbInterfaceGetConfiguredPipe.
[in, optional] Request
Handel ke objek permintaan kerangka kerja. Parameter ini bersifat opsional dan dapat NULL. Untuk informasi selengkapnya, lihat bagian Komentar berikut ini.
[in, optional] RequestOptions
Penunjuk ke struktur WDF_REQUEST_SEND_OPTIONS yang dialokasikan pemanggil yang menentukan opsi untuk permintaan. Penunjuk ini bersifat opsional dan dapat NULL. Untuk informasi selengkapnya, lihat bagian Komentar berikut ini.
Mengembalikan nilai
WdfUsbTargetPipeResetSynchronously mengembalikan nilai status penyelesaian target USB I/O jika operasi berhasil. Jika tidak, metode ini dapat mengembalikan salah satu nilai berikut:
Mengembalikan kode | Deskripsi |
---|---|
|
Ukuran struktur WDF_REQUEST_SEND_OPTIONS bahwa parameter RequestOptions yang ditentukan salah. |
|
Parameter yang tidak valid terdeteksi. |
|
Memori tidak cukup tersedia. |
|
IRQL penelepon tidak PASSIVE_LEVEL, atau permintaan I/O bahwa parameter Permintaan |
|
Driver menyediakan nilai waktu habis dan permintaan tidak selesai dalam waktu yang dialokasikan. |
|
Paket permintaan I/O ( |
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Komentar
Gunakan metode WdfUsbTargetPipeResetSynchronously untuk mengirim permintaan reset USB secara sinkron. Untuk mengirim permintaan tersebut secara asinkron, gunakan WdfUsbTargetPipeFormatRequestForReset, diikuti oleh WdfRequestSend.
Sebelum kerangka kerja mengatur ulang pipa USB target I/O, kerangka kerja membatalkan semua permintaan I/O yang tetap berada dalam antrean target I/O. Driver tidak boleh mengirim permintaan I/O tambahan ke target I/O hingga WdfUsbTargetPipeResetSynchronously kembali.
Driver harus memanggil WdfIoTargetStop
Ketika driver memanggil WdfUsbTargetPipeResetSynchronously, kerangka kerja mengirimkan permintaan URB_FUNCTION_RESET_PIPE ke target I/O. Untuk informasi selengkapnya tentang mengatur ulang pipa USB, lihat spesifikasi USB.
Metode WdfUsbTargetPipeResetSynchronously tidak kembali sampai permintaan selesai, kecuali driver menyediakan nilai batas waktu dalam struktur WDF_REQUEST_SEND_OPTIONS yang requestOptions parameter menunjuk, atau kecuali kesalahan terdeteksi.
Anda dapat meneruskan permintaan I/O yang diterima driver Anda dalam antrean I/O, atau Anda dapat membuat dan mengirim permintaan baru.
Untuk meneruskan permintaan I/O yang diterima driver Anda dalam antrean I/O, tentukan handel permintaan yang diterima untuk parameter
Untuk membuat dan mengirim permintaan baru, berikan handel permintaan
-
Jika Anda menyediakan handel permintaan NULL
, kerangka kerja menggunakan objek permintaan internal. Teknik ini mudah digunakan, tetapi driver tidak dapat membatalkan permintaan. -
Jika Anda memanggil WdfRequestCreate untuk membuat satu atau beberapa objek permintaan, Anda dapat menggunakan kembali objek permintaan ini dengan memanggil WdfRequestReuse. Teknik ini memungkinkan fungsi panggilan balik
driver Anda EvtDriverDeviceAdd untuk melakukan pra-alokasi objek permintaan untuk perangkat. Selain itu, utas driver lain dapat memanggil WdfRequestCancelSentRequest untuk membatalkan permintaan, jika perlu.
Untuk informasi tentang mendapatkan informasi status setelah permintaan I/O selesai, lihat Mendapatkan Informasi Penyelesaian.
Untuk informasi selengkapnya tentang metode WdfUsbTargetPipeResetSynchronously metode dan target I/O USB, lihat Target I/O USB.
Contoh
Contoh kode berikut mengirimkan permintaan reset ke pipa perangkat USB.
NTSTATUS status;
status = WdfUsbTargetPipeResetSynchronously(
Pipe,
WDF_NO_HANDLE,
NULL
);
Persyaratan
Syarat | Nilai |
---|---|
Platform Target |
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 | PASSIVE_LEVEL |
aturan kepatuhan DDI |
DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestFor, UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf) |