次の方法で共有


IoCreateDriverProxyExtension 関数 (wdm.h)

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

こちらも参照ください

IoGetDriverProxyFeatures

IoGetDriverProxyWrapperFromEndpoint

IoGetDriverProxyExtensionFromDriverObject

DRIVER_PROXY_EXTENSION_CREATION_FLAGS

DRIVER_OBJECT