Функция FltGetVolumeInstanceFromName (fltkernel.h)
Подпрограмма FltGetVolumeInstanceFromName возвращает непрозрачный указатель экземпляра для заданного экземпляра драйвера минифильтра на заданном томе.
Синтаксис
NTSTATUS FLTAPI FltGetVolumeInstanceFromName(
[in, optional] PFLT_FILTER Filter,
[in] PFLT_VOLUME Volume,
[in, optional] PCUNICODE_STRING InstanceName,
[out] PFLT_INSTANCE *RetInstance
);
Параметры
[in, optional] Filter
Указатель непрозрачного фильтра для драйвера минифильтра, которому принадлежит экземпляр . Этот параметр является необязательным и может иметь значение NULL.
[in] Volume
Непрозрачный указатель на том, к которому присоединен экземпляр. Должен быть допустимым дескриптором тома. Этот параметр является обязательным и не может иметь значение NULL. (Если задать для этого параметра недопустимое значение, система будет использовать ASSERT в проверенной сборке.)
[in, optional] InstanceName
Указатель на структуру UNICODE_STRING , выделенную вызывающим объектом, которая содержит имя экземпляра на томе. (Это значение InstanceName , переданное во FltAttachVolume или FltAttachVolumeAtAltitude при создании экземпляра.) Этот параметр является необязательным и может иметь значение NULL. Если значение равно NULL, Функция FltGetVolumeInstanceFromName возвращает найденный экземпляр с наибольшим соответствием.
[out] RetInstance
Указатель на переменную, выделенную вызывающим объектом, которая получает непрозрачный указатель на экземпляр, соответствующий значениям Filter, Volume и InstanceName. Этот параметр является обязательным и не может иметь значение NULL.
Возвращаемое значение
FltGetVolumeInstanceFromName возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Экземпляр сносится. Это код ошибки. |
|
Соответствующий экземпляр не найден. Это код ошибки. |
Комментарии
FltGetVolumeInstanceFromName выполняет поиск в списке экземпляров драйвера минифильтра, присоединенных к тому, указанному в параметре Volume , в порядке уменьшения высоты, начиная с самого верхнего экземпляра. Если несколько экземпляров совпадают с заданными значениями для параметров Filter, Volume и InstanceName , Функция FltGetVolumeInstanceFromName возвращает найденный экземпляр с наибольшим соответствием.
Термин "высота" относится к положению, которое экземпляр занимает (или должен занимать) в стеке экземпляров драйвера минифильтра для тома. Чем выше высота, тем дальше экземпляр находится от базовой файловой системы в стеке. На заданной высоте на заданном томе можно подключить только один экземпляр.
Высота задается строкой высоты, которая является подсчитываемой строкой Юникода, состоящей из одной или нескольких десятичных цифр от 0 до 9, и может содержать одну десятичную запятую. Например, "100,123456" и "03333" являются допустимыми строками высоты.
Строка "03333" представляет более высокую высоту, чем "100,123456". (Начальные и конечные нули игнорируются.) Другими словами, экземпляр с высотой 03333 находится дальше от базовой файловой системы, чем экземпляр с высотой 100,123456. Однако это сравнение имеет смысл только в том случае, если оба экземпляра подключены к одному тому.
FltGetVolumeInstanceFromName добавляет ссылку на непрозрачный указатель экземпляра, возвращаемый в параметре RetInstance . Если этот указатель больше не нужен, вызывающий объект должен освободить его, вызвав FltObjectDereference. Таким образом, каждый успешный вызов FltGetVolumeInstanceFromName должен соответствовать последующему вызову FltObjectDereference.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |