Metode IWDFDriver::CreateWdfMemory (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 CreateWdfMemory membuat objek memori kerangka kerja dan mengalokasikan, untuk objek memori, buffer data dengan ukuran bukan nol yang ditentukan.

Sintaks

HRESULT CreateWdfMemory(
  [in]           SIZE_T     BufferSize,
  [in, optional] IUnknown   *pCallbackInterface,
  [in, optional] IWDFObject *pParentObject,
  [out]          IWDFMemory **ppWdfMemory
);

Parameter

[in] BufferSize

Ukuran yang ditentukan bukan nol, dalam byte, data untuk buffer data objek memori WDF yang baru dibuat.

[in, optional] pCallbackInterface

Penunjuk ke antarmuka IUnknown yang digunakan kerangka kerja untuk menentukan fungsi panggilan balik peristiwa terkait objek yang berlangganan driver pada objek memori yang baru dibuat. Parameter ini bersifat opsional. Driver dapat melewati NULL jika driver tidak memerlukan pemberitahuan. Antarmuka IUnknown digunakan untuk pembersihan dan pembuangan objek. Jika driver melewati pointer yang valid, kerangka kerja akan memanggil QueryInterface pada antarmuka IUnknown untuk antarmuka IObjectCleanup . Jika kerangka kerja mendapatkan antarmuka IObjectCleanup driver, kerangka kerja kemudian dapat memanggil metode IObjectCleanup::OnCleanup driver untuk memberi tahu driver bahwa objek memori dibersihkan.

[in, optional] pParentObject

Penunjuk ke antarmuka IWDFObject untuk objek induk objek memori yang dibuat. Jika NULL, objek driver menjadi induk default.

[out] ppWdfMemory

Penunjuk ke buffer yang menerima penunjuk ke antarmuka IWDFMemory untuk objek memori WDF yang baru dibuat.

Mengembalikan nilai

CreateWdfMemory mengembalikan S_OK jika operasi berhasil. Jika tidak, metode ini mengembalikan salah satu kode kesalahan yang ditentukan dalam Winerror.h.

Keterangan

Metode CreateWdfMemory mengalokasikan buffer ukuran yang ditentukan parameter BufferSize , dan membuat objek memori kerangka kerja yang mewakili buffer.

Jika NULL ditentukan dalam parameter pParentObject , objek driver menjadi objek induk default untuk objek memori yang baru dibuat. Jika driver UMDF membuat objek memori yang digunakan driver dengan objek perangkat tertentu, objek permintaan, atau objek kerangka kerja lainnya, driver harus mengatur objek induk objek memori dengan tepat. Ketika objek induk dihapus, objek memori dan buffernya dihapus.

Driver UMDF juga dapat menghapus objek memori dan buffernya dengan memanggil IWDFObject::D eleteWdfObject.

Driver UMDF tidak dapat membuat objek memori dengan buffer ukuran yang ditentukan nol. Jika driver harus menggunakan buffer ukuran yang ditentukan nol, driver harus menggunakan objek memori NULL sebagai gantinya. Misalnya, jika driver harus menggunakan buffer ukuran yang ditentukan nol dalam permintaan baca, driver harus meneruskan NULL ke parameter pOutputMemory dalam panggilan ke metode IWDFIoTarget::FormatRequestForRead .

Contoh

Contoh kode berikut menunjukkan cara membuat objek memori yang dapat menyimpan informasi yang dibaca dari titik akhir USB.

HRESULT
CUmdfHidDevice::PrepareReader(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;
    CComPtr<IWDFDriver> wdfDriver;
    CComPtr<IWDFIoRequest> wdfRequest;

    HRESULT hr;

    GetWdfDevice(&wdfDevice);
    wdfDevice->GetDriver(&wdfDriver);

    // Open the interrupt pipe.
    hr = m_HidInterface->RetrieveUsbPipeObject(
                         USB_HID_INTERRUPT_PIPE_INDEX,
                         &m_InterruptPipe
                         );

    // Allocate a memory object to hold information that 
    // is read from the interrupt pipe. 
    // This memory object will be reused.
    if (SUCCEEDED(hr))
    {
        hr = wdfDriver->CreateWdfMemory(m_ReadBufferSize,
                                        NULL,
                                        wdfDevice,
                                        &m_ReadMemory);
    }

    return hr;
}

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

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFIoTarget::FormatRequestForRead

IWDFMemory

IWDFObject

IWDFObject::D eleteWdfObject