從指定記憶體中複製記憶體至另一記憶體里.簡稱:複製記憶體.
RtlCopyMemory非重疊複製,而RtlMoveMemory是重疊複製。
基本介紹
- 中文名:RtlMoveMemory
- 功能:複製記憶體
- 返回值:空
- 要求:包含在Ntoskrnl.lib
功能,基本概念,語法,參數,返回值,備註,要求,
功能
根據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。
要求
系統 | Windows 2000或更高版本 |
---|---|
頭檔案 | Wdm.h, Ntddk.h 或 Ntifs.h |
靜態庫 | 包含在Ntoskrnl.lib。 |
任何級別(見備註部分) |