次の方法で共有


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

[out, optional] BufferSizeNeeded

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

戻り値

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

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

注釈

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

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

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

  • Buffer にプールのバイトを割り当てVolumeNameSizeMaximumLength を に設定します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

こちらもご覧ください

FilterGetDosName

FltGetVolumeFromName

FltGetVolumeGuidName

UNICODE_STRING