次の方法で共有


NdisIMInitializeDeviceInstanceEx 関数 (ndis.h)

NdisIMInitializeDeviceInstanceEx 関数は、仮想ミニポートの初期化操作を開始し、必要に応じて、後続のバインドされたプロトコル ドライバーの仮想ミニポートに関する状態情報を設定します。

構文

NDIS_STATUS NdisIMInitializeDeviceInstanceEx(
  [in]           NDIS_HANDLE  DriverHandle,
  [in]           PNDIS_STRING DriverInstance,
  [in, optional] NDIS_HANDLE  DeviceContext
);

パラメーター

[in] DriverHandle

ミニポート ドライバーは、次の操作を処理します。NdisMRegisterMiniportDriver 関数、NdisMiniportDriverHandle 返します。

[in] DriverInstance

システムの既定の文字セット内の呼び出し元で初期化されたカウントされた文字列を記述するNDIS_STRING型へのポインター。 この文字列には、ドライバーが仮想ミニポートに関する情報と、場合によってはバインディング固有の情報を格納するレジストリ キーの名前が含まれています。 Microsoft Windows 2000 以降のドライバーの場合、この文字列には Unicode 文字が含まれます。 つまり、Windows 2000 以降では、NDIS はNDIS_STRING型を UNICODE_STRING 型として定義します。

[in, optional] DeviceContext

仮想ミニポートに関するドライバー定義のデバイス コンテキスト情報を設定する呼び出し元が指定したメモリへのポインター。この後、この仮想ミニポートに自身をバインドする上位レベルのプロトコル ドライバーを使用できます。 中間ドライバーにこのようなデバイス コンテキスト領域がない場合、このパラメーターは NULL できます。

戻り値

NdisIMInitializeDeviceInstanceEx は、次のいずれかを返すことができます。

リターン コード 形容
NDIS_STATUS_SUCCESS
NDIS は、中間ドライバーの仮想ミニポートの初期化操作を開始しました。
NDIS_STATUS_NOT_ACCEPTED
ドライバー ハンドル で指定されたデバイスが既に初期化されているため、NdisIMInitializeDeviceInstanceEx 失敗

備考

NDIS 中間ドライバーは、ProtocolBindAdapterEx 関数から NdisIMInitializeDeviceInstanceEx 呼び出す必要があります。 NDIS 中間ドライバーから NdisIMInitializeDeviceInstanceEx を呼び出 失敗すると、そのドライバーが正常に読み込まれるのを効果的に防ぐことができます。

NdisIMInitializeDeviceInstanceEx 呼び出す前に、中間ドライバーの ProtocolBindAdapterEx 関数は、中間ドライバーが機能するために必要な基になるミニポート ドライバーにバインドする必要があります。 ProtocolBindAdapterEx 関数は、DeviceContext で領域を割り当てることもできます。基になるミニポート アダプターの機能に関する中間ドライバーによって決定された情報を設定し、ProtocolBindAdapterExによって収集された可能性があります。 中間ドライバーの ミニポートInitializeEx 関数は、ドライバーの仮想ミニポートに関する情報を持つこのコンテキスト領域を設定するために、後でこのような情報を使用する可能性があります。

NdisIMInitializeDeviceInstanceEx する中間ドライバーの呼び出しは、NDIS がデバイスを起動する IRP_MN_START_DEVICE IRP を受け取った場合、中間ドライバーの ミニポートInitializeEx 関数を呼び出します。 NDIS がこのような IRP を受信しない場合、NDIS は中間ドライバーの ミニポートInitializeEx 関数を呼び出しません。

ミニポートInitializeEx の呼び出しは後で発生する可能性があるため、NdisIMInitializeDeviceInstanceEx 呼び出しのコンテキスト内では必ずしもありません。 NDIS が NdisIMInitializeDeviceInstanceEx への呼び出しで参照される仮想ミニポートのミニポートInitializeEx 呼び出すことはなく、中間ドライバーは仮想ミニポートを必要としなくなった場合は、中間ドライバーを呼び出す必要があります。NdisIMCancelInitializeDeviceInstance 関数を して、仮想ミニポートの初期化を取り消します。 たとえば、中間ドライバーが基になるミニポート アダプターへの正常なバインドに応答して仮想ミニポートを作成するとします。 NDIS がミニポートInitializeEx 呼び出す前に、そのバインドが削除された場合、中間ドライバーは、仮想ミニポートの初期化 取り消すために NdisIMCancelInitializeDeviceInstance を呼び出す必要があります。

ミニポートInitializeEx は、ドライバーがネットワーク I/O 操作を実行するために必要なリソース (呼び出しなど) を割り当てます。NdisMSetMiniportAttributes 関数を し、操作状態にドライバーの仮想ミニポートを初期化します。 その後、上位レベルのプロトコル ドライバーは、中間ドライバーの初期化が正常に完了したときに、仮想ミニポートに自分自身をバインドできます。

ミニポートInitializeEx は、コントロールを返した後、中間ドライバーのデバイス コンテキスト領域がある場合は、そのコンテキスト領域の情報にアクセスする同じ仮想ミニポートにバインドされているすべての上位レベルのプロトコル ドライバーを後で有効にする中間ドライバー定義データを含めることができます。 このような上位レベルのプロトコル ドライバーは、中間ドライバーが提供するデバイス コンテキストに対して、NdisIMGetBindingContext 関数を します。

NDIS が中間ドライバーの ミニポートInitializeEx 関数を呼び出す前に、ドライバーは呼び出すことができます初期化操作を取り消すには、NdisIMCancelInitializeDeviceInstance します。

NDIS は、中間ドライバーの ミニポートInitializeEx 関数を呼び出した後、ドライバーを呼び出す必要があります。NdisIMDeInitializeDeviceInstance して初期化操作を元に戻します。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisIMInitializeDeviceInstanceEx (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisIMInitializeDeviceInstanceEx (NDIS 5.1) を参照) でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
ライブラリ Ndis.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する Irql_IM_Function(ndis)

関連項目

IRP_MN_START_DEVICE

ミニポートInitializeEx

NdisIMCancelInitializeDeviceInstance NdisIMDeInitializeDeviceInstance NdisIMDeInitializeDeviceInstance

NdisIMGetBindingContext

NdisIMInitializeDeviceInstanceEx

NdisInitializeString

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes

NdisOpenAdapterEx

ProtocolBindAdapterEx

UNICODE_STRING