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 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
하드웨어 오류에서 복구하려는 시도가 성공했습니다.
STATUS_UNSUCCESSFUL
하드웨어 오류에서 복구하려는 시도가 실패했습니다.

설명

오류 복구에 참여하는 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 플러그 인이 하드웨어 오류에서 성공적으로 복구되면 PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출한 후 PSHED 플러그 인을 대신하여 WHEA_ERROR_RECORD 구조가 업데이트됩니다. PSHED 플러그 인의 AttemptRecovery 콜백 함수는 오류 레코드를 수정하면 안 됩니다.

PSHED는 IRQL <= HIGH_LEVEL PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출합니다. 이 콜백 함수가 호출되는 정확한 IRQL은 발생한 특정 유형의 하드웨어 오류에 따라 달라집니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Server 2008, Windows Vista SP1 이상 버전의 Windows 지원됩니다.
대상 플랫폼 바탕 화면
헤더 ntddk.h(Ntddk.h 포함)
IRQL IRQL >= DISPATCH_LEVEL

참조

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET