IoRegisterDriverReinitialization 関数 (ntddk.h)

IoRegisterDriverReinitialization ルーチンは、初期化中または再初期化中にドライバーによって呼び出され、ドライバーの初期化が完了する前に再度呼び出されるように再初期化ルーチンを登録します。

構文

void IoRegisterDriverReinitialization(
  [in]           PDRIVER_OBJECT       DriverObject,
  [in]           PDRIVER_REINITIALIZE DriverReinitializationRoutine,
  [in, optional] PVOID                Context
);

パラメーター

[in] DriverObject

DriverEntry ルーチンに入力されたドライバー オブジェクトへのポインター。

[in] DriverReinitializationRoutine

ドライバーの 再初期化 ルーチンへのポインター。

[in, optional] Context

ドライバーの 再初期化 ルーチンに渡されるコンテキストへのポインター。

戻り値

なし

解説

ドライバーは、その DriverEntry ルーチンがSTATUS_SUCCESSを返す場合にのみ、このルーチンを呼び出すことができます。 ドライバー指定の再初期化ルーチンでレジストリを使用する必要がある場合、DriverEntry ルーチンには、この呼び出しで Reinitialize ルーチンに渡されるコンテキストの一部として RegistryPath が指す文字列のコピーを含める必要があります。

ドライバーが動的に読み込まれている場合、これは、通常実行中のシステム中に発生する可能性があるため、再初期化キューへのすべての参照を同期する必要があります。

DriverReinitializationRoutine への Count 入力は、現在の呼び出しを含め、このルーチンが呼び出された回数を示します。

DriverEntry ルーチンは、IoRegisterDriverReinitialization を 1 回だけ呼び出すことができます。 他のドライバーの再初期化ルーチンが制御を返した後に再初期化ルーチンを再度実行する必要がある場合、再初期化ルーチンは、ドライバーの再初期化ルーチンを実行する必要がある回数だけ IoRegisterDriverReinitialization を呼び出すこともできます。

通常、 再初期化 ルーチンを持つドライバーは、PnP とレガシ デバイスの両方を制御する上位レベルのドライバーです。 このようなドライバーは、PnP マネージャーが検出したデバイス (および PnP マネージャーがドライバーの AddDevice ルーチンを呼び出す) のデバイス オブジェクトを作成するだけでなく、PnP マネージャーが検出しないレガシ デバイスのデバイス オブジェクトも作成する必要があります。 ドライバーは 、再初期化 ルーチンを使用して、これらのデバイス オブジェクトを作成し、基になるデバイスの次の下位ドライバーにドライバーを重ねることができます。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

こちらもご覧ください

DRIVER_OBJECT

IoRegisterBootDriverReinitialization