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


Функция FsRtlDissectName (ntifs.h)

Учитывая строку имени пути Юникода, FsRtlDissectName возвращает две строки, одну из них содержит имя первого файла, найденное в строке, другое, содержащее оставшуюся непарализированную часть строки имени пути.

Синтаксис

void FsRtlDissectName(
  [in]  UNICODE_STRING  Path,
  [out] PUNICODE_STRING FirstName,
  [out] PUNICODE_STRING RemainingName
);

Параметры

[in] Path

Строка имени пути для синтаксического анализа.

[out] FirstName

Указатель на имя первого файла в строке имени пути.

[out] RemainingName

Указатель на оставшуюся непарассированную часть строки имени пути.

Возвращаемое значение

Никакой

Замечания

В входной строке обратные очки считываются как разделители имен. Предполагается, что первое имя строки состоит из всех символов с начала строки до символа, предшествующего первой обратной косой черте, включительно. Существует только одно исключение из этого правила: если первый символ в входной строке является обратной косой чертой, этот символ игнорируется и не отображается в выходной строке. Оставшаяся часть строки состоит из всех символов после обратной косой черты, следующей за первым именем, найденным в строке.

FsRtlDissectName не проверяет наличие недопустимых символов во входной строке.

В следующей таблице показаны примеры входных и выходных значений для FsRtlDissectName.

Путь FirstName Оставшееся имя
пустой пустой пустой
A A пустой
A\B\C\D\E A B\C\D\E
*A? *A? пустой
\A A пустой
A[,] A[,] пустой
A\\B+;\C A \B+;\C
 

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

.
.
.
/*
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);
.
.
.

Дополнительные сведения о других подпрограммах обработки строк см. в Run-Time подпрограммах библиотеки (RTL).

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также

UNICODE_STRING