Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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) |