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) |