次の方法で共有


NET_LUID インデックスの使用

NDIS には、NET_LUID 値の作成に必要な NET_LUID インデックスを割り当て、解放する関数が用意されています。 NDIS インターフェイス プロバイダーは、インターフェイスを登録するために、NET_LUID 値を割り当てる必要があります。

NET_LUID インデックスを割り当てるには、インターフェイス プロバイダーは NdisIfAllocateNetLuidIndex 関数を呼び出します。 インデックスを割り当てると、インターフェイス プロバイダーは NDIS_MAKE_NET_LUID マクロを呼び出して、NET_LUID 値を構築します。 NET_LUID インデックスを解放するには、インターフェイス プロバイダーにより NdisIfFreeNetLuidIndex 関数が呼び出されます。

NdisIfAllocateNetLuidIndex により、呼び出し元が IfType パラメーターで指定した、およびローカル コンピューターに固有のインターフェイス型に関連付けられている 24 ビット値の割り当てが試行されます。 インデックスの割り当てが成功すると NdisIfAllocateNetLuidIndex により NDIS_STATUS_SUCCESS が返され、pNetLuidIndex パラメーターで指定されているアドレスに NET_LUID インデックスが提供されます。 NDIS が空き NET_LUID インデックスを見つけられない場合、NdisIfAllocateNetLuidIndex により NDIS_STATUS_RESOURCES が返されます。 NdisIfAllocateNetLuidIndex では、NDIS 内の内部エラーを示すために、他の NDIS 状態値が返される場合があります。 コンピューターがその後再起動されたときのために、NDIS によってこのインデックスの割り当てが記録されます。 NDIS では、インデックスを割り当てたインターフェイス プロバイダーによってそのインデックス用に NdisIfFreeNetLuidIndex 関数が呼び出されるまで、コンピューターが再起動された後でも、その後の呼び出しのために特定のインデックスは使用されません。

NdisIfFreeNetLuidIndex により、以前に割り当てられた NET_LUID インデックスが解放されます。これは、NDIS によりそのインデックスを他のインターフェイスに再割り当てできるようにするためです。 呼び出し元は、呼び出し元が NdisIfAllocateNetLuidIndex を呼び出して NET_LUID インデックスを割り当てたときにそれが使用した IfType で同じインターフェイス型を渡す必要があります。 解放操作が成功すると、NdisIfFreeNetLuidIndex により NDIS_STATUS_SUCCESS が返されます。 NdisIfFreeNetLuidIndex の呼び出しが失敗した場合、インターフェイス プロバイダーによって、NET_LUID インデックスに関連する永続ストレージに保存されたすべての情報が削除されます。 情報の削除により、すべてのコンピューターの再起動後に既に解放されているインデックスをプロバイダーが解放しようとせずに済みます。 NdisIfFreeNetLuidIndex を呼び出した後、呼び出し元は、同じインターフェイス型に対して NdisIfAllocateNetLuidIndex を再度呼び出し、解放したのと同じ NET_LUID インデックスを受信しない限り、NET_LUID 値を再度使用することはできません。

ネットワーク インターフェイスを登録するには、インターフェイス プロバイダーは有効な NET_LUID 値を NdisIfRegisterInterface 関数に渡す必要があります。 ネットワーク インターフェイスの登録の詳細については、「ネットワーク インターフェイスの登録」を参照してください。