Функция IoSetMasterIrpStatus (ntddk.h)
Подпрограмма IoSetMasterIrpStatus условно заменяет значение status в IRP указанным значением NTSTATUS.
Синтаксис
void IoSetMasterIrpStatus(
[in, out] PIRP MasterIrp,
[in] NTSTATUS Status
);
Параметры
[in, out] MasterIrp
Указатель на главный IRP. Дополнительные сведения см. в разделе "Примечания".
[in] Status
Значение NTSTATUS для сравнения с элементом состояния блока состояния ввода-вывода в главном IRP.
Возвращаемое значение
Никакой
Замечания
При получении IRP драйвер может создать два или более подчиненных IRP для выполнения работы, запрошенной исходной (или главной) IRP. По завершении подчиненных IRPs драйвер собирает коды состояния завершения из подчиненных IRP и объединяет их для формирования одного кода состояния завершения для главного IRP.
IoSetMasterIrpStatus реализует единую политику для объединения кодов состояния из нескольких подчиненных IRP в код состояния для главного IRP. Например, если главный IRP разделен на два подчиненных IRP, а один из этих подчиненных IRPs завершается успешно, а другой завершается сбоем, код состояния от неудачного IRP используется в качестве кода состояния для главного IRP. Однако если оба подчиненных IRP завершаются ошибкой, более тяжелый код сбоя используется в качестве состояния главного IRP.
Перед первым вызовом IoSetMasterIrpStatusдрайвер задает элемент IoStatus.Status в главном IRP STATUS_SUCCESS (или STATUS_FT_READ_FROM_COPY в случае ожидания). Далее, когда каждый подчиненный IRP завершается, драйвер вызывает IoSetMasterIrpStatus объединить код состояния из этого IRP с кодом состояния в главном IRP. В этом вызове параметр PIRP указывает на главный IRP, а параметр состояния имеет значение элемента IoStatus.Status в подчиненном IRP.
Как правило, IoSetMasterIrpStatus заменяет код состояния в PIRP—>IoStatus.Status значением состояния в следующих случаях:
- Значение состояния в **PIRP* равно STATUS_SUCCESS, и состояние является кодом ошибки.
- Значение состояния в **PIRP* является кодом ошибки, но состояние является более серьезным кодом ошибки.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8. |
целевая платформа | Всеобщий |
заголовка | ntddk.h (include Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень. |