从指定内存中复制内存至另一内存里.简称:复制内存.
功能
根据C99定义,memcpy没有考虑重叠的部分,因此他不能保证重叠部分是否被复制。
为了保证重叠部分也被正确复制,C99规定memmove函数完成这个任务。
move版对两个内存是否重叠进行了判断,这种判断却牺牲了速度。
如果程序员能确保复制的内存没有重叠,请选择使用memcpy。
如果不能保证,请选择使用memmove函数。
为了保证可移植性,DDK用宏对这两个函数进行了封装,即:RtlCopyMemory和RtlMoveMemory。
基本概念
语法
VOID RtlMoveMemory
(VOID UNALIGNED *Destination,
const VOID UNALIGNED *Source,
SIZE_T Length);
参数
Destination :指向移动目的地址的
指针。
Source :指向要复制的内存地址的指针。
Length :指定要复制的字节数。
返回值
空
其他信息
传递到RtlMoveMemory的 (Source + Length)的地址范围可以和Destination 发生重叠。
如果这两个内存块驻留,则调用RtlMoveMemory者可以运行在任何IRQL。否则,调用者必须运行在IRQL<= APC_LEVEL。
要求