NDIS は、ドライバーが基になるアダプターからバインドを解除することを要求するプロトコル ドライバーの ProtocolUnbindAdapterEx 関数を呼び出します。 ProtocolBindAdapterEx の逆数として、NDIS は ProtocolUnbindAdapterEx を呼び出して、アダプターへのバインドを閉じ、ドライバーがバインドに割り当てたリソースを解放します。
ProtocolUnbindAdapterEx では、プロトコル ドライバーは NdisCloseAdapterEx を呼び出して、基になるアダプターへのバインドを閉じます。 プロトコル ドライバーは、NdisCloseAdapterEx その NdisBindingHandle パラメーターで指定された NdisOpenAdapterEx ハンドルを渡します。 このハンドルは、NDIS が閉じるバインディングを識別します。
プロトコル ドライバーは、 ProtocolBindAdapterEx 関数または ProtocolUnbindAdapterEx 関数からアダプターを閉じる必要があります。
プロトコル ドライバーがバインディングを閉じる操作を開始する必要がある場合、ドライバーは NdisUnbindAdapter を呼び出すことができます。 NdisUnbindAdapterは、ProtocolUnbindAdapterEx への NDIS 呼び出しを行う作業項目をスケジュールします。 この作業項目は、 NdisUnbindAdapter の呼び出しが返される前に実行できます。 そのため、ドライバー ライターは、 NdisUnbindAdapter が返された後、バインド ハンドルが無効であると想定する必要があります。
プロトコル ドライバーが ProtocolUnbindAdapterEx からNDIS_STATUS_PENDINGを返す場合、バインド要求を完了するには、最終的な状態で NdisCompleteUnbindAdapterEx を呼び出す必要があります。
NDIS が NdisCloseAdapterEx からNDIS_STATUS_PENDINGを返す場合、NDIS は後でプロトコル ドライバーの ProtocolCloseAdapterCompleteEx 関数を呼び出します。
バインディングが一時停止状態の場合、NDIS は ProtocolUnbindAdapterEx を呼び出すことができます。
すべてのバインド解除操作が完了すると、バインドは Unbound 状態になります。