Função ZeroDeviceMemory

A função ZeroDeviceMemory define o conteúdo de um buffer para zero sem interferência de otimizações do compilador em situações em que os desenvolvedores precisam ter certeza de que falhas de alinhamento não serão geradas ao acessar a memória do dispositivo.

Importante

Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.

Parâmetros

Parâmetro Destination [saída]

Um ponteiro para o endereço inicial do bloco de memória a ser preenchido com zeros.

Comprimento do param [entrada]

O tamanho do bloco de memória a ser preenchido com zeros, em bytes.

Sintaxe

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

Comentários

Essa API é um wrapper de conveniência em torno de FillDeviceMemory. Veja os comentários de FillDeviceMemory para obter mais informações.

Observação

Esta função é compatível com todas as versões do Windows, não apenas as mais recentes. Você precisa utilizar o SDK mais recente para obter a declaração de função do cabeçalho winbase.h. Você também precisa da biblioteca (volatileaccessu.lib) do SDK mais recente. No entanto, o binário resultante será executado bem em versões mais antigas do Windows.

Exemplo

// 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 suportado: Windows 11 Insider Preview Build TBD

Cabeçalho: winbase.h (incluir Winbase.h)

Biblioteca de modo kernel: volatileaccessk.lib

Biblioteca de modo de usuário: volatileaccessu.lib

Confira também