次の方法で共有


FltGetDeviceObject 関数 (fltkernel.h)

FltGetDeviceObject ルーチンは、特定のボリュームのフィルター マネージャーのボリューム デバイス オブジェクト (VDO) へのポインターを返します。

構文

NTSTATUS FLTAPI FltGetDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DeviceObject
);

パラメーター

[in] Volume

ボリュームの不透明なポインター。

[out] DeviceObject

ボリューム デバイス オブジェクト ポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。

戻り値

FltGetDeviceObject は 、次のようなSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_FLT_NO_DEVICE_OBJECT 要求されたデバイス オブジェクトは、指定されたボリュームに対して存在しません。 これはエラー コードです。

注釈

FltGetDeviceObject は、指定されたボリュームのフィルター マネージャーのボリューム デバイス オブジェクト (VDO) へのポインターを返します。

ボリューム デバイス オブジェクトの詳細については、「 ファイル システム スタック」を参照してください。

フィルター マネージャーの VDO は、基になるストレージ ドライバーのディスク デバイス オブジェクトまたは基本ファイル システムの VDO と同じではありません。 ディスク デバイス オブジェクトへのポインターを取得するには、Volume パラメーターで指定されたボリュームで FltGetDiskDeviceObject を呼び出します。 基本ファイル システムの VDO へのポインターを取得するには、FltGetDeviceObject によって返される RetDeviceObjectIoGetDeviceAttachmentBaseRef を呼び出します。

特定のデバイス オブジェクトの対応するボリュームの不透明なポインターを取得するには、 FltGetVolumeFromDeviceObject を呼び出します。

FltGetDeviceObject は、返されたデバイス オブジェクト ポインターの参照カウントをインクリメントします。 このポインターが不要になった場合、呼び出し元は ObDereferenceObject を呼び出して、この参照カウントをデクリメントする必要があります。 したがって、 FltGetDeviceObject を正常に呼び出すたびに、 ObDereferenceObject の後続の呼び出しと一致する必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library Fltmgr.lib
[DLL] Fltmgr.sys
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

FltGetDiskDeviceObject

FltGetVolumeFromDeviceObject

IoGetDeviceAttachmentBaseRef

ObDereferenceObject