Freigeben über


RtlSecureZeroMemory-Makro (wdm.h)

The RtlSecureZeroMemory routine securely fills a block of memory with zeros in a way that is guaranteed not to be optimized away by the compiler.

Syntax

PVOID RtlSecureZeroMemory(
  [in, out] PVOID  Ptr,
  [in]      SIZE_T cnt
);

Parameters

[in, out] Ptr

Ein Zeiger auf den Speicherblock, der sicher mit Nullen gefüllt werden soll.

[in] cnt

Die Anzahl der Bytes, die mit Nullen gefüllt werden sollen.

Return value

RtlSecureZeroMemory returns a pointer to the memory block that was filled (Ptr).

Remarks

  • Die Funktion verwendet veränderliche Speicherzugriffe, um sicherzustellen, dass der Compiler den Zeroing-Vorgang nicht optimieren kann, auch wenn der Arbeitsspeicher nach dem Aufruf nicht verwendet wird.

  • This differs from RtlZeroMemory, which may be optimized away by the compiler if the memory is not accessed again.

  • Die Funktion garantiert, dass alle angegebenen Bytes auf Null festgelegt werden und dass dieser Vorgang nicht von Compileroptimierungen entfernt wird.

Callers of RtlSecureZeroMemory can be running at any IRQL if the destination memory block is in nonpaged system memory. Andernfalls muss der Aufrufer unter IRQL <= APC_LEVEL ausgeführt werden.

Example

UCHAR SensitiveData[256];
UCHAR CryptographicKey[32];

// Use sensitive data
ProcessSensitiveInformation(SensitiveData);
PerformCryptographicOperation(CryptographicKey);

// Securely clear sensitive data from memory
// This will not be optimized away by the compiler
RtlSecureZeroMemory(SensitiveData, sizeof(SensitiveData));
RtlSecureZeroMemory(CryptographicKey, sizeof(CryptographicKey));

Requirements

Requirement Value
Target Platform Universal
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (Siehe Abschnitt "Hinweise")

See also

RtlZeroMemory

RtlFillVolatileMemory

RtlSetVolatileMemory