FsRtlDissectName 函数 (ntifs.h)

给定 Unicode pathname 字符串, FsRtlDissectName 例程返回两个字符串,一个包含字符串中找到的第一个文件名,另一个包含 pathname 字符串的剩余未分析部分。

语法

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

参数

[in] Path

要分析的路径名称字符串。

[out] FirstName

指向 pathname 字符串中第一个文件名的指针。

[out] RemainingName

指向 pathname 字符串的剩余未分析部分的指针。

返回值

备注

在输入字符串中,反斜杠作为名称分隔符读取。 假定字符串中的名字由字符串开头到第一个反斜杠前的字符(包括)的所有字符组成。 此规则只有一个例外:如果输入字符串中的第一个字符是反斜杠,则会忽略此字符,并且不会显示在输出字符串中。 字符串的剩余部分由反斜杠后面的所有字符组成,该反斜杠紧跟在字符串中找到的第一个名称之后。

FsRtlDissectName 不检查输入字符串中是否存在非法字符。

下表显示了 FsRtlDissectName 的示例输入和输出值。

路径 FirstName RemainingName
empty empty empty
A A empty
A\B\C\D\E A B\C\D\E
*A? *A? empty
\A A empty
A[,] A[,] empty
A\\B+;\C A \B+;\C
 

请注意,返回时,输出参数的 Buffer 成员将指向 PathBuffer 成员。 因此,调用方不应为两个输出参数的 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)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

UNICODE_STRING