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 成员将指向 Path 的 Buffer 成员。 因此,调用方不应为两个输出参数的 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) |