RtlZeroVolatileMemory 函数 (wdm.h)
RtlZeroVolatileMemory 函数是围绕 RtlFillVolatileMemory 的便捷包装器。
语法
volatile void * RtlZeroVolatileMemory(
[out] volatile void *Destination,
[in] size_t Length
);
参数
[out] Destination
指向要用零填充的内存块的起始地址的指针。
[in] Length
要用零填充的内存块的大小(以字节为单位)。
返回值
返回 Destination 的值。
注解
RtlZeroVolatileMemory 函数是围绕 RtlFillVolatileMemory 的便捷包装器。
有关详细信息,请参阅 RtlFillVolatileMemory 的备注部分。
注意
此函数适用于所有版本的 Windows,而不仅仅是最新版本。 需要使用最新的 WDK 从 wdm.h 标头获取函数声明。 还需要从最新 WDK (volatileaccessk.lib) 库。 但是,生成的驱动程序将在较旧版本的 Windows 上运行良好。
示例
UCHAR SensitiveData[100];
// Imagine we temporarily store some sensitive cryptographic
// material in a buffer.
StoreCryptographicKey(&SensitiveData);
DoCryptographicOperation(&SensitiveData);
// Now that we are done using the sensitive data we want to
// erase it from the stack. We cannot call RtlFillMemory because
// if the compiler realizes that "SensitiveData" is not
// referenced again the compiler can remove the call to RtlFillMemory.
// Instead we can call RtlSecureZeroMemory2, RtlZeroVolatileMemory, or RtlFillVolatileMemory
// (the former two are convenience wrappers around the latter). These
// calls will not be optimized away by the compiler.
// Note that RtlSecureZeroMemory2 performs better than the
// RtlSecureZeroMemory function.
RtlZeroVolatileMemory(&SensitiveData, sizeof(SensitiveData));
要求
要求 | 值 |
---|---|
Header | wdm.h (包括 Wdm.h) |
Library | volatileaccessk.lib (内核模式) ,volatileaccessu.lib (用户模式) |