ReadStructFromMode 매크로는 지정된 프로세서 모드에 따라 메모리에서 구조를 안전하게 읽습니다.
Syntax
void ReadStructFromMode(
Destination,
Source,
Mode
);
Parameters
Destination
[out] 메모리에서 읽은 데이터를 받는 구조체에 대한 포인터입니다.
Source
[in] 구조를 읽을 메모리 위치에 대한 포인터입니다.
Mode
[in] 메모리 액세스가 수행되는 방법을 결정하는 프로세서 모드입니다. 모드 는 다음 값 중 하나일 수 있습니다.
| Value | Meaning |
|---|---|
| KernelMode | 원본 은 커널 모드 메모리를 가리킵니다. 매크로는 memory_order_relaxed 의미 체계를 사용하여 지정된 주소에서 읽기를 수행합니다. 자세한 내용은 비고를 참조하세요. |
| UserMode | 원본 은 사용자 모드 메모리를 가리킵니다. 원본이 사용자 모드 메모리를 가리키지 않으면 매크로에서 예외가 발생합니다. 그렇지 않으면 memory_order_relaxed 의미 체계를 사용하여 지정된 주소에서 읽기를 수행합니다. 자세한 내용은 비고를 참조하세요. |
Return value
None
Remarks
이 매크로는 사용자 모드 메모리에 액세스할 때 추가 안전 검사를 통해 메모리에서 구조를 읽는 안전한 방법을 제공합니다. 지정된 프로세서 모드에 따라 제공된 주소가 유효하고 액세스할 수 있도록 합니다.
매크로는 원본 및 대상이 호환되는 형식을 가리키는지 확인하고 복사 작업의 구조 크기를 자동으로 결정합니다.
이 매크로는 맞춤을 적용하지 않습니다.
원본 주소가 유효하지 않거나 지정된 프로세서 모드에 액세스할 수 없는 경우와 같이 메모리 액세스가 실패하는 경우 구조적 예외가 발생합니다.
이 매크로는 컴파일러에서 최적화되지 않으며, 소스 코드가 명시적으로 이러한 액세스를 수행하지 않는 한 매크로가 호출되기 전이나 매크로가 반환된 후에 컴파일러가 이 메모리 위치에 대한 추가 액세스를 만들지 않습니다. 메모리 액세스는 memory_order_relaxed 의미 체계를 사용하여 수행됩니다.
이 매크로는 최신 버전뿐만 아니라 모든 버전의 Windows에서 작동합니다. usermode_accessors.h 헤더에서 매크로 선언을 얻으려면 최신 WDK를 사용해야 합니다. 최신 WDK의 라이브러리(umaccess.lib)도 필요합니다. 그러나 결과 드라이버는 이전 버전의 Windows에서 잘 실행됩니다.
Requirements
| Requirement | Value |
|---|---|
| 지원되는 최소 클라이언트 | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | APC_LEVEL 작거나 같음 |