Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
The RtlFillDeviceMemory routine fills a block of device memory with the specified fill value and returns a pointer to the filled memory. Diese Funktion ist für die Verwendung im Gerätespeicher sicher, da sie geeignete Zugriffsmuster für Gerätespeicherbereiche verwendet.
Syntax
volatile void * RtlFillDeviceMemory(
[out] volatile void *Destination,
[in] size_t Length,
[in] int Fill
);
Parameters
[out] Destination
Ein Zeiger auf die Startadresse des zu füllenden Speicherblocks für veränderliche Geräte.
[in] Length
Die Größe des Speicherblocks, der in Bytes ausgefüllt werden soll. This value must be less than or equal to the size of the Destination buffer.
[in] Fill
Der Bytewert, mit dem der Speicherblock gefüllt werden soll.
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.
Die Funktion verwendet veränderliche Speicherzugriffe, um eine ordnungsgemäße Behandlung des Gerätespeichers sicherzustellen, die Nebenwirkungen oder spezielle Zugriffsanforderungen aufweisen kann.
Die Funktion ist für die Leistung optimiert, während die Sicherheit für Gerätespeicherzugriffsmuster beibehalten wird.
Die Funktion kann nicht ausgerichtete Speicherzugriffe ausführen, wenn die Plattform dies zulässt.
Die Funktion kann optimierte Füllmuster für größere Speicherblöcke verwenden und gleichzeitig die Sicherheit des Gerätespeichers sicherstellen.
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. Andernfalls muss der Aufrufer unter IRQL <= APC_LEVEL ausgeführt werden.
Diese Funktion funktioniert auf allen Versionen von Windows, nicht nur auf dem neuesten. Sie müssen die neueste WDK verwenden, um die Funktionsdeklaration aus dem wdm.h-Header abzurufen. Außerdem benötigen Sie die Bibliothek (volatileaccessk.lib) aus dem neuesten WDK. Der resultierende Treiber wird jedoch in älteren Versionen von Windows einwandfrei ausgeführt.
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 (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
| Library | volatileaccessk.lib (Kernelmodus), volatileaccessu.lib (Benutzermodus) |
| DLL | NtosKrnl.exe |
| IRQL | Beliebige Ebene (Siehe Abschnitt "Hinweise") |