FsRtlDissectName 函数 (ntifs.h)
给定 Unicode 路径名称字符串,FsRtlDissectName 例程返回两个字符串,一个字符串包含字符串中找到的第一个文件名,另一个字符串包含路径名称字符串的剩余未分析部分。
语法
void FsRtlDissectName(
[in] UNICODE_STRING Path,
[out] PUNICODE_STRING FirstName,
[out] PUNICODE_STRING RemainingName
);
参数
[in] Path
要分析的路径名称字符串。
[out] FirstName
指向 pathname 字符串中第一个文件名的指针。
[out] RemainingName
指向路径名称字符串的剩余未分析部分的指针。
返回值
没有
言论
在输入字符串中,反斜杠作为名称分隔符进行读取。 假定字符串中的第一个名称包含从字符串开头到第一个反斜杠前面的字符(含)的所有字符。 此规则只有一个例外:如果输入字符串中的第一个字符是反斜杠,则忽略此字符,并且不会显示在输出字符串中。 字符串的剩余部分由后斜杠后面的所有字符组成,该反斜杠紧跟在字符串中找到的第一个名称。
FsRtlDissectName 不会检查输入字符串中是否存在非法字符。
下表显示了 FsRtlDissectName的示例输入和输出值。
路径 | FirstName | RemainingName |
---|---|---|
空 | 空 | 空 |
一个 | 一个 | 空 |
A\B\C\D\E | 一个 | B\C\D\E |
*一个? | *一个? | 空 |
\一个 | 一个 | 空 |
A[,] | A[,] | 空 |
A\\B+;\C | 一个 | \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);
.
.
.
有关其他字符串处理例程的信息,请参阅 Run-Time Library (RTL) 例程。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport),PowerIrpDDis(wdm) |