Partager via


RtlFillDeviceMemory, fonction (wdm.h)

The RtlFillDeviceMemory routine fills a block of device memory with the specified fill value and returns a pointer to the filled memory. Cette fonction est sécurisée pour une utilisation sur la mémoire de l’appareil, car elle utilise des modèles d’accès appropriés pour les régions de mémoire de l’appareil.

Syntax

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

Parameters

[out] Destination

Pointeur vers l’adresse de départ du bloc de mémoire d’appareil volatile à remplir.

[in] Length

Taille du bloc de mémoire à remplir, en octets. This value must be less than or equal to the size of the Destination buffer.

[in] Fill

Valeur d’octet avec laquelle remplir le bloc de mémoire.

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.

  • La fonction utilise des accès à la mémoire volatile pour garantir une gestion appropriée de la mémoire de l’appareil qui peut avoir des effets secondaires ou des exigences d’accès spéciales.

  • La fonction est optimisée pour les performances tout en conservant la sécurité des modèles d’accès à la mémoire de l’appareil.

  • La fonction peut effectuer des accès à la mémoire non alignés si la plateforme l’autorise.

  • La fonction peut utiliser des modèles de remplissage optimisés pour les blocs de mémoire plus volumineux tout en garantissant la sécurité de la mémoire de l’appareil.

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. Dans le cas contraire, l’appelant doit s’exécuter à l'<IRQL = APC_LEVEL.

Cette fonction fonctionne sur toutes les versions de Windows, pas seulement sur la dernière version. Vous devez utiliser la dernière clé WDK pour obtenir la déclaration de fonction à partir de l’en-tête wdm.h. Vous avez également besoin de la bibliothèque (volatileaccessk.lib) à partir de la dernière clé WDK. Toutefois, le pilote résultant s’exécutera correctement sur les versions antérieures de 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 (mode noyau), volatileaccessu.lib (mode utilisateur)
DLL NtosKrnl.exe
IRQL N’importe quel niveau (voir la section Remarques)

See also

RtlFillMemory

RtlSetVolatileMemory

RtlCompareDeviceMemory

RtlEqualDeviceMemory