IoSetMasterIrpStatus 함수(ntddk.h)
IoSetMasterIrpStatus 루틴은 IRP의 상태 값을 지정된 NTSTATUS 값으로 조건부로 바꿉니다.
통사론
void IoSetMasterIrpStatus(
[in, out] PIRP MasterIrp,
[in] NTSTATUS Status
);
매개 변수
[in, out] MasterIrp
마스터 IRP대한 포인터입니다. 자세한 내용은 비고를 참조하세요.
[in] Status
마스터 IRP에서 I/O 상태 블록의 상태 멤버와 비교할 NTSTATUS 값입니다.
반환 값
없음
발언
IRP를 받으면 드라이버는 원본(또는 마스터) IRP에서 요청한 작업을 수행하기 위해 두 개 이상의 하위 IRP를 만들 수 있습니다. 하위 IRP가 완료되면 드라이버는 하위 IRP에서 완료 상태 코드를 수집하고 병합하여 마스터 IRP에 대한 단일 완료 상태 코드를 형성합니다.
IoSetMasterIrpStatus 여러 하위 IRP의 상태 코드를 마스터 IRP의 상태 코드로 병합하기 위한 균일한 정책을 구현합니다. 예를 들어 마스터 IRP가 두 개의 하위 IRP로 분할되고 이러한 하위 IRP 중 하나가 성공하고 다른 하나는 실패하는 경우 실패한 IRP의 상태 코드가 마스터 IRP의 상태 코드로 사용됩니다. 그러나 두 하위 IRP가 모두 실패하면 더 심각한 오류 코드가 마스터 IRP의 상태로 사용됩니다.
IoSetMasterIrpStatus대한 첫 번째 호출 전에 드라이버는 마스터 IRP의 IoStatus.Status 멤버를 STATUS_SUCCESS(또는 예상되는 경우 STATUS_FT_READ_FROM_COPY)로 설정합니다. 다음으로, 각 하위 IRP가 완료되면 드라이버는 IoSetMasterIrpStatus 호출하여 이 IRP의 상태 코드를 마스터 IRP의 상태 코드와 병합합니다. 이 호출에서 PIRP 매개 변수는 마스터 IRP를 가리키고 Status 매개 변수는 하위 IRP의 IoStatus.Status 멤버 값으로 설정됩니다.
일반적으로 IoSetMasterIrpStatusPIRP상태 코드를 바꿉니다.>IoStatus.Status 다음과 같은 경우 상태 값으로 바꿉니다.
- **PIRP*의 상태 값은 STATUS_SUCCESS 상태 오류 코드입니다.
- **PIRP*의 상태 값은 오류 코드이지만 상태 더 심각한 오류 코드입니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | ntddk.h(Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 모든 수준입니다. |