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

При отправке

Диспетчер ввода-вывода отправляет запрос IRP_MJ_SET_VOLUME_INFORMATION. Его можно отправить, например, если приложение пользовательского режима вызывает функцию Win32, например SetVolumeLabel.

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

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

Типы сведений о томе, которые можно задать, зависят от файловой системы, но обычно включают одно или несколько из следующих значений:

  • FileFsControlInformation
  • FileFsLabelInformation
  • FileFsObjectIdInformation

Список всех возможных типов информации см. в перечислении FS_INFORMATION_CLASS в ntifs.h.

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

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

Параметры

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

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

  • Irp->AssociatedIrp.SystemBuffer указывает на входной буфер, содержащий значения устанавливаемых сведений о томе. Эти сведения хранятся в одной из следующих структур:

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

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

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

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

  • IrpSp->Parameters.SetVolume.FsInformationClass — это тип сведений, устанавливаемых для тома, который может быть одним из следующих:

    Значение Значение
    FileFsControlInformation Задайте FILE_FS_CONTROL_INFORMATION для тома.
    FileFsLabelInformation Задайте FILE_FS_LABEL_INFORMATION для тома.
    FileFsObjectIdInformation Задайте FILE_FS_OBJECTID_INFORMATION для тома.
  • IrpSp->Parameters.SetVolume.Length — это длина (в байтах) буфера, на который указывает Irp-AssociatedIrp.SystemBuffer>.

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

FILE_FS_CONTROL_INFORMATION

FILE_FS_LABEL_INFORMATION

FILE_FS_OBJECTID_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile