DDK内存复制、内存填充、内存清零、内存比较、检查内存读写

运行时函数名的前缀均为Rtl。
一、非重叠内存复制
RtlCopyMemory

二、重叠内存复制
RtlMoveMemory

三、填充内存
RtlFillMemory

四、内存填零
RtlZeroBytes
RtlZeroMemory

似乎内存填零的操作也可以用填充内存的RtlFillMemory来实现。

五、内存比较

RtlCompareMemory

六、检查内存是否可读
ProbeForRead

七、检查内存是否可写
ProbeForWrite

第六、七这两个函数不能返回TRUE或FALSE,而是会引发异常。

七、示例代码

#define BUFFER_SIZE 1024
#pragma INITCODE
VOID RtlTest()
{
PUCHAR pBuffer = ( PUCHAR ) ExAllocatePool( PagedPool, BUFFER_SIZE );

//用零填充内存
RtlZeroMemory( pBuffer, BUFFER_SIZE );

PUCHAR pBuffer2 = ( PUCHAR ) ExAllocatePool( PagedPool, BUFFER_SIZE );
//用固定字节填充内存
RtlFillMemory( pBuffer2, BUFFER_SIZE, 0xAA );

//内存复制
RtlCopyMemory( pBuffer, pBuffer2, BUFFER_SIZE );

//判断内存是否一致
ULONG ulRet = RtlCompareMemory( pBuffer, pBuffer2, BUFFER_SIZE );
if ( ulRet == BUFFER_SIZE )
{
   KdPrint( ( "两个内存块一致!" ) );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值