FltGetDiskDeviceObject 関数 (fltkernel.h)
FltGetDiskDeviceObject ルーチンは、特定のボリュームに関連付けられているディスク デバイス オブジェクトへのポインターを返します。
構文
NTSTATUS FLTAPI FltGetDiskDeviceObject(
[in] PFLT_VOLUME Volume,
[out] PDEVICE_OBJECT *DiskDeviceObject
);
パラメーター
[in] Volume
ボリュームの不透明なポインター。 このパラメーターは必須であり、NULL することはできません。
[out] DiskDeviceObject
デバイス オブジェクト ポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。 エラーが発生しても、このパラメーターは変更されません。
戻り値
FltGetDiskDeviceObject は、STATUS_SUCCESSまたは次のような適切な NTSTATUS 値を返します。
リターン コード | 形容 |
---|---|
STATUS_FLT_NO_DEVICE_OBJECT | 要求されたデバイス オブジェクトは、指定されたボリュームに対して存在しません。 これはエラー コードです。 |
備考
FltGetDiskDeviceObject 、ボリュームが存在する物理ディスクのストレージ デバイス オブジェクトへのポインターを取得します。 ストレージ デバイスが実際のディスクである必要はありません。
FltGetDiskDeviceObject 、DiskDeviceObject で返されるデバイス オブジェクト ポインターの参照カウントインクリメントします。 このポインターが不要になったら、呼び出し元は ObDereferenceObject呼び出して、この参照カウントをデクリメントする必要があります。 これを行わないと、未処理の参照のためにシステムがデバイス オブジェクトを解放または削除できなくなります。 したがって、FltGetDiskDeviceObject 呼び出しが成功するたびに、後続の呼び出しで ObDereferenceObject 照合する必要があります。
ミニフィルターは、I/O 関連のコールバックでのみ FltGetDiskDeviceObject 呼び出す必要があります。 それ以外の場合、返されるデバイス オブジェクトのフィールドが無効である可能性があります。 これは、InstanceTeardownStartCallback や InstanceTeardownCompleteCallback などのコールバック ルーチンの場合です。
特定のボリュームのフィルター マネージャーのボリューム デバイス オブジェクト (VDO) へのポインターを取得するには、FltGetDeviceObject呼び出します。
ボリューム デバイス オブジェクトによって表されるボリュームの不透明なボリューム ポインターを取得するには、FltGetVolumeFromDeviceObject呼び出します。
ボリューム デバイス オブジェクトの詳細については、「ファイル システム スタックの」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | fltkernel.h (Fltkernel.h を含む) |
ライブラリ | Fltmgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |
関連項目
FltGetDeviceObjectの
FltGetVolumeFromDeviceObjectの
ObDereferenceObjectの