驱动编程:内存管理基本函数
1) 内存间复制(非重叠)
应用:比如将需要显示的内容,从缓冲区复制到内存先看等
VOID RtlCopyMemory(
IN VOID UNALLGNED* Destination,
IN CONST VOID UNALLGNED *Source,
IN SIZE_T Length);//表示要复制的内存长度,单位是字节
注:RtlCopyBytes类似
2) 内存间复制(可重叠)
A B C D
如果将A到C段的内存,复制到B到D段,就会出现内存重叠的现象了
注:如果程序员能够确保内存没有重叠,请使用 RtlCopyMemory
如果不能保证内存是否重叠,则使用 RtlMoveMemory
VOID RtlMoveMemory(
IN VOID UNALLGNED *Destination,
IN CONST VOID UNALLGNED *Source,
IN SIZE_T Length); //表示要复制的内存长度,单位是字节
3) 内存的填充
对某段内存区域用固定的字节填充
VOID RtlFillMemory(
IN VOID UNALLGNED *Destination,
IN SIZE_T length,//长度
IN UCHAR Fill);//需要填充的字节
注:这个函数的参数后两个与memset相反
对某段内存填0
VOID RtlZeroMemory(
IN VOID UNALLGNED *Destination,
IN SIZE_T Length
)
注:RtlZeroBytes与之类似
4) 内存比较
ULONG RtlEqualMemory(
CONST VOID *Sources1,
CONST VOID *Sources2,
SIZE_T Length//比较的长度,单位为字节
)
注:两段内存一致的情况下返回非0,不一致的情况下返回0