PSHED_PI_ATTEMPT_ERROR_RECOVERY 콜백 함수(ntddk.h)
PSHED 플러그 인의 AttemptRecovery 콜백 함수는 복구 가능한 하드웨어 오류로부터 복구를 시도합니다.
구문
PSHED_PI_ATTEMPT_ERROR_RECOVERY PshedPiAttemptErrorRecovery;
NTSTATUS PshedPiAttemptErrorRecovery(
[in, out, optional] PVOID PluginContext,
[in] ULONG BufferLength,
[in] PWHEA_ERROR_RECORD ErrorRecord
)
{...}
매개 변수
[in, out, optional] PluginContext
PSHED 플러그 인이 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 Context 멤버에 지정된 컨텍스트 영역에 대한 포인터입니다.
[in] BufferLength
ErrorRecord 매개 변수가 가리키는 오류 레코드의 크기(바이트)입니다.
[in] ErrorRecord
복구 가능한 하드웨어 오류에 대한 오류 레코드를 설명하는 WHEA_ERROR_RECORD 구조체에 대한 포인터입니다.
반환 값
PSHED 플러그 인의 AttemptRecovery 콜백 함수는 다음 NTSTATUS 코드 중 하나를 반환합니다.
| 반환 코드 | 설명 |
|---|---|
|
하드웨어 오류에서 복구하려는 시도가 성공했습니다. |
|
하드웨어 오류에서 복구하려는 시도가 실패했습니다. |
설명
오류 복구에 참여하는 PSHED 플러그 인은 플러그 인이 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 Callbacks.AttemptRecovery 멤버가 해당 AttemptRecovery 콜백 함수를 가리키도록 설정합니다. 또한 PSHED 플러그 인은 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 FunctionalAreaMask 멤버에서 PshedFAErrorRecovery 플래그를 설정해야 합니다.
Windows 커널은 모든 하드웨어 오류 데이터를 오류 레코드에 넣은 후 오류를 처리하는 동안 복구 가능한 하드웨어 오류로부터 복구하려고 시도합니다. 그런 다음 Windows 커널은 PSHED를 호출하여 필요한 복구 작업을 수행할 수 있는 기회를 제공합니다. PSHED 플러그 인이 오류 복구에 참여하기 위해 등록된 경우 PSHED는 PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출하여 오류를 수정하거나 오류 조건에서 완전히 복구하는 데 필요한 추가 작업을 수행할 수 있도록 합니다.
Windows 커널 또는 PSHED가 하드웨어 오류에서 성공적으로 복구되면 다음과 같이 PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출하기 전에 오류를 설명하는 WHEA_ERROR_RECORD 구조를 업데이트합니다.
- Header.Severity 멤버가 WheaErrSevRecoverable에서 WheaErrSevCorrected로 변경됩니다.
- Header.Flags.Recoveryed 비트가 설정됩니다.
PSHED는 IRQL <= HIGH_LEVEL PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출합니다. 이 콜백 함수가 호출되는 정확한 IRQL은 발생한 특정 유형의 하드웨어 오류에 따라 달라집니다.
요구 사항
| 지원되는 최소 클라이언트 | Windows Server 2008, Windows Vista SP1 이상 버전의 Windows 지원됩니다. |
| 대상 플랫폼 | 바탕 화면 |
| 헤더 | ntddk.h(Ntddk.h 포함) |
| IRQL | IRQL >= DISPATCH_LEVEL |
참조
피드백
다음에 대한 사용자 의견 제출 및 보기