Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
The RtlEqualDeviceMemory routine compares two blocks of device memory to determine whether the specified number of bytes are identical. Эта функция безопасна для использования в памяти устройства, так как она использует строгие требования к выравниванию.
Syntax
BOOL RtlEqualDeviceMemory(
[in] const void* Source1,
[in] const void* Source2,
[in] size_t Length
);
Parameters
[in] Source1
Указатель на выделенный вызывающим блок памяти устройства для сравнения.
[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
Указывает количество байтов для сравнения.
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.
- Функция использует строгие требования к выравниванию, чтобы обеспечить правильную обработку памяти устройства, которая может иметь побочные эффекты или специальные требования к доступу.
Callers of RtlEqualDeviceMemory can be running at any IRQL if both blocks of memory are resident.
Эта функция работает во всех версиях Windows, а не только на последних версиях. Чтобы получить объявление функции из заголовка wdm.h, необходимо использовать последнюю версию WDK. Вам также нужна библиотека (volatileaccessk.lib) из последней версии WDK. Однако результирующий драйвер будет работать в более ранних версиях Windows.
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 (режим ядра), volatileaccessu.lib (режим пользователя) |
| IRQL | Любой уровень (см. раздел "Примечания") |