内存清理常用函数

内存清理常用函数

0x01.RtlSecureZeroMemory

PVOID RtlSecureZeroMemory(
    _Out_ PVOID  ptr,
    _In_  SIZE_T cnt
);
  • The RtlSecureZeroMemory routine fills a block of memory with zeros in a way that is guaranteed to be secure.

Parameters

ptr [out]
    Pointer to the memory buffer to be filled with zeros.//需要清零的指针
cnt [in]
    Specifies the number of bytes to be filled with zeros.//需要填充长度
Return value

Return value

None

Remarks

The effect of RtlSecureZeroMemory is identical to that of RtlZeroMemory, except that it is guaranteed to zero the memory location, even if it is not subsequently written to. (The compiler can optimize away a call to RtlZeroMemory, if it determines that the caller does not access that memory range again.)

Use RtlSecureZeroMemory to guarantee that sensitive information has been zeroed out. For example, suppose that a function uses a local array variable to store password information. Once the function exits, the password information can remain in the same memory location unless zeroed out by RtlSecureZeroMemory.

RtlSecureZeroMemory is slower than RtlZeroMemory; therefore, if security is not an issue, use RtlZeroMemory instead.

Callers of RtlSecureZeroMemory can be running at any IRQL if the ptr block is in nonpaged pool. Otherwise, the caller must be running at IRQL <= APC_LEVEL.

Requirements

Target platform
VersionAvailable in Windows Server 2003 and later versions of Windows. (Because the routine is declared inline, the body of the routine can be included in earlier versions of the operating system.)
HeaderWdm.h (include Wdm.h, Ntddk.h, or Ntifs.h)
IRQLAny level (See Remarks section)

0x02.RtlFillMemory

VOID RtlFillMemory(
  _Out_ VOID UNALIGNED *Destination,
  _In_  SIZE_T         Length,
  _In_  UCHAR          Fill
);

Parameters

Destination [out]
    A pointer to the block of memory to be filled.
Length [in]
    The number of bytes in the block of memory to be filled.
Fill [in]
    The value to fill the destination memory block with. This value is copied to every byte in the memory block that is defined by Destination and Length.

Return value
None

Remarks

Callers of RtlFillMemory can be running at any IRQL if the destination memory block is in nonpaged system memory. Otherwise, the caller must be running at IRQL <= APC_LEVEL.

0x03.RtlZeroMemory

VOID RtlZeroMemory(
  _Out_ VOID UNALIGNED *Destination,
  _In_  SIZE_T         Length
);

Parameters

Destination [out]
    A pointer to the memory block to be filled with zeros.
Length [in]
    The number of bytes to fill with zeros.

Return value

None

Remarks

To zero out a memory buffer to erase security-sensitive data, use RtlSecureZeroMemory instead.
Callers of RtlZeroMemory can be running at any IRQL if the destination memory block is in nonpaged system memory. Otherwise, the caller must be running at IRQL <= APC_LEVEL.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值