Fungsi WdfMemoryAssignBuffer (wdfmemory.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfMemoryAssignBuffer menetapkan buffer tertentu ke objek memori yang dibuat driver dengan memanggil WdfMemoryCreatePreallocated.

Sintaks

NTSTATUS WdfMemoryAssignBuffer(
  [in] WDFMEMORY Memory,
  [in] PVOID     Buffer,
  [in] size_t    BufferSize
);

Parameter

[in] Memory

Handel ke objek memori kerangka kerja yang diperoleh dengan memanggil WdfMemoryCreatePreallocated.

[in] Buffer

Penunjuk ke buffer yang disediakan driver.

[in] BufferSize

Ukuran bukan nol, dalam byte, dari buffer yang ditinjuk Buffer .

Nilai kembali

WdfMemoryAssignBuffer mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER
Parameter yang tidak valid terdeteksi.
 

Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Metode ini dapat menetapkan buffer ke objek memori yang dibuat WdfMemoryCreatePreallocated , tetapi tidak ke objek memori yang dibuat WdfMemoryCreate .

Buffer yang dirujuk parameter Buffer dapat dialokasikan dari kumpulan memori yang dapat dipaginasi atau tidak dapat di-page. Jika driver mengalokasikan buffer dari kumpulan yang dapat di-pageable, atau jika buffer berasal dari kumpulan pageable karena berasal dari aplikasi mode pengguna, driver harus mengakses buffer hanya di IRQL < DISPATCH_LEVEL. (Perhatikan bahwa fungsi panggilan balik EvtCleanupCallback dan EvtDestroyCallback driver, jika disediakan, dapat dipanggil di IRQL <= DISPATCH_LEVEL.)

Untuk informasi selengkapnya tentang objek memori kerangka kerja, lihat Menggunakan Buffer Memori.

Contoh

Contoh kode berikut mengalokasikan buffer lalu menetapkan buffer ke objek memori kerangka kerja.

PVOID  pNewBuffer = NULL;

pNewBuffer = ExAllocatePoolWithTag(
                                   NonPagedPool,
                                   NEW_BUFFER_SIZE,
                                   MY_DRIVER_TAG
                                   );
if (pNewBuffer == NULL){
    goto Error;
}

status = WdfMemoryAssignBuffer(
                               memHandle,
                               pNewBuffer,
                               NEW_BUFFER_SIZE
                               );

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header wdfmemory.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL Tingkat apa pun
Aturan kepatuhan DDI BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

Lihat juga

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated