IWDFIoRequest::Kirim metode (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 Kirim mengirimkan permintaan ke target I/O yang ditentukan.
Sintaks
HRESULT Send(
[in] IWDFIoTarget *pIoTarget,
[in] ULONG Flags,
[in] LONGLONG Timeout
);
Parameter
[in] pIoTarget
Penunjuk ke antarmuka IWDFIoTarget untuk objek target I/O, yang biasanya mewakili driver yang lebih rendah di tumpukan.
[in] Flags
BITWISE OR yang valid dari bendera WDF_REQUEST_SEND_OPTIONS_FLAGS-typed.
[in] Timeout
Jumlah waktu, dalam unit waktu sistem (interval 100 nanodetik), yang dapat berlalu sebelum kerangka kerja secara otomatis membatalkan permintaan I/O.
- Jika nilainya negatif, waktu kedaluwarsa relatif terhadap waktu sistem saat ini.
- Jika nilainya positif, waktu kedaluwarsa ditentukan sebagai waktu absolut (yang relatif terhadap 1 Januari 1601).
- Jika nilainya nol, kerangka kerja tidak kehabisan waktu permintaan.
Nilai kembali
Kirim pengembalian S_OK jika operasi berhasil. Jika tidak, metode ini mengembalikan salah satu kode kesalahan yang ditentukan dalam Winerror.h.
Perhatikan bahwa nilai yang dikembalikan mewakili status upaya Kirim metode untuk mengirim permintaan I/O ke target I/O. Nilai yang dikembalikan tidak mewakili status penyelesaian permintaan I/O. Driver Anda harus menggunakan antarmuka IWDFRequestCompletionParams untuk mendapatkan status penyelesaian permintaan I/O.
Keterangan
Jika Kirim mengembalikan kode kesalahan, driver biasanya harus menyelesaikan permintaan dengan kode kesalahan yang Dikirim dikembalikan, seperti yang ditunjukkan kode di bagian Contoh berikut.
Jika driver Anda menetapkan bendera WDF_REQUEST_SEND_OPTION_SYNCHRONOUS di parameter Bendera , dan jika Kirim berhasil mengirim permintaan I/O ke target I/O, Kirim kembali setelah target I/O menyelesaikan permintaan I/O. Dalam hal ini, Kirim mengembalikan S_OK dan driver dapat segera memanggil IWDFIoRequest::GetCompletionParams untuk mendapatkan antarmuka IWDFRequestCompletionParams . Contoh kode di IWDFIoRequest::GetCompletionParams menunjukkan panggilan ke Kirim dengan set bendera WDF_REQUEST_SEND_OPTION_SYNCHRONOUS.
Jika driver Anda tidak mengatur bendera WDF_REQUEST_SEND_OPTION_SYNCHRONOUS, dan jika Kirim berhasil mengirim permintaan I/O ke target I/O, Kirim mengembalikan S_OK saat target I/O masih memproses permintaan I/O secara asinkron. Dalam hal ini, driver menyediakan fungsi panggilan balik IRequestCallbackRequestCompletion::OnCompletion yang dipanggil kerangka kerja setelah target I/O menyelesaikan permintaan I/O. Biasanya, fungsi panggilan balik OnCompletion memanggil IWDFIoRequest::GetCompletionParams. Contoh kode di bagian Contoh berikut menunjukkan panggilan ke Kirim tanpa bendera WDF_REQUEST_SEND_OPTION_SYNCHRONOUS.
Driver tidak dapat memanggil Kirim untuk mengirim permintaan I/O ke pipa USB, jika driver telah mengonfigurasi pembaca berkelanjutan untuk pipa.
Contoh
Contoh kode berikut meneruskan permintaan ke target I/O perangkat.
IWDFIoRequest* FxRequest;
//
// Set the completion callback.
// When the lower request is completed, the driver is
// notified through the completion callback.
//
IRequestCallbackRequestCompletion *completionCallback =
QueryIRequestCallbackRequestCompletion();
FxRequest->SetCompletionCallback(
completionCallback,
NULL //pContext
);
completionCallback->Release();
//
// Format the I/O request.
FxRequest->FormatUsingCurrentType( );
//
// Send down the request.
//
HRESULT hrSend = S_OK;
hrSend = FxRequest->Send(
m_FxIoTarget,
0, // Asynchronous
0 // No time-out
);
if (S_OK != hrSend) {
//
// If the send failed, the driver must complete the
// request with the failure.
FxRequest->CompleteWithInformation(hrSend, 0);
}
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
IRequestCallbackRequestCompletion::OnCompletion