複製鏈接
請複製以下鏈接發送給好友

RtlMoveMemory

鎖定
從指定內存中複製內存至另一內存裏.簡稱:複製內存.
RtlCopyMemory非重疊複製,而RtlMoveMemory是重疊複製。
中文名
RtlMoveMemory
功    能
複製內存
返回值
要    求
包含在Ntoskrnl.lib

RtlMoveMemory功能

根據C99定義,memcpy沒有考慮重疊的部分,因此他不能保證重疊部分是否被複制。
為了保證重疊部分也被正確複製,C99規定memmove函數完成這個任務。
move版對兩個內存是否重疊進行了判斷,這種判斷卻犧牲了速度。
如果程序員能確保複製的內存沒有重疊,請選擇使用memcpy。
如果不能保證,請選擇使用memmove函數。
為了保證可移植性,DDK用宏對這兩個函數進行了封裝,即:RtlCopyMemory和RtlMoveMemory。 [1] 

RtlMoveMemory基本概念

RtlMoveMemory語法

VOID RtlMoveMemory
(VOID UNALIGNED *Destination,
const VOID UNALIGNED *Source,
SIZE_T Length);

RtlMoveMemory參數

Destination :指向移動目的地址的指針
Source :指向要複製的內存地址的指針。
Length :指定要複製的字節數。

RtlMoveMemory返回值

RtlMoveMemory其他信息

傳遞到RtlMoveMemory的 (Source + Length)的地址範圍可以和Destination 發生重疊。
如果這兩個內存塊駐留,則調用RtlMoveMemory者可以運行在任何IRQL。否則,調用者必須運行在IRQL<= APC_LEVEL。

RtlMoveMemory要求

系統
Windows 2000或更高版本
頭文件
Wdm.h, Ntddk.h 或 Ntifs.h
靜態庫
包含在Ntoskrnl.lib。

任何級別(見備註部分)
參考資料