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
バイトのプールを割り当て、MaximumLengthVolumeNameSize
に設定します。ボリューム名 取得するには、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 |
関連項目
FltGetVolumeFromNameの
FltGetVolumeGuidNameの