Metode IWDFIoRequest2::RetrieveInputMemory (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 RetrieveInputMemory mengambil antarmuka IWDFMemory dari objek memori kerangka kerja yang mewakili buffer input permintaan I/O.
Sintaks
HRESULT RetrieveInputMemory(
[out] IWDFMemory **Memory
);
Parameter
[out] Memory
Alamat lokasi yang menerima pointer ke antarmuka IWDFMemory dari objek memori UMDF.
Nilai kembali
RetrieveInputMemory mengembalikan S_OK jika operasi berhasil. Jika tidak, metode ini dapat mengembalikan nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Permintaan I/O tidak menyediakan buffer output. |
|
Tidak tersedia cukup memori untuk mengambil buffer. Driver harus menyelesaikan permintaan dengan nilai status kesalahan. |
Metode ini mungkin mengembalikan salah satu nilai lain yang dikandung Winerror.h.
Keterangan
Buffer input permintaan berisi informasi, seperti data yang akan ditulis ke disk, yang disediakan oleh penciut permintaan. Driver Anda dapat memanggil RetrieveInputMemory untuk mendapatkan buffer input untuk permintaan tulis atau permintaan kontrol I/O perangkat, tetapi tidak untuk permintaan baca (karena permintaan baca tidak menyediakan data input).
Metode RetrieveInputMemory mengambil buffer input untuk permintaan I/O yang menggunakan I/O yang di-buffer atau metode I/O langsung untuk mengakses buffer data.
Jika RetrieveInputMemory mengembalikan S_OK, driver menerima pointer ke antarmuka IWDFMemory dari objek memori UMDF yang mewakili buffer input. Untuk mengakses buffer, driver harus memanggil IWDFMemory::GetDataBuffer.
Driver dapat mengakses objek memori kerangka kerja yang diambil hingga menyelesaikan permintaan I/O. Sebelum driver menyelesaikan permintaan I/O, driver harus memanggil IWDFMemory::Release.
Alih-alih memanggil RetrieveInputMemory, driver dapat memanggil IWDFIoRequest2::RetrieveInputBuffer, yang mengambil alamat dan panjang buffer.
Untuk informasi selengkapnya tentang mengakses buffer data permintaan I/O, lihat Mengakses Buffer Data di Driver UMDF-Based.
Contoh
Contoh kode berikut menunjukkan bagaimana fungsi panggilan balik IQueueCallbackWrite::OnWrite dapat memperoleh antarmuka IWDFMemory dari objek memori kerangka kerja yang mewakili buffer input permintaan tulis. Contoh kemudian memformat dan mengirim permintaan tulis ke target I/O USB.
VOID
STDMETHODCALLTYPE
CMyQueue::OnWrite(
__in IWDFIoQueue *pWdfQueue,
__in IWDFIoRequest *pWdfRequest,
__in SIZE_T BytesToWrite
)
{
HRESULT hr = S_OK;
IWDFMemory * pInputMemory = NULL;
IWDFUsbTargetPipe * pOutputPipe = m_Device->GetOutputPipe();
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = pWdfRequest;
hr = r2->RetrieveInputMemory(&pInputMemory);
if (FAILED(hr)) goto Exit;
hr = pOutputPipe->FormatRequestForWrite(
pWdfRequest,
NULL, //pFile
pInputMemory,
NULL, //Memory offset
NULL //DeviceOffset
);
Exit:
if (FAILED(hr))
{
pWdfRequest->Complete(hr);
}
else
{
ForwardFormattedRequest(pWdfRequest, pOutputPipe);
}
SAFE_RELEASE(pInputMemory);
return;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Akhir dukungan | Tidak tersedia di UMDF 2.0 dan yang lebih baru. |
Target Platform | Desktop |
Versi UMDF minimum | 1.9 |
Header | wudfddi.h (termasuk Wudfddi.h) |
DLL | WUDFx.dll |
Lihat juga
IWDFIoRequest2::RetrieveInputBuffer
IWDFIoRequest2::RetrieveOutputBuffer
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