Функция 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)

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

UNICODE_STRING