IoDriverProxyCreateHotSwappableWorkerThread 関数は、Driver Hot-Swap と互換性のある "スピン待機中" ワーカー スレッドを提供するホットスワップ可能なワーカー スレッドを作成します。 この関数は、ホット スワップ可能な状態を維持する必要があるドライバーで無限ループや実行時間の長い操作を処理する場合に特に便利です。
構文
NTSTATUS IoDriverProxyCreateHotSwappableWorkerThread(
PDRIVER_PROXY_EXTENSION DriverProxyExtension,
PHANDLE ThreadHandle,
ULONG DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
HANDLE ProcessHandle,
PCLIENT_ID ClientId,
PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT WorkerStartContext
);
パラメーター
DriverProxyExtension
[in]エンドポイントが登録されている DriverProxy 拡張機能へのポインター。 WorkerStartContext で指定されるワーカー ルーチンは、登録済みのエンドポイント ラッパーである必要があります。
ThreadHandle
[out]作成されたスレッドへのハンドルを受け取る変数へのポインター。
DesiredAccess
[in]スレッド ハンドル に必要なアクセス権 。
ObjectAttributes
[入力、省略可能]スレッド オブジェクトの属性を指定する OBJECT_ATTRIBUTES* 構造体へのポインター。 このパラメーターには NULL を指定できます。
ProcessHandle
[入力、省略可能]スレッドが作成されるプロセスのハンドル。 NULL の場合、スレッドは現在のプロセスで作成されます。
ClientId
[出力、省略可能]作成されたスレッドの CLIENT_ID 構造体へのポインター。 このパラメーターには NULL を指定できます。
WorkerStartContext
[in]ワーカー ルーチンや待機するイベント オブジェクトなど、ワーカー スレッドの構成を含む DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT構造体への ポインター。
戻り値
IoDriverProxyCreateHotSwappableWorkerThread は、次のいずれかの NTSTATUS 値を返します。
| リターン コード | Description |
|---|---|
| STATUS_SUCCESS | ホット スワップ可能なワーカー スレッドが正常に作成されました。 |
| STATUS_NOT_SUPPORTED | DriverProxy 機能は、現在のシステムでは使用できません。 |
| STATUS_INVALID_PARAMETER | NULL ワーカー ルーチンや無効なイベントカウントなど、1 つ以上のパラメーターが無効です。 |
| STATUS_INSUFFICIENT_RESOURCES | スレッド コンテキストまたはサポート構造体を作成するために使用できるメモリが不足していました。 |
注釈
この関数は、DriverProxy システムと統合する特殊なワーカー スレッドを作成し、スレッドの実行中にワーカー ルーチンをホット スワップできるようにします。 これは、ドライバーの更新プログラム間で保持する必要がある継続的なバックグラウンド操作を実行する必要があるドライバーに特に役立ちます。
WorkerStartContext で指定されるワーカー ルーチンは、DriverProxy 登録プロセスを通じて取得された登録済みのエンドポイント ラッパーである必要があります。 この要件により、ホット スワップ可能な機能が有効になり、ドライバーは実行時間の長いバックグラウンド操作を停止せずにワーカー ロジックを更新できます。
ワーカー スレッドはループ内で動作し、指定されたイベントを待機し、イベントが通知されたときにワーカー ルーチンを呼び出します。 ワーカー ルーチンは、スレッドの実行を継続するか終了するかを示すことができます。
この関数は WorkerStartContext 構造体のコピーを作成するため、呼び出し元は関数が戻った後に元の構造体を安全に破棄できます。 メモリ割り当てとスレッドの作成を実行するPASSIVE_LEVELで関数を呼び出す必要があります。
Requirements
| Requirement | 価値 |
|---|---|
| ターゲット プラットフォーム の | 万国 |
| Header | wdm.h |
| Library | NtosKrnl.lib |
| IRQL | PASSIVE_LEVEL |
こちらも参照ください
DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT