Share via


Función ZeroDeviceMemory

La función ZeroDeviceMemory establece el contenido de un búfer en ceros sin interferencias de las optimizaciones del compilador en situaciones en las que el desarrollador también debe asegurarse de que no se generarán errores de alineación al acceder a la memoria del dispositivo.

Importante

Parte de la información hace referencia a un producto de versión preliminar que puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

Parámetros

Destino del parámetro [out]

Un puntero a la dirección inicial del bloque de memoria que se rellenará con ceros.

Longitud del parámetro [in]

Tamaño del bloque de memoria que se rellenará con ceros, en bytes.

Sintaxis

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

Comentarios

Esta API es un contenedor de conveniencia alrededor de FillDeviceMemory. Consulte los comentarios de FillDeviceMemory para obtener más información.

Nota:

Esta función funciona en todas las versiones de Windows, no solo en la más reciente. Es necesario consumir el SDK más reciente para obtener la declaración de función del encabezado winbase.h. También se necesita la biblioteca (volatileaccessu.lib) del SDK más reciente. Sin embargo, el binario resultante se ejecutará correctamente en versiones anteriores de Windows.

Ejemplo

// 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);

Requisitos

Cliente mínimo admitido: compilación preliminar de Windows 11 Insider

Encabezado: winbase.h (incluir Winbase.h)

Biblioteca en modo kernel: volatileaccessk.lib

Biblioteca en modo de usuario: volatileaccessu.lib

Consulte también