IoRaiseInformationalHardError 함수(ntddk.h)

IoRaiseInformationalHardError 루틴은 사용자에게 대화 상자를 보내 사용자 I/O 요청이 실패한 이유를 나타내는 디바이스 I/O 오류에 대해 경고합니다.

구문

BOOLEAN IoRaiseInformationalHardError(
  [in]           NTSTATUS        ErrorStatus,
  [in, optional] PUNICODE_STRING String,
  [in, optional] PKTHREAD        Thread
);

매개 변수

[in] ErrorStatus

오류 상태 코드(IO_ERR_XXX)입니다.

[in, optional] String

오류에 대한 추가 정보를 제공하는 유니코드 문자열에 대한 포인터입니다. 일부 NT 상태 코드에는 파일 또는 디렉터리 이름과 같은 문자열 매개 변수가 필요합니다. 지정된 ErrorStatus 값에 문자열 매개 변수가 필요하지 않은 경우 StringNULL로 설정합니다.

[in, optional] Thread

ErrorStatus 매개 변수에 지정된 오류로 인해 IRP가 실패한 스레드에 대한 포인터입니다.

반환 값

대화 상자가 성공적으로 큐에 대기되면 IoRaiseInformationalHardErrorTRUE를 반환합니다. 스레드에 대해 대화 상자가 비활성화되거나, 풀 할당이 실패하거나, 너무 많은 대화 상자가 이미 큐에 대기 중이거나, 동일한 대화 상자가 이미 사용자 응답을 보류 중인 경우(예: 사용자가 RETURN 키를 누르기를 기다리는 경우) 이 루틴은 FALSE를 반환합니다.

설명

IoRaiseInformationalHardError 는 시스템 정의 NT 오류 값을 매개 변수로 사용합니다. 드라이버 작성기는 이벤트 로그 API를 사용하여 드라이버 정의 이벤트 문자열을 사용자에게 전달할 수 있습니다.

IoRaiseInformationalHardError 는 다음과 같이 작동합니다.

  • 호출자가 제공한 ErrorStatus 값이 Ntstatus.h 헤더 파일에 정의되지 않은 경우 대화 상자에 는 String 매개 변수 값에 관계없이 항상 "알 수 없는 하드 오류" 텍스트가 표시됩니다.
  • 호출자가 제공한 ErrorStatus 값이 Ntstatus.h 헤더 파일에 정의된 경우 대화 상자에 는 String 매개 변수 값에 관계없이 해당 MessageText 문자열의 텍스트가 Ntstatus.h에 표시됩니다.
  • Thread 매개 변수가 애플리케이션의 컨텍스트에서 실행되는 스레드를 지정하는 경우 대화 상자에 표시되는 텍스트는 "ApplicationName.exe - 시스템 오류"입니다.
  • Thread 매개 변수가 NULL이거나 임의의 시스템 컨텍스트에서 실행되는 스레드를 지정하는 경우 대화 상자에 표시되는 텍스트는 "시스템 프로세스 - 시스템 오류"입니다. 또한 ErrorStatus 값이 Ntstatus.h 에 정의된 경우 해당 MessageText 문자열이 이벤트 로그에 기록됩니다.
IoSetThreadHardErrorMode 루틴에 대한 이전 호출이 지정된 스레드에 대해 하드 오류를 사용하지 않도록 설정한 경우 IoRaiseInformationalHardError는FALSE를 반환합니다.

Windows Vista부터 세션 0의 스레드에서 루틴이 호출되는 경우(즉, 시스템 스레드에서) 루틴이 성공하고 TRUE를 반환할 때 대화 상자가 나타나지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlIoApcLte(wdm)

추가 정보

IoSetHardErrorOrVerifyDevice

IoSetThreadHardErrorMode

PsGetCurrentThread