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 にすることができます。ただし、要求されたボリューム名に必要なバッファー サイズを FltGetVolumeName に格納できるように、VolumeName が NULLの場合は 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);
Buffer にプールのバイトを割り当て
VolumeNameSize
、MaximumLength を に設定しますVolumeNameSize
。ボリューム名を取得するには、 FltGetVolumeName をもう一度呼び出します。 例:
FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);
VolumeNameStruct.Buffer
には Unicode ボリューム名の文字列が含まれます。これはバイトの長さです VolumeNameStruct.Length
。
特定のボリュームのボリューム GUID 名を取得するには、 FltGetVolumeGuidName を呼び出します。
指定した名前のボリュームの不透明なボリューム ポインターを取得するには、 FltGetVolumeFromName を呼び出します。
ボリュームに名前を付ける方法の詳細については、「 Storage Class Driver でのマウント マネージャー要求のサポート」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (FltKernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | <= APC_LEVEL |