RtlSecureZeroMemory2 函式 (wdm.h)
RtlSecureZeroMemory2 函式是 RtlFillVolatileMemory 的便利包裝函式,與 RtlZeroVolatileMemory 相同。
語法
volatile void * RtlSecureZeroMemory2(
[out] volatile void *Destination,
[in] size_t Length
);
參數
[out] Destination
要填滿零之內存區塊起始位址的指標。
[in] Length
要填入零的記憶體區塊大小,以位元組為單位。
傳回值
傳回 Destination 的值。
備註
RtlSecureZeroMemory2 函式是 RtlFillVolatileMemory 的便利包裝函式,與 RtlZeroVolatileMemory 相同。
如需詳細資訊,請參閱 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
// RtlSecureZeroMemory function.
RtlSecureZeroMemory2(&SensitiveData, sizeof(SensitiveData));
規格需求
需求 | 值 |
---|---|
標頭 | wdm.h (包含 Wdm.h) |
程式庫 | volatileaccessk.lib (核心模式) 、volatileaccessu.lib (使用者模式) |