共用方式為


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 (使用者模式)

另請參閱

RtlFillVolatileMemory

RtlZeroVolatileMemory