PSHED_PI_GET_ALL_ERROR_SOURCES 콜백 함수(ntddk.h)

PSHED 플러그 인의 GetAllErrorSources 콜백 함수는 하드웨어 플랫폼에서 구현되는 모든 오류 원본을 나타내는 오류 원본 설명자 구조 목록을 반환합니다.

구문

PSHED_PI_GET_ALL_ERROR_SOURCES PshedPiGetAllErrorSources;

NTSTATUS PshedPiGetAllErrorSources(
  [in, out, optional] PVOID PluginContext,
  [in, out]           PULONG Count,
  [in, out]           PWHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSrcs,
  [in, out]           PULONG Length
)
{...}

매개 변수

[in, out, optional] PluginContext

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

[in, out] Count

ULONG 형식 변수에 대한 포인터입니다. GetAllErrorSources 콜백 함수가 호출되면 이 변수에는 PSHED에서 제공하는 ErrorSources 매개 변수가 가리키는 버퍼에 포함된 오류 원본 설명자 구조의 수가 포함됩니다. GetAllErrorSources 콜백 함수가 버퍼에 있는 오류 원본 설명자 구조의 수를 변경하는 경우 반환하기 전에 이 변수를 새 오류 원본 설명자 구조 수로 설정해야 합니다.

[in, out] ErrorSrcs

하드웨어 플랫폼에서 구현되는 모든 오류 원본을 나타내는 WHEA_ERROR_SOURCE_DESCRIPTOR 구조의 배열을 수신하는 버퍼에 대한 포인터입니다. GetAllErrorSources 콜백 함수가 호출되면 이 버퍼에는 PSHED에서 제공하는 오류 원본 설명자 구조의 초기 목록이 포함됩니다. PSHED 플러그 인은 하드웨어 플랫폼에서 구현되는 모든 오류 원본을 정확하게 나타내도록 목록을 변경할 수 있습니다.

[in, out] Length

ErrorSources 매개 변수가 가리키는 버퍼의 크기(바이트)를 포함하는 ULONG 형식 변수에 대한 포인터입니다. 크기가 너무 작아 오류 원본 설명자 구조의 수정된 목록을 포함할 수 없는 경우 GetAllErrorSources 콜백 함수는 이 변수를 목록을 포함하는 데 필요한 버퍼 크기로 설정하고 STATUS_BUFFER_TOO_SMALL 반환합니다.

반환 값

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

반환 코드 설명
STATUS_SUCCESS 오류 원본 설명자 구조의 수정된 목록이 ErrorSources 매개 변수가 가리키는 버퍼에 성공적으로 반환되었습니다.
STATUS_BUFFER_TOO_SMALL ErrorSources 매개 변수가 가리키는 버퍼의 크기가 너무 작아서 오류 원본 설명자 구조 목록을 포함할 수 없습니다.
STATUS_UNSUCCESSFUL 오류가 발생했습니다.

설명

오류 원본 검색에 참여하는 PSHED 플러그 인은 플러그 인이 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조의 Callbacks.GetAllErrorSources 멤버가 GetAllErrorSources 콜백 함수를 가리키도록 설정합니다. 또한 PSHED 플러그 인은 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 FunctionalAreaMask 멤버에서 PshedFADiscovery 플래그를 설정해야 합니다.

운영 체제가 시작되면 Windows 커널은 PSHED를 호출하여 하드웨어 플랫폼에서 구현되는 모든 오류 원본을 나타내는 오류 원본 설명자 구조 목록을 검색합니다. PSHED는 오류 원본 설명자 구조의 초기 목록을 만듭니다. PSHED 플러그 인이 오류 원본 검색에 참여하도록 등록된 경우 PSHED는 PSHED 플러그 인의 GetAllErrorSources 콜백 함수를 호출합니다. PSHED 플러그 인은 하드웨어 플랫폼에서 구현하는 모든 오류 원본을 정확하게 나타내도록 오류 원본 설명자 구조 목록에 다음과 같은 변경 내용을 조합하여 만들 수 있습니다.

  • 하나 이상의 오류 원본 설명자 구조체의 내용을 수정합니다.

  • 목록에서 하나 이상의 오류 원본 설명자 구조를 제거합니다.

  • 목록에 하나 이상의 새 오류 원본 설명자 구조를 추가합니다.

PSHED 플러그 인이 목록에 하나 이상의 새 오류 원본 설명자 구조를 추가해야 하고 버퍼 크기가 너무 작아서 추가 구조를 포함할 수 없는 경우 PSHED 플러그 인의 GetAllErrorSources 콜백 함수는 Length 매개 변수가 가리키는 변수를 추가 구조와 함께 목록을 포함하고 STATUS_BUFFER_TOO_SMALL 반환하는 데 필요한 버퍼 크기로 설정해야 합니다. 이 경우 PSHED는 더 큰 버퍼를 할당하고, 오류 원본 설명자 구조 목록을 새 버퍼에 복사하고, PSHED 플러그 인의 GetAllErrorSources 콜백 함수를 두 번째로 호출합니다.

오류 원본 검색에 참여하는 PSHED 플러그 인은 선택적 GetErrorSourceInfo 콜백 함수를 구현할 수도 있습니다. 이 경우 PSHED 플러그 인은 PshedRegisterPlugin 함수를 호출하여 PSHED에 등록할 때 해당GetErrorSourceInfo 콜백 함수를 가리키도록 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 구조체의 Callbacks.GetErrorSourceInfo 멤버도 설정합니다.

요구 사항

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

추가 정보

GetErrorSourceInfo

PshedRegisterPlugin

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET