Bagikan melalui


Metode IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.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.]

Fungsi panggilan balik peristiwa OnReaderCompletion driver memberi tahu driver bahwa pembaca berkelanjutan telah berhasil menyelesaikan permintaan baca.

Sintaks

void OnReaderCompletion(
  [in] IWDFUsbTargetPipe *pPipe,
  [in] IWDFMemory        *pMemory,
  [in] SIZE_T            NumBytesTransferred,
  [in] PVOID             Context
);

Parameter

[in] pPipe

Penunjuk ke antarmuka IWDFUsbTargetPipe untuk pipa USB tempat driver telah mengaktifkan pembaca berkelanjutan.

[in] pMemory

Penunjuk ke antarmuka IWDFMemory untuk buffer baca yang berisi data yang dibaca dari pipa USB.

[in] NumBytesTransferred

Jumlah byte yang dikandung buffer baca.

[in] Context

Penunjuk ke informasi konteks yang disediakan driver yang disediakan driver ketika sebelumnya disebut IWDFUsbTargetPipe2::ConfigureContinuousReader.

Nilai kembali

Tidak ada

Keterangan

Untuk mendaftarkan fungsi panggilan balik IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion , driver Anda harus menyediakan penunjuk ke antarmuka IUsbTargetPipeContinuousReaderCallbackReadComplete driver saat memanggil IWDFUsbTargetPipe2::ConfigureContinuousReader.

Jika driver telah membuat pembaca berkelanjutan untuk pipa USB, kerangka kerja memanggil fungsi panggilan balik OnReaderCompletion driver setiap kali target I/O driver berhasil menyelesaikan permintaan baca. Jika target I/O tidak berhasil menyelesaikan permintaan, kerangka kerja memanggil fungsi panggilan balik IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure driver.

Untuk mengakses buffer yang berisi data yang dibaca dari perangkat, driver dapat memanggil IWDFMemory::GetDataBuffer. Kerangka kerja menulis data ke dalam buffer, setelah header yang ditentukan oleh parameter HeaderLengthdari IWDFUsbTargetPipe2::ConfigureContinuousReader. Perhatikan bahwa penunjuk bahwa parameter NumBytesTransferred fungsi IWDFMemory::GetDataBuffer mengembalikan poin ke awal header, tetapi parameter NumBytesTransferred fungsi callback OnReaderCompletion tidak menyertakan panjang header.

Secara default, kerangka kerja menghapus objek memori buffer setelah fungsi panggilan balik OnReaderCompletion kembali. Namun, Anda mungkin ingin objek memori tetap valid setelah fungsi panggilan balik kembali. Misalnya, Anda mungkin ingin driver menyimpan penunjuk antarmuka objek memori di ruang konteks objek pipa kerangka kerja sehingga driver dapat memproses konten objek memori setelah fungsi panggilan balik kembali. Untuk memperpanjang masa pakai objek memori, fungsi panggilan balik harus memanggil metode IWDFMemory::AddRef buffer. Selanjutnya, driver harus memanggil metode IWDFMemory::Release buffer sehingga kerangka kerja dapat menghapus objek.

Kerangka kerja menyinkronkan panggilan ke fungsi panggilan balik OnReaderCompletion dan IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure sesuai dengan aturan berikut:

  • Fungsi panggilan balik ini tidak berjalan secara bersamaan untuk pipa USB individual.
  • Jika driver membuat beberapa pembaca berkelanjutan untuk beberapa pipa USB, dengan beberapa fungsi panggilan balik OnReaderCompletion dan OnReaderFailure , beberapa fungsi panggilan balik dapat berjalan secara bersamaan.
  • Jika driver telah menentukan nilai NumPendingReads default saat memanggil IWDFUsbTargetPipe2::ConfigureContinuousReader (atau jika menentukan nilai NumPendingReads yang lebih besar dari 1), dan jika permintaan baca selesai saat fungsi panggilan balik OnReaderCompletion dijalankan, kerangka kerja dapat memanggil fungsi panggilan balik OnReaderCompletion lagi sebelum fungsi panggilan balik kembali.
  • Kerangka kerja tidak menyinkronkan fungsi panggilan balik ini dengan fungsi panggilan balik lainnya.
Saat driver Anda memanggil IWDFUsbTargetPipe2::ConfigureContinuousReader, driver dapat menentukan fungsi panggilan balik IObjectCleanup::OnCleanup . Kerangka kerja akan memanggil fungsi panggilan balik tersebut ketika mencoba menghapus objek memori, setelah fungsi panggilan balik OnReaderCompletion kembali.

Untuk informasi selengkapnya tentang fungsi panggilan balik OnReaderCompletion dan target I/O USB, lihat Menangani Target I/O USB.

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1.9
Header wudfusb.h (termasuk Wudfusb.h)

Lihat juga

IUsbTargetPipeContinuousReaderCallbackReadComplete

IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure