Fungsi ZeroDeviceMemory

Fungsi ZeroDeviceMemory mengatur konten buffer ke nol tanpa gangguan dari pengoptimalan kompilator dalam situasi di mana pengembang perlu juga memastikan bahwa kesalahan penyelarasan tidak akan dihasilkan saat mengakses memori perangkat.

Penting

Beberapa informasi berkaitan dengan produk prarilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Parameter

Tujuan Param [keluar]

Penunjuk ke alamat awal blok memori untuk diisi dengan nol.

Panjang Param [in]

Ukuran blok memori untuk diisi dengan nol, dalam byte.

Sintaks

volatile void*
  ZeroDeviceMemory (
    _Out_writes_bytes_all_(Length) volatile void* Destination,
    SIZE_T Length
  );

Keterangan

API ini adalah pembungkus kenyamanan di sekitar FillDeviceMemory. Lihat sambutan FillDeviceMemory untuk informasi selengkapnya.

Catatan

Fungsi ini berfungsi pada semua versi Windows, bukan hanya yang terbaru. Anda perlu menggunakan SDK terbaru untuk mendapatkan deklarasi fungsi dari winbase.h header. Anda juga memerlukan pustaka (volatileaccessu.lib) dari SDK terbaru. Namun, biner yang dihasilkan akan berjalan dengan baik pada versi Windows yang lebih lama.

Contoh

// In this scenario we are setting data on memory mapped
// as "device memory" (i.e. memory not backed by RAM) to the value zero. On
// some platforms like ARM64, device memory cannot tolerate
// memory accesses that are not naturally aligned (i.e. a 4-byte
// load must be 4-byte aligned). Functions like memset, FillMemory,
// and even FillVolatileMemory may perform unaligned memory accesses
// because it is typically faster to do this.
// To ensure only naturally aligned accesses happen, use FillDeviceMemory.
//
// ZeroDeviceMemory is an wrapper around FillDeviceMemory that sets the memory
// to zero.

ZeroDeviceMemory(DeviceMemoryBuffer, 100);

Persyaratan

Klien minimum yang didukung: Windows 11 Insider Preview Build TBD

Header: winbase.h (termasuk Winbase.h)

Pustaka mode kernel: volatileaccessk.lib

Pustaka mode pengguna: volatileaccessu.lib

Baca juga