Bagikan melalui


Metode IWDFIoRequest2::RetrieveInputBuffer (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 RequestRetrieveInputBuffer mengambil buffer input permintaan I/O.

Sintaks

HRESULT RetrieveInputBuffer(
  [in]            SIZE_T MinimumRequiredCb,
  [out]           PVOID  *Buffer,
  [out, optional] SIZE_T *BufferCb
);

Parameter

[in] MinimumRequiredCb

Ukuran buffer minimum, dalam byte, yang dibutuhkan driver untuk memproses permintaan I/O. Nilai ini bisa nol jika tidak ada ukuran buffer minimum.

[out] Buffer

Penunjuk ke lokasi yang menerima alamat buffer.

[out, optional] BufferCb

Penunjuk ke lokasi yang menerima ukuran buffer, dalam byte. Parameter ini bersifat opsional dan dapat berupa NULL.

Nilai kembali

RequestRetrieveInputBuffer mengembalikan S_OK jika operasi berhasil. Jika tidak, metode ini dapat mengembalikan nilai berikut:

Menampilkan kode Deskripsi
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
Permintaan I/O tidak menyediakan buffer input, atau ukuran buffer input kurang dari ukuran minimum yang ditentukan MinimumRequiredCb .
E_OUTOFMEMORY
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 berasal dari permintaan yang disediakan. Driver Anda dapat memanggil RequestRetrieveInputBuffer 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 RequestRetrieveInputBuffer mengambil buffer input untuk permintaan I/O yang menggunakan I/O yang di-buffer atau metode I/O langsung untuk mengakses buffer data.

Jika RequestRetrieveInputBuffer mengembalikan S_OK, driver menerima alamat dan, secara opsional, ukuran buffer input.

Driver dapat mengakses buffer yang diambil sampai menyelesaikan permintaan I/O.

Alih-alih memanggil RequestRetrieveInputBuffer, driver dapat memanggil IWDFIoRequest2::RetrieveInputMemory, yang membuat objek memori kerangka kerja yang mewakili buffer.

Untuk informasi selengkapnya tentang mengakses buffer data permintaan I/O, lihat Mengakses Buffer Data di Driver UMDF-Based.

Contoh

Contoh kode berikut menunjukkan segmen fungsi panggilan balik IQueueCallbackDeviceIoControl::OnDeviceIoControl driver serial. Dari buffer input permintaan I/O, segmen kode mendapatkan tingkat baud yang harus diatur untuk perangkat.

VOID
STDMETHODCALLTYPE
  CMyQueue::OnDeviceIoControl(
    __in IWDFIoQueue*  FxQueue,
    __in IWDFIoRequest*  FxRequest,
    __in ULONG  ControlCode,
    __in SIZE_T  InputBufferCb,
    __in SIZE_T  OutputBufferCb
    )
{
    PBYTE buffer;
    SIZE_T bufferSize;
    HRESULT hr;
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = FxRequest;

    switch (ControlCode)
    {
        case IOCTL_SERIAL_SET_BAUD_RATE: 
        {
            //
            // Obtain the baud rate from the write request's input buffer.
            //
            hr = r2->RetrieveInputBuffer(sizeof(SERIAL_BAUD_RATE),
                                         (PVOID*) &buffer, 
                                         &bufferSize);
...
        }
    }
}

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

IWDFIoRequest2::RetrieveInputMemory

IWDFIoRequest2::RetrieveOutputBuffer

IWDFIoRequest2::RetrieveOutputMemory

IWDFIoRequest::GetInputMemory

IWDFIoRequest::GetOutputMemory