Поделиться через


IRP_MJ_SET_EA (драйверы FS и фильтров)

При отправке

Диспетчер ввода-вывода отправляет IRP_MJ_SET_EA запрос на настройку расширенных атрибутов файла.

Операция: драйверы файловой системы

Если файловая система поддерживает расширенные атрибуты, драйвер файловой системы должен обработать запрос и завершить IRP. В противном случае драйвер файловой системы должен вернуть STATUS_EAS_NOT_SUPPORTED.

Операция: устаревшие драйверы фильтров файловой системы

Драйвер фильтра должен передать этот IRP в следующий нижний драйвер в стеке.

Параметры

Файловая система или драйвер фильтра вызывает IoGetCurrentIrpStackLocation для заданного IRP, чтобы получить указатель на собственное расположение стека в IRP. В следующих параметрах Irp указывает на IRP , а IrpSpна IO_STACK_LOCATION. Драйвер может использовать сведения, заданные в следующих элементах IRP и расположении стека IRP для обработки запроса набора расширенных атрибутов:

  • DeviceObject — это указатель на целевой объект устройства.

  • Irp->AssociatedIrp.SystemBuffer указывает на предоставленный системой входной буфер, который содержит сведения о расширенных атрибутах, которые необходимо задать. Используется для METHOD_BUFFERED ввода-вывода.

  • Irp->IoStatus указывает на структуру IO_STATUS_BLOCK , которая получает окончательное состояние завершения и сведения о запрошенной операции.

  • Irp->MdlAddress — это адрес списка дескрипторов памяти (MDL), описывающего входной буфер, получающий расширенные сведения об атрибуте. Используется для METHOD_DIRECT ввода-вывода.

  • Irp->UserBuffer указывает на предоставленный вызывающим FILE_FULL_EA_INFORMATION структурированный входной буфер, который получает расширенные сведения об атрибуте. Используется для METHOD_NEITHER ввода-вывода.

  • IrpSp->FileObject указывает на объект файла, связанный с DeviceObject.

    Параметр IrpSp-FileObject> содержит указатель на поле RelatedFileObject, которое также является FILE_OBJECT структурой. Поле RelatedFileObject структуры FILE_OBJECT недопустимо во время обработки IRP_MJ_SET_EA и не должно использоваться.

  • IrpSp->MajorFunction имеет значение IRP_MJ_SET_EA.

  • IrpSp->Parameters.SetEa.Length — это длина входного буфера в байтах.

См. также раздел

FILE_FULL_EA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_EA