次の方法で共有


アダプターからのバインド解除

NDIS は、プロトコル ドライバーの ProtocolUnbindAdapterEx 関数を呼び出して、ドライバーが基となるアダプターからバインドを解除するよう要求します。 NDIS は、相互の ProtocolBindAdapterEx として ProtocolUnbindAdapterEx を呼び出し、アダプターへのバインドを閉じ、ドライバーがバインドを割り当てたリソースを解放します。

ProtocolUnbindAdapterEx では、プロトコル ドライバーが NdisCloseAdapterEx を呼び出して、基になるアダプターへのバインドを閉じます。 プロトコル ドライバーは、NdisOpenAdapterExNdisBindingHandle パラメーターで提供したハンドルを NdisCloseAdapterEx に渡します。 このハンドルは、NDIS が閉じる必要があるバインドを識別します。

プロトコル ドライバーは、ProtocolBindAdapterEx 関数または ProtocolUnbindAdapterEx 関数からアダプターを閉じる必要があります。

プロトコル ドライバーがバインドを閉じる操作を開始する必要がある場合、ドライバーは NdisUnbindAdapter を呼び出すことができます。 NdisUnbindAdapter は、ProtocolUnbindAdapterEx への NDIS 呼び出しを行う作業項目をスケジュールします。 この作業項目は、NdisUnbindAdapter への呼び出しが返される前に実行できます。 そのため、ドライバー作成者は、NdisUnbindAdapter が返された後はバインド ハンドルが無効であることを前提とする必要があります。

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

NDIS が NdisCloseAdapterEx から NDIS_STATUS_PENDING を返す場合、NDIS は後で プロトコル ドライバーの ProtocolCloseAdapterCompleteEx 関数を呼び出します。

バインドが一時停止状態にある場合、NDIS は ProtocolUnbindAdapterEx を呼び出すことができます。

すべてのバインド解除操作が完了すると、バインドは Unbound 状態になります。