IoCreateDriverProxyExtension 関数は、ホット スワップ可能なドライバー機能を有効にする DriverProxy 拡張機能を割り当てて初期化します。
構文
NTSTATUS IoCreateDriverProxyExtension(
PDRIVER_OBJECT OwningDriverObject,
DRIVER_PROXY_EXTENSION_CREATION_FLAGS Flags,
PDRIVER_PROXY_EXTENSION *DriverProxyExtension
);
パラメーター
OwningDriverObject
[入力、省略可能]DriverProxy 拡張機能を所有する DRIVER_OBJECT への省略可能なポインター。 指定した場合、拡張機能はこのドライバー オブジェクトに関連付けられます。 NULL の場合、拡張機能は所有ドライバーなしで作成されます。
Flags
[in]拡張機能を作成するための追加の構成オプションを提供する DRIVER_PROXY_EXTENSION_CREATION_FLAGS 値。 現在、フラグは定義されていないため、このパラメーターは 0 に設定する必要があります。
DriverProxyExtension
[out]新しく作成された DriverProxy 拡張機能へのポインターを受け取る変数へのポインター。 この拡張機能は、他の DriverProxy API と共に使用できます。
戻り値
IoCreateDriverProxyExtension は、次のいずれかの NTSTATUS 値を返します。
| リターン コード | Description |
|---|---|
| STATUS_SUCCESS | 拡張機能が正常に割り当てられ、初期化されました。 |
| STATUS_NOT_SUPPORTED | 現在のシステムでは、DriverProxy 拡張機能はサポートされていません。 |
| STATUS_DRIVER_BLOCKED | 指定されたドライバーは、レジストリ設定を介して DriverProxy 操作から除外されます。 |
| STATUS_INSUFFICIENT_RESOURCES | 拡張機能の割り当てに使用できるメモリが不足していました。 |
| STATUS_RESOURCE_IN_USE | 指定したドライバー オブジェクトは、DriverProxy 拡張機能を既に所有しています。 |
注釈
DriverProxy 拡張機能は、ドライバー Hot-Swap 機能を使用するすべてのドライバーに必要です。 この拡張機能は、関連するすべての DriverProxy 情報を保持し、ホット スワップ可能な操作を可能にする不透明なトークンとして機能します。
Driver Hot-Swap を使用するドライバーは、 DriverEntry 中に DriverProxy 拡張機能を作成する必要があります。可能な場合は、関数の早い段階で行います。 ドライバーの有効期間を通じて簡単にアクセスできるように、結果をグローバル変数に格納することをお勧めします。
IoCreateDriverProxyExtension を呼び出す前に、ドライバーは IoGetDriverProxyFeatures を呼び出して、DriverProxy 機能が使用可能で有効になっていることを確認する必要があります。
各ドライバー オブジェクトは、最大で 1 つの DriverProxy 拡張機能を所有できます。 ドライバー オブジェクトに既に関連付けられている拡張機能がある場合、関数は STATUS_RESOURCE_IN_USEを返します。
Driver Hot-Swap V2 では、拡張機能が正常に作成されると、明示的な登録呼び出しを必要とせずに、エンドポイント ラッパーが自動的に使用できるようになります。 コンパイラとリンカーは、ビルド プロセス中にエンドポイント情報を自動的に生成します。
DriverProxy 拡張機能のライフサイクルは、システムによって自動的に管理されます。 所有しているドライバー オブジェクトがアンロードされると、拡張機能は自動的にクリーンアップされます。
Requirements
| Requirement | 価値 |
|---|---|
| ターゲット プラットフォーム の | 万国 |
| Header | wdm.h |
| Library | NtosKrnl.lib |
| IRQL | PASSIVE_LEVEL |
こちらも参照ください
IoGetDriverProxyWrapperFromEndpoint
IoGetDriverProxyExtensionFromDriverObject