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 ビット値です。 プロバイダーが同じNET_LUID値 を持つインターフェイスを登録するたびに、NDIS から同じインターフェイス インデックスが返されない場合があります。 インターフェイス インデックス値 0 は予約済みであり、NDIS はインターフェイスに割り当てません。 インターフェイス インデックスと NET_LUID インデックスを混同しないでください。
戻り値
NdisIfRegisterInterface は、次のいずれかの状態値を返します。
リターン コード | 説明 |
---|---|
|
操作は正常に完了しました。 |
|
リソースが不足しているため、操作が失敗しました。 |
|
入力パラメーターの一部が無効であるため、NdisIfRegisterInterface が失敗しました。 |
|
NetLuid パラメーターが指定したのと同じNET_LUID値を持つインターフェイスが既に登録されているため、NdisIfRegisterInterface が失敗しました。 |
注釈
NDIS インターフェイス プロバイダーは、ネットワーク インターフェイスを登録するために NdisIfRegisterInterface 関数を呼び出します。 この関数の呼び出しは、インターフェイスがアクティブであることを意味するものではありません。
コンピューターが再起動するたびに、NDIS は登録済みのネットワーク インターフェイスの空の一覧で始まります。 インターフェイス プロバイダーは、インターフェイスが開始 (または検出) されるたびに NdisIfRegisterInterface 関数を呼び出します。
NET_LUID は既知です。
インターフェイスを検出または開始する方法は、アプリケーションによって異なります。 たとえば、LBFO MUX 中間ドライバーがインターフェイス プロバイダーである場合、NDIS が最初の基になるミニポート アダプターの ドライバーの ProtocolBindAdapterEx 関数を呼び出すときに、そのドライバーが内部インターフェイスを登録する可能性があります。
インターフェイス プロバイダーは、永続的ストレージにインターフェイスに関する情報を格納し、特定のアプリケーションに必要に応じてインターフェイスを復元できます。 たとえば、プロバイダーは、 NET_LUID を使用してインターフェイスに関する追加情報を格納し、コンピューターの再起動後にインターフェイスを再登録できます。
NdisIfRegisterInterface が成功した場合、NDIS は、既知のインターフェイスの一覧にインターフェイスを追加し、このインターフェイスの新しいインターフェイス インデックスを割り当てます。 インターフェイス プロバイダーは、可能な限り、有効なインターフェイスと無効なインターフェイスの両方を登録する必要があります。 すべての有効なインターフェイスを登録する必要があります。
プロバイダーが同じNET_LUID値を持つインターフェイスを登録するたびに、NDIS は同じインターフェイス インデックスを返さない場合があります。 たとえば、コンピューターの再起動後にインターフェイスが再登録されたとき、またはインターフェイスが登録解除されて再登録された場合、NDIS は必ずしも同じインターフェイス インデックスを割り当てるわけではありません。 インターフェイス インデックス値 0 は予約済みであり、NDIS はインターフェイスに割り当てません。
コンピューター上の既知のインターフェイスの一覧からインターフェイスを削除する必要があることを示すために、インターフェイス プロバイダーは を呼び出します。たとえば、 インターフェイスがアンインストールされているため、NdisIfDeregisterInterface 関数。 .
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | Irql_Interfaces_Function(ndis) |