Функция FsRtlDissectName (ntifs.h)
При использовании строки имени пути в Юникоде подпрограмма FsRtlDissectName возвращает две строки, одна из них содержит первое имя файла, найденное в строке, а другая — оставшуюся часть строки pathname.
Синтаксис
void FsRtlDissectName(
[in] UNICODE_STRING Path,
[out] PUNICODE_STRING FirstName,
[out] PUNICODE_STRING RemainingName
);
Параметры
[in] Path
Строка pathname для анализа.
[out] FirstName
Указатель на имя первого файла в строке pathname.
[out] RemainingName
Указатель на оставшуюся непарированную часть строки pathname.
Возвращаемое значение
None
Remarks
Во входной строке обратные косые черти считываются как разделители имен. Предполагается, что имя в строке состоит из всех символов от начала строки до символа, предшествующего первой обратной косой черте включительно. Существует только одно исключение из этого правила: если первый символ во входной строке является обратной косой чертой, этот символ игнорируется и не отображается в выходной строке. Оставшаяся часть строки состоит из всех символов, следующих за обратной косой чертой, которая следует за именем, найденным в строке.
FsRtlDissectName не проверка на наличие недопустимых символов во входной строке.
В следующей таблице показаны примеры входных и выходных значений для FsRtlDissectName.
Путь | FirstName | RemainingName |
---|---|---|
пустых | пустых | пустых |
Объект | Объект | пустых |
A\B\C\D\E | A | B\C\D\E |
*A? | *A? | пустых |
\A | A | пустых |
A[,] | A[,] | пустых |
A\\B+;\C | A | \B+;\C |
Обратите внимание, что при возврате элементы Buffer выходных параметров указывают на элемент Bufferэлемента Path. Таким образом, вызывающий объект не должен выделять хранилище для элементов Buffer двух выходных параметров, как показано в следующем примере:
.
.
.
/*
The FsRtlDissectName routine will set the members
of the following two structures appropriately:
*/
UNICODE_STRING CurrentComponent;
UNICODE_STRING RemainingComponent;
/*
Do not allocate storage for the Buffer members of CurrentComponent
and RemainingComponent in that they will point into the previously
allocated storage of FullPathName's Buffer member:
*/
FsRtlDissectName (FullPathName, &CurrentComponent, &RemainingComponent);
.
.
.
Дополнительные сведения о других процедурах обработки строк см. в разделе Процедуры библиотеки времени выполнения (RTL).
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |