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 RtlEqualDeviceMemory routine compares two blocks of device memory to determine whether the specified number of bytes are identical. Cette fonction est sécurisée pour être utilisée sur la mémoire de l’appareil, car elle utilise des exigences d’alignement strictes.
Syntax
BOOL RtlEqualDeviceMemory(
[in] const void* Source1,
[in] const void* Source2,
[in] size_t Length
);
Parameters
[in] Source1
Pointeur vers un bloc alloué par l’appelant de la mémoire de l’appareil à comparer.
[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
Spécifie le nombre d’octets à comparer.
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.
- La fonction utilise des exigences d’alignement strictes pour garantir la gestion appropriée de la mémoire de l’appareil qui peut avoir des effets secondaires ou des exigences d’accès spéciales.
Callers of RtlEqualDeviceMemory can be running at any IRQL if both blocks of memory are resident.
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
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 (mode noyau), volatileaccessu.lib (mode utilisateur) |
| IRQL | N’importe quel niveau (voir la section Remarques) |