Freigeben über


RtlEqualDeviceMemory-Makro (wdm.h)

The RtlEqualDeviceMemory routine compares two blocks of device memory to determine whether the specified number of bytes are identical. Diese Funktion ist sicher für die Verwendung im Gerätespeicher, da sie strenge Ausrichtungsanforderungen verwendet.

Syntax

BOOL RtlEqualDeviceMemory(
   [in] const void* Source1,
   [in] const void* Source2,
   [in] size_t      Length
);

Parameters

[in] Source1

Ein Zeiger auf einen vom Aufrufer zugewiesenen Block des zu vergleichenden Gerätespeichers.

[in] Source2

A pointer to a caller-allocated block of device memory that is compared to the block of memory to which Source1 points.

[in] Length

Gibt die Anzahl der Bytes an, die verglichen werden sollen.

Return value

RtlEqualDeviceMemory returns TRUE if Source1 and Source2 are equivalent; otherwise, it returns FALSE.

Remarks

RtlEqualDeviceMemory begins the comparison with byte zero of each block.

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

  • Die Funktion verwendet strenge Ausrichtungsanforderungen, um die ordnungsgemäße Handhabung des Gerätespeichers sicherzustellen, die Nebenwirkungen oder spezielle Zugriffsanforderungen aufweisen können.

Callers of RtlEqualDeviceMemory can be running at any IRQL if both blocks of memory are resident.

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

UCHAR DeviceBuffer1[256];
UCHAR DeviceBuffer2[256];

// Read data from device memory into buffers
ReadFromDevice(DeviceBuffer1, sizeof(DeviceBuffer1));
ReadFromDevice(DeviceBuffer2, sizeof(DeviceBuffer2));

// Compare the device memory buffers
if (RtlEqualDeviceMemory(DeviceBuffer1, DeviceBuffer2, sizeof(DeviceBuffer1))) {
    DbgPrint("Device buffers are identical\n");
} else {
    DbgPrint("Device buffers are different\n");
}

Requirements

Requirement Value
Target Platform Desktop
Header wdm.h (include Wdm.h)
Library volatileaccessk.lib (Kernelmodus), volatileaccessu.lib (Benutzermodus)
IRQL Beliebige Ebene (Siehe Abschnitt "Hinweise")

See also

RtlEqualMemory

RtlCompareDeviceMemory