Share via


PSHED_PI_READ_ERROR_RECORD 콜백 함수(ntddk.h)

PSHED 플러그 인의 ReadErrorRecord 콜백 함수는 시스템의 영구 데이터 스토리지에서 오류 레코드를 읽습니다.

구문

PSHED_PI_READ_ERROR_RECORD PshedPiReadErrorRecord;

NTSTATUS PshedPiReadErrorRecord(
  [in, out, optional] PVOID PluginContext,
  [in]                ULONG Flags,
  [in]                ULONGLONG ErrorRecordId,
  [out]               PULONGLONG NextErrorRecordId,
  [in, out]           PULONG RecordLength,
  [out]               PWHEA_ERROR_RECORD ErrorRecord
)
{...}

매개 변수

[in, out, optional] PluginContext

PSHED 플러그 인이 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조의 컨텍스트 멤버에 지정된 컨텍스트 영역에 대한 포인터입니다.

[in] Flags

읽기 작업에 영향을 주는 플래그의 비트 단위 OR 조합입니다. 플래그는 현재 정의되어 있지 않습니다.

[in] ErrorRecordId

시스템의 영구 데이터 스토리지에서 읽을 오류 레코드의 식별자입니다. 이 식별자와 일치하는 시스템의 영구 데이터 스토리지에 저장된 오류 레코드가 없는 경우 ReadErrorRecord 콜백 함수는 STATUS_OBJECT_NOT_FOUND 반환해야 합니다.

[out] NextErrorRecordId

시스템의 영구 데이터 스토리지에 저장된 다음 오류 레코드의 식별자를 수신하는 ULONGLONG 형식 변수에 대한 포인터입니다. 시스템의 영구 데이터 스토리지에 저장된 다른 오류 레코드가 없으면 현재 읽는 오류 레코드의 식별자가 이 매개 변수에 반환되어야 합니다.

[in, out] RecordLength

ErrorRecord 매개 변수가 가리키는 버퍼의 크기(바이트)를 포함하는 ULONG 형식 변수에 대한 포인터입니다. 버퍼의 크기가 읽는 오류 레코드를 포함할 만큼 큰 경우 ReadErrorRecord 콜백 함수는 이 변수를 버퍼에 반환된 오류 레코드의 크기(바이트)로 설정합니다. 그러나 버퍼의 크기가 너무 작아서 읽는 오류 레코드를 포함할 수 없는 경우 ReadErrorRecord 콜백 함수는 이 변수를 오류 레코드를 포함하는 데 필요한 크기(바이트)로 설정합니다. 이 경우 ReadErrorRecord 콜백 함수는 STATUS_BUFFER_TOO_SMALL 반환해야 합니다.

[out] ErrorRecord

시스템의 영구 데이터 스토리지에서 읽은 오류 레코드를 수신하는 버퍼에 대한 포인터입니다.

반환 값

PSHED 플러그 인의 ReadErrorRecord 콜백 함수는 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS 오류 레코드가 시스템의 영구 데이터 스토리지에서 성공적으로 읽혀졌습니다.
STATUS_OBJECT_NOT_FOUND 시스템의 영구 데이터 스토리지에는 ErrorRecordId 매개 변수에 지정된 식별자와 일치하는 오류 레코드가 없습니다.
STATUS_BUFFER_TOO_SMALL 버퍼의 크기가 너무 작아서 읽는 오류 레코드를 포함할 수 없습니다.
STATUS_UNSUCCESSFUL 오류가 발생했습니다.

설명

오류 레코드 지속성에 참여하는 PSHED 플러그 인은 Callbacks.WriteErrorRecord를 설정합니다. 플러그 인이 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 WriteErrorRecord, ReadErrorRecordClearErrorRecord 콜백 함수를 가리키도록 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체Callbacks.ReadErrorRecordCallbacks.ClearErrorRecord 멤버입니다. 또한 PSHED 플러그 인은 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 FunctionalAreaMask 멤버에서 PshedFAErrorRecordPersistence 플래그를 설정해야 합니다.

Windows 커널은 치명적이거나 복구할 수 없는 오류 조건에 따라 시스템을 다시 시작한 후 PSHED를 호출하여 시스템의 영구 데이터 스토리지에서 오류 레코드를 읽습니다. PSHED 플러그 인이 오류 레코드 지속성에 참여하도록 등록된 경우 PSHED 플러그 인의 ReadErrorRecord 콜백 함수를 호출하여 읽기 작업을 수행합니다. 시스템의 영구 데이터 스토리지에서 오류 레코드를 읽는 데 사용되는 메커니즘은 플랫폼별로 다릅니다.

요구 사항

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

추가 정보

ClearErrorRecord

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET

WriteErrorRecord