次の方法で共有


IoGetLowerDeviceObject 関数 (ntifs.h)

IoGetLowerDeviceObject ルーチンは、ドライバー スタック上の次の下位レベルのデバイス オブジェクトへのポインターを返します。

構文

PDEVICE_OBJECT IoGetLowerDeviceObject(
  [in] PDEVICE_OBJECT DeviceObject
);

パラメーター

[in] DeviceObject

次の下位レベルのデバイス オブジェクトが返されるスタック内のデバイス オブジェクトへのポインター。

戻り値

IoGetLowerDeviceObject は、ドライバー スタック上の次の下位レベルのデバイス オブジェクトへのポインターを返します。

注釈

ファイル システムまたはデバイス ドライバー スタック内のデバイス オブジェクトへのポインターを指定すると、 IoGetLowerDeviceObject は スタック上の次の下位レベルのデバイス オブジェクトへのポインターを返します。

IoGetLowerDeviceObject は、 次の場合に NULL を返します。

  • 次の下位レベルのドライバーは読み込まれません。

  • 次の下位レベルのドライバーは現在、アンロード、削除、または削除されています。

  • DeviceObject が指すデバイス オブジェクトは、ドライバー スタック内で最も低いデバイス オブジェクトです。

ファイル システム フィルター ドライバーは、通常 、IoGetLowerDeviceObject を使用して、特定のファイル システム デバイス オブジェクトの上にチェーンされているフィルター ドライバー スタックに既にアタッチされているかどうかを判断します。 最初に、フィルターは IoGetAttachedDeviceReference を呼び出して、スタック内の最上位のデバイス オブジェクトへのポインターを取得します。 次に、 IoGetLowerDeviceObject を繰り返し呼び出してドライバー スタックをウォークし、各デバイス オブジェクトを確認して、オブジェクトがフィルター ドライバーに属しているかどうかを確認します。

IoGetLowerDeviceObject は、次の下位レベルのデバイス オブジェクトが存在する場合、参照カウントをインクリメントします。 したがって、NULL を返さない IoGetLowerDeviceObject の呼び出しはすべて、後続の ObDereferenceObject 呼び出しで一致する必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 SP4 更新プログラムのロールアップ。Windows XP
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

IoGetAttachedDevice

IoGetAttachedDeviceReference

ObDereferenceObject