次の方法で共有


FsRtlDissectName 関数 (ntifs.h)

Unicode パス名文字列を指定すると、 FsRtlDissectName ルーチンは 2 つの文字列を返します。1 つは文字列で見つかった最初のファイル名を含み、もう 1 つはパス名文字列の残りの未解析部分を含みます。

構文

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

パラメーター

[in] Path

解析するパス名文字列。

[out] FirstName

pathname 文字列の最初のファイル名へのポインター。

[out] RemainingName

pathname 文字列の残りの未解析部分へのポインター。

戻り値

なし

解説

入力文字列では、円記号は名前区切り記号として読み取られます。 文字列の最初の名前は、文字列の先頭から最初の円記号の前の文字 (両端を含む) までのすべての文字で構成されているものと見なされます。 この規則には例外が 1 つだけあります。入力文字列の最初の文字が円記号の場合、この文字は無視され、出力文字列には表示されません。 文字列の残りの部分は、文字列内の最初の名前に続く円記号の後にあるすべての文字で構成されます。

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 メンバーを指します。 したがって、次の例に示すように、呼び出し元は、2 つの出力パラメーターの 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) ルーチン」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

UNICODE_STRING