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
DriverHandle で指定されたデバイスが既に初期化されているため、NdisIMInitializeDeviceInstanceEx が失敗しました。

注釈

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

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

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

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

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

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

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

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

要件

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

こちらもご覧ください

IRP_MN_START_DEVICE

MiniportInitializeEx

NdisAllocateMemoryWithTagPriority NdisIMCancelInitializeDeviceInstance NdisIMDeInitializeDeviceInstance

NdisIMGetBindingContext

NdisIMInitializeDeviceInstanceEx

NdisInitializeString

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes

NdisOpenAdapterEx

ProtocolBindAdapterEx

UNICODE_STRING