Compartilhar via


Função RtlFillDeviceMemory (wdm.h)

The RtlFillDeviceMemory routine fills a block of device memory with the specified fill value and returns a pointer to the filled memory. Essa função é segura para uso na memória do dispositivo porque usa padrões de acesso apropriados para regiões de memória do dispositivo.

Syntax

volatile void * RtlFillDeviceMemory(
  [out] volatile void *Destination,
  [in]  size_t        Length,
  [in]  int           Fill
);

Parameters

[out] Destination

Um ponteiro para o endereço inicial do bloco de memória do dispositivo volátil a ser preenchido.

[in] Length

O tamanho do bloco de memória a ser preenchido, em bytes. This value must be less than or equal to the size of the Destination buffer.

[in] Fill

O valor de byte com o qual preencher o bloco de memória.

Return value

RtlFillDeviceMemory returns a pointer to the filled volatile device memory block (Destination).

Remarks

The RtlFillDeviceMemory routine is designed for safe filling of device memory regions where standard memory filling functions might not be appropriate due to the special characteristics of device memory.

  • A função usa acessos de memória voláteis para garantir o tratamento adequado da memória do dispositivo que pode ter efeitos colaterais ou requisitos especiais de acesso.

  • A função é otimizada para desempenho, mantendo a segurança para padrões de acesso à memória do dispositivo.

  • A função poderá executar acessos de memória não assinados se a plataforma permitir.

  • A função pode usar padrões de preenchimento otimizados para blocos de memória maiores, garantindo a segurança da memória do dispositivo.

This function provides RtlFillMemory behavior specifically designed for device memory regions.

Callers of RtlFillDeviceMemory can be running at any IRQL if the destination memory block is in nonpaged system memory. Caso contrário, o chamador deverá estar em execução no IRQL <= APC_LEVEL.

Essa função funciona em todas as versões do Windows, não apenas nas mais recentes. Você precisa consumir o WDK mais recente para obter a declaração de função do cabeçalho wdm.h. Você também precisa da biblioteca (volatileaccessk.lib) do WDK mais recente. No entanto, o driver resultante será executado bem em versões mais antigas do Windows.

Example

volatile UCHAR* DeviceBuffer;
SIZE_T BufferSize = 1024;

// Allocate or map device memory
DeviceBuffer = MapDeviceMemory(BufferSize);

// Fill the device memory with a specific pattern
volatile void* result = RtlFillDeviceMemory(DeviceBuffer, BufferSize, 0xAA);

// Use the filled device memory
ProcessDeviceData(DeviceBuffer, BufferSize);

// Clean up
UnmapDeviceMemory(DeviceBuffer);

Requirements

Requirement Value
Target Platform Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library volatileaccessk.lib (modo Kernel), volatileaccessu.lib (modo usuário)
DLL NtosKrnl.exe
IRQL Qualquer nível (seção Ver Comentários)

See also

RtlFillMemory

RtlSetVolatileMemory

RtlCompareDeviceMemory

RtlEqualDeviceMemory