アダプターへのバインド
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 を呼び出すことができます。 アダプターを閉じる方法の詳細については、「アダプターからのバインド解除」を参照してください。