次の方法で共有


FltGetVolumeName 関数 (fltkernel.h)

fltGetVolumeName ルーチン は、特定のボリュームのボリューム名を取得します。

構文

NTSTATUS FLTAPI FltGetVolumeName(
  [in]                PFLT_VOLUME     Volume,
  [in, out, optional] PUNICODE_STRING VolumeName,
  [out, optional]     PULONG          BufferSizeNeeded
);

パラメーター

[in] Volume

ボリュームの不透明なポインター。 このパラメーターは必須であり、NULL することはできません。

[in, out, optional] VolumeName

STATUS_SUCCESSが返されるときに、ボリュームの非永続的なデバイス オブジェクト名 ("\Device\HarddiskVolume1" など) を含む呼び出し元によって割り当てられた UNICODE_STRING 構造体へのポインター。 VolumeName->Buffer のプールも呼び出し元によって割り当てられることに注意してください。

このパラメーターは省略可能であり、NULL できます。ただし、BufferSizeNeeded が NULL 場合は、以外の NULL である必要があります。 このパラメーターが NULL BufferSizeNeeded が NULL されていない場合 、FltGetVolumeName は、要求されたボリューム名に必要なバッファー サイズを BufferSizeNeeded パラメーターに格納し、STATUS_BUFFER_TOO_SMALLを返します。 「解説」を参照してください。

[out, optional] BufferSizeNeeded

要求されたボリューム名のサイズ (バイト単位) を受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは省略可能であり、NULL できます。ただし、VolumeName が NULL 場合は、FltGetVolumeName が要求されたボリューム名に必要なバッファー サイズを格納できるように、以外の NULL である必要があります。

戻り値

FltGetVolumeName は、次のいずれかの NTSTATUS 値を返します。

リターン コード 形容
STATUS_SUCCESS VolumeName 指すUNICODE_STRING構造体には、構造体の Buffer メンバーのボリュームの名前と、名前の長さ (バイト単位) が Length メンバーに含まれます。
STATUS_BUFFER_TOO_SMALL VolumeName によって指UNICODE_STRING構造体の Buffer メンバーが小さすぎて (MaximumLength メンバーで示されているように) ボリューム名全体を含められません。 これはエラー コードです。
STATUS_INVALID_PARAMETER VolumeName と BufferSizeNeeded はどちらも NULL です。 これはエラー コードです。

備考

このルーチンを正常に実行するには、UNICODE_STRING構造体の Buffer メンバー (VolumeNameによって指されます) は、ボリューム名文字列全体を含むのに十分な大きさ MaximumLength メンバーである必要があります。

次の擬似コードは、BufferSizeNeeded が不明な場合にボリューム名 正常に取得できる方法の 1 つを示しています。

  • FltGetVolumeName 呼び出して、Buffer に必要なプールと、MaximumLength に必要なサイズ決定します。 例: FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);

  • バッファーVolumeNameSize バイトのプールを割り当て、MaximumLength VolumeNameSizeに設定します。

  • ボリューム名 取得するには、fltGetVolumeName をもう一度呼び出します。 例: FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);

VolumeNameStruct.Buffer には、Unicode ボリューム名の文字列が含まれています。この文字列の長さは VolumeNameStruct.Length バイトです。

特定のボリュームのボリューム GUID 名を取得するには、FltGetVolumeGuidName を呼び出します。

指定した名前のボリュームの不透明なボリューム ポインターを取得するには、FltGetVolumeFromName呼び出します。

ボリュームに名前を付ける方法の詳細については、「記憶域クラス ドライバーでのマウント マネージャー要求のサポート」を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー fltkernel.h (FltKernel.h を含む)
ライブラリ FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

関連項目

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING