次の方法で共有


アダプターへのバインド

NDIS は、プロトコル ドライバーの ProtocolBindAdapterEx 関数を呼び出して、ドライバーがバインドできる基になるアダプターが使用可能になったときに、バインドを開きます。 NDIS が ProtocolBindAdapterEx を呼び出した後、バインドはオープン中状態になります。 Opening (オープン中) 状態では、プロトコル ドライバーは、バインディングのリソースを割り当て、アダプターを開きます。

NDIS は、ProtocolBindAdapterEx にバインディング操作の NDIS コンテキストと、NDIS_BIND_PARAMETERS 構造体へのポインターを渡します。 この構造には、次のようなアダプターに関する情報が含まれています。

  • アダプターの名前。

  • レジストリ内のプロトコル サービス エントリの下の、このバインドに固有のパラメーターのレジストリの場所。

  • アダプターの物理デバイス オブジェクト。

アダプターを開くため、プロトコル ドライバーは NdisOpenAdapterEx 関数を呼び出します。 プロトコル ドライバーは、NdisOpenAdapterEx に次を渡します。

  • NDISRegisterProtocolDriver 関数の NdisProtocolHandle パラメーターで NDIS がドライバーに返したハンドル。

  • このバインディングのプロトコル ドライバーのコンテキスト。

  • NDIS_OPEN_PARAMETERS型の構造へのポインター。

NDIS_OPEN_PARAMETERS には、NdisOpenAdapterEx が開くアダプターの名前、プロトコル ドライバーがサポートするメディア型の配列、および必要に応じて、ドライバーがこのバインドで受け取ることができるフレームの種類の配列などの情報が含まれています。

プロトコルドライバーが ProtocolBindAdapterEx からNDIS_STATUS_PENDINGを返す場合、バインド要求を完了するには、最終的な状態で NdisCompleteBindAdapterEx を呼び出す必要があります。

NDIS が NdisOpenAdapterEx から NDIS_STATUS_PENDING を返す場合、NDIS はその後、開いている要求が完了した後にプロトコル ドライバーの ProtocolOpenAdapterCompleteEx 関数を最終的な状態で呼び出します。

ドライバーがアダプターへのバインドを正常に開くと、バインディングは一時停止状態になります。

プロトコル ドライバーはアダプターを閉じるために、NdisCloseAdapterEx 関数を呼び出します。 ドライバーは、ProtocolBindAdapterEx 関数または ProtocolUnbindAdapterEx 関数から NdisCloseAdapterEx を呼び出すことができます。

アダプターを開いた後、バインド要求を完了する前に ProtocolBindAdapterEx でエラーが発生し、アダプターへのバインドを閉じる必要がある場合は、NdisCloseAdapterEx を呼び出すことができます。 アダプターを閉じる方法の詳細については、「アダプターからのバインド解除」を参照してください。