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 구조의 컨텍스트 멤버에 지정된 컨텍스트 영역에 대한 포인터입니다.

[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 플러그 인의 AttemptRecovery 콜백 함수를 호출하여 오류를 수정하거나 오류 조건에서 완전히 복구하는 데 필요한 추가 작업을 수행할 수 있습니다.

Windows 커널 또는 PSHED가 하드웨어 오류에서 성공적으로 복구되면 다음과 같이 PSHED 플러그 인의 AttemptRecovery 콜백 함수를 호출하기 전에 오류를 설명하는 WHEA_ERROR_RECORD 구조를 업데이트합니다.

  • Header.Severity 멤버가 WheaErrSevRecoverable에서 WheaErrSevCorrected로 변경됩니다.

  • Header.Flags.Recovered 비트가 설정됩니다.

PSHED 플러그 인이 하드웨어 오류에서 성공적으로 복구되면 PSHED 플러그 인의 AttemptRecovery 콜백 함수가 반환된 후 PSHED 플러그 인을 대신하여 WHEA_ERROR_RECORD 구조가 업데이트됩니다. PSHED 플러그 인의 AttemptRecovery 콜백 함수는 오류 레코드를 수정하면 안 됩니다.

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

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 ntddk.h(Ntddk.h 포함)
IRQL IRQL >= DISPATCH_LEVEL

추가 정보

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET