次の方法で共有


FltAttachVolume 関数 (fltkernel.h)

FltAttachVolume 、新しいミニフィルター ドライバー インスタンスを作成し、指定されたボリュームにアタッチします。

構文

NTSTATUS FLTAPI FltAttachVolume(
  [in, out]      PFLT_FILTER      Filter,
  [in, out]      PFLT_VOLUME      Volume,
  [in, optional] PCUNICODE_STRING InstanceName,
  [out]          PFLT_INSTANCE    *RetInstance
);

パラメーター

[in, out] Filter

呼び出し元の不透明なフィルター ポインター。 このパラメーターは必須であり、NULL することはできません。

[in, out] Volume

ミニフィルター ドライバー インスタンスがアタッチされるボリュームの不透明なボリューム ポインター。 このパラメーターは必須であり、NULL することはできません。

[in, optional] InstanceName

新しいインスタンスのインスタンス名を含む UNICODE_STRING 構造体へのポインター。 このパラメーターは省略可能であり、NULL できます。 NULL 場合、FltAttachVolume は、ミニフィルター ドライバーの既定のインスタンス名をレジストリから読み取ろうとします。 (このパラメーターの詳細については、次の「解説」セクションを参照してください。

[out] RetInstance

新しく作成されたインスタンスの不透明なインスタンス ポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは省略可能であり、NULL できます。

戻り値

FltAttachVolume は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 形容
STATUS_FLT_DELETING_OBJECT
指定した フィルター またはボリューム が切断されています。 これはエラー コードです。
STATUS_FLT_FILTER_NOT_READY
ミニフィルター ドライバーがフィルター処理を開始していません。 詳細については、「FltStartFiltering を参照してください。 これはエラー コードです。
STATUS_FLT_INSTANCE_NAME_COLLISION
指定されたボリュームに、この名前のインスタンスが既に存在します。
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume プール割り当てエラーが発生しました。 これはエラー コードです。
STATUS_OBJECT_NAME_COLLISION
レジストリから読み取られたインスタンス属性で指定された高度で、別のインスタンスが既にアタッチされています。 これはエラー コードです。

備考

呼び出し元が InstanceNameに対して非NULL 値を指定した場合、fltAttachVolume は、レジストリに格納されているミニフィルター ドライバーで指定されたインスタンス属性を HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName に読み取ります。 ここで、serviceName はミニフィルター ドライバーのサービス名です。 このサービス名は、ミニフィルター ドライバーの INF ファイルの DefaultInstall.Services セクションで AddService ディレクティブで指定されます。 (フィルター ドライバー INF ファイルの詳細については、「ファイル システム フィルター ドライバーのインストール」を参照してください)。

呼び出し元が InstanceNameの値を指定しない場合、FltAttachVolume は、レジストリ パスの InstanceName 部分に対して、HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance の下のレジストリに格納されている名前を使用します。

InstanceName パラメーターで指定されたインスタンス名は、システム全体で一意である必要があります。

FltAttachVolume は、*RetInstance内の新しいインスタンスの不透明なインスタンス ポインターを返します。 このポインター値は、ミニフィルター ドライバー インスタンスを一意に識別し、インスタンスがボリュームにアタッチされている限り一定のままになります。

FltAttachVolume *RetInstanceで返される不透明なインスタンス ポインターにランダウン参照を追加します。 このポインターが不要になったら、呼び出し元は FltObjectDereference 呼び出してポインターを解放する必要があります。 したがって、FltAttachVolume 正常に呼び出されるたびに、FltObjectDereference への後続の呼び出し照合する必要があります。

ミニフィルター ドライバー インスタンスを特定の高度のボリュームにアタッチするには、FltAttachVolumeAtAltitude 呼び出します。

同じボリュームに接続されている 2 つのミニフィルター ドライバー インスタンスの高度を比較するには、FltCompareInstanceAltitudes 呼び出

ミニフィルター ドライバー インスタンスをボリュームからデタッチするには、FltDetachVolume 呼び出します。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー fltkernel.h (Fltkernel.h を含む)
ライブラリ FltMgr.lib
IRQL PASSIVE_LEVEL

関連項目

FltAttachVolumeAtAltitude する

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING