次の方法で共有


NdisIfRegisterInterface 関数 (ndis.h)

NdisIfRegisterInterface 関数は、NDIS ネットワーク インターフェイスを登録します。

構文

NDIS_STATUS NdisIfRegisterInterface(
  [in] NDIS_HANDLE         NdisProviderHandle,
  [in] NET_LUID            NetLuid,
  [in] NDIS_HANDLE         ProviderIfContext,
  [in] PNET_IF_INFORMATION pIfInfo,
       PNET_IFINDEX        pfIndex
);

パラメーター

[in] NdisProviderHandle

インターフェイスを登録しているネットワーク インターフェイス プロバイダーを識別するハンドル。 呼び出し元は、前の呼び出しからこのハンドルを取得しました。NdisIfRegisterProvider 関数を します。

[in] NetLuid

呼び出し元が指定した NET_LUID インターフェイスに関連付けられている値。 インターフェイス プロバイダーは、NDIS_MAKE_NET_LUID マクロを使用してこのNET_LUID値を作成しました。 インターフェイス プロバイダーは、コンピューターの再起動後に永続的ストレージからNET_LUID値を回復し、特定のインターフェイスを登録するたびに同じNET_LUID値を指定する必要があります。

[in] ProviderIfContext

インターフェイスに関連付けられている呼び出し元によって割り当てられたコンテキスト領域へのハンドル。 NDIS は、呼び出し元が NdisIfRegisterProvider に登録コールバック関数にこのハンドルを渡します。

[in] pIfInfo

インターフェイスに関する情報を提供する呼び出し元によって割り当てられた NET_IF_INFORMATION 構造体へのポインター。 この構造体には、インターフェイスが存在する間も一定のままの情報が含まれています。

pfIndex

呼び出し元が指定したインターフェイス インデックス変数へのポインター。 NDIS が正常にインターフェイスを登録する場合、NDIS は、そのインターフェイスのインターフェイス インデックスを割り当て、pIfIndex で値を設定します。 インターフェイス インデックスは、ローカル コンピューターで一意の 24 ビット値です。 NDIS は、プロバイダーが同じNET_LUID値を持つインターフェイスを登録するたびに同じインターフェイス インデックスを返さない場合があります。 インターフェイス インデックス値 0 は予約されており、NDIS はインターフェイスに割り当てません。 インターフェイス インデックスと NET_LUID インデックスを混同しないでください。

戻り値

NdisIfRegisterInterface は、次のいずれかの状態値を返します。

リターン コード 形容
NDIS_STATUS_SUCCESS
操作が正常に完了しました。
NDIS_STATUS_RESOURCES
リソースが不足しているため、操作に失敗しました。
NDIS_STATUS_INVALID_PARAMETER
一部の入力パラメーターが無効であるため、NdisIfRegisterInterface 失敗しました。
NDIS_STATUS_DUPLICATE_OBJECTID
NdisIfRegisterInterface 失敗しました。これは、NetLuid パラメーターが指定したのと同じNET_LUID値を持つインターフェイスが既に登録されているためです。

備考

NDIS インターフェイス プロバイダーは、ネットワーク インターフェイスを登録する NdisIfRegisterInterface 関数を呼び出します。 この関数の呼び出しは、インターフェイスがアクティブであることを意味するものではありません。

コンピューターが再起動するたびに、NDIS は登録されているネットワーク インターフェイスの空の一覧で開始します。 インターフェイス プロバイダーは、インターフェイスが起動 (または検出) されるたびに、NdisIfRegisterInterface 関数を呼び出します。
NET_LUID は既知です。

インターフェイスを検出または開始する方法は、アプリケーションによって異なります。 たとえば、LBFO MUX 中間ドライバーがインターフェイス プロバイダーである場合、NDIS がドライバーの ProtocolBindAdapterEx 関数を呼び出すときに、そのドライバーが内部インターフェイスを登録する可能性があります。

インターフェイス プロバイダーは、永続的ストレージにインターフェイスに関する情報を配置し、特定のアプリケーションに必要に応じてインターフェイスを復元できます。 たとえば、プロバイダーは、NET_LUID を使用してインターフェイスに関する追加情報を格納でき、コンピューターの再起動後にインターフェイスを再登録できます。

NdisIfRegisterInterface 成功した場合、NDIS は、既知のインターフェイスの一覧にインターフェイスを追加し、このインターフェイスの新しいインターフェイス インデックスを割り当てます。 インターフェイス プロバイダーは、可能な限り、有効なインターフェイスと無効なインターフェイスの両方を登録する必要があります。 すべての有効なインターフェイスを登録する必要があります。

NDIS は、プロバイダーが同じNET_LUID値を持つインターフェイスを登録するたびに同じインターフェイス インデックスを返さない場合があります。 たとえば、コンピューターの再起動後にインターフェイスが再登録されたとき、またはインターフェイスが登録解除されて再登録された場合、NDIS は必ずしも同じインターフェイス インデックスを割り当てるわけではありません。 インターフェイス インデックス値 0 は予約されており、NDIS はインターフェイスに割り当てません。

インターフェイスをコンピューター上の既知のインターフェイスの一覧から削除する必要があることを示すために、インターフェイス プロバイダーは、たとえば、インターフェイスがアンインストールされているため、NdisIfDeregisterInterface 関数を します。 .

必要条件

要件 価値
サポートされる最小クライアント NDIS 6.0 以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
ライブラリ Ndis.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する Irql_Interfaces_Function(ndis)

関連項目

NDIS_MAKE_NET_LUID

NET_IF_INFORMATION

NET_LUID

NdisIfDeregisterInterface

NdisIfRegisterProvider

ProtocolBindAdapterEx