RtlSecureZeroMemory2 함수(wdm.h)
RtlSecureZeroMemory2 함수는 RtlFillVolatileMemory에 대한 편리한 래퍼이며 RtlZeroVolatileMemory와 동일합니다.
구문
volatile void * RtlSecureZeroMemory2(
[out] volatile void *Destination,
[in] size_t Length
);
매개 변수
[out] Destination
0으로 채울 메모리 블록의 시작 주소에 대한 포인터입니다.
[in] Length
0으로 채울 메모리 블록의 크기(바이트)입니다.
반환 값
Destination 값을 반환 합니다.
설명
RtlSecureZeroMemory2 함수는 RtlFillVolatileMemory에 대한 편리한 래퍼이며 RtlZeroVolatileMemory와 동일합니다.
자세한 내용은 RtlFillVolatileMemory의 설명 섹션을 참조하세요.
참고
이 함수는 최신 버전뿐만 아니라 모든 버전의 Windows에서 작동합니다. wdm.h 헤더에서 함수 선언을 얻으려면 최신 WDK를 사용해야 합니다. 최신 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(사용자 모드) |