WinUsb_GetOverlappedResult (winusb.h)

Fungsi WinUsb_GetOverlappedResult mengambil hasil operasi yang tumpang tindih pada file yang ditentukan.

Sintaks

BOOL WinUsb_GetOverlappedResult(
  [in]  WINUSB_INTERFACE_HANDLE InterfaceHandle,
  [in]  LPOVERLAPPED            lpOverlapped,
  [out] LPDWORD                 lpNumberOfBytesTransferred,
  [in]  BOOL                    bWait
);

Parameter

[in] InterfaceHandle

Handel buram ke antarmuka pertama pada perangkat, yang dikembalikan oleh WinUsb_Initialize.

[in] lpOverlapped

Penunjuk ke struktur TUMPANG TINDIH yang ditentukan ketika operasi yang tumpang tindih dimulai.

[out] lpNumberOfBytesTransferred

Pointer ke variabel yang menerima jumlah byte yang benar-benar ditransfer oleh operasi baca atau tulis.

[in] bWait

Jika parameter ini TRUE, fungsi tidak akan kembali hingga operasi selesai. Jika parameter ini FALSE dan operasi masih tertunda, fungsi mengembalikan FALSE dan fungsi GetLastError mengembalikan ERROR_IO_INCOMPLETE.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah angka apa pun selain nol. Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi ini seperti rutinitas API Win32, GetOverlappedResult, dengan satu perbedaan—alih-alih meneruskan handel file yang dikembalikan dari CreateFile, penelepon melewati handel antarmuka yang dikembalikan dari WinUsb_Initialize. Pemanggil dapat menggunakan salah satu rutinitas API, jika handel yang sesuai diteruskan. Fungsi WinUsb_GetOverlappedResult mengekstrak handel file dari handel antarmuka lalu memanggil GetOverlappedResult.

Hasil yang dilaporkan oleh fungsi WinUsb_GetOverlappedResult adalah hasil dari operasi tumpang tindih terakhir handel yang ditentukan tempat struktur TUMPANG TINDIH yang ditentukan disediakan, dan yang hasil operasinya tertunda. Operasi tertunda ditunda ditunda ketika fungsi yang memulai operasi mengembalikan FALSE, dan rutinitas GetLastError mengembalikan ERROR_IO_PENDING. Ketika operasi I/O tertunda, fungsi yang memulai operasi mengatur ulang anggota hEvent dari struktur TUMPANG TINDIH ke status tidak ditandatangani. Kemudian ketika operasi yang tertunda telah selesai, sistem mengatur objek peristiwa ke status yang disinyalkan.

Pemanggil dapat menentukan bahwa objek peristiwa diatur ulang secara manual dalam struktur YANG TUMPANG TINDIH . Jika objek peristiwa reset otomatis digunakan, penanganan aktivitas tidak boleh ditentukan dalam operasi tunggu lainnya dalam interval antara memulai operasi yang tumpang tindih dan panggilan ke WinUsb_GetOverlappedResult. Misalnya, objek peristiwa terkadang ditentukan dalam salah satu rutinitas tunggu untuk menunggu operasi selesai. Ketika rutinitas tunggu kembali, sistem mengatur status peristiwa reset otomatis ke nonsignaled, dan panggilan berturut-turut ke WinUsb_GetOverlappedResult dengan parameter bWait diatur ke TRUE menyebabkan fungsi diblokir tanpa batas waktu.

Jika parameter bWaitTRUE, WinUsb_GetOverlappedResult menentukan apakah operasi yang tertunda telah selesai dengan menunggu objek peristiwa berada dalam status sinyal.

Jika anggota hEvent dari struktur TUMPANG TINDIH adalah NULL, sistem menggunakan status handel file untuk memberi sinyal ketika operasi telah selesai. Jangan gunakan handel file untuk tujuan ini. Lebih baik menggunakan objek peristiwa karena kebingungan yang dapat terjadi ketika beberapa operasi yang tumpang tindih bersamaan dilakukan pada file yang sama. Dalam situasi ini, Anda tidak dapat mengetahui operasi mana yang menyebabkan status objek diberi sinyal.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header winusb.h (termasuk Winusb.h)
Pustaka Winusb.lib
DLL Winusb.dll

Lihat juga

WinUSB

Fungsi WinUSB

WinUsb_Initialize

_URB_CONTROL_DESCRIPTOR_REQUEST