Udostępnij przez


Przychodzące żądanie zamknięcia połączenia

Po zamknięciu połączenia przez klienta zdalnego menedżer połączeń lokalnych lub sterownik MCM musi wskazać to żądanie przychodzące do klienta lokalnego. Aby wskazać takie żądanie, menedżer wywołań wywołuje NdisCmDispatchIncomingCloseCall z wartością CloseStatus ustawioną na NDIS_STATUS_SUCCESS (zobacz poniższą ilustrację).

Diagram przedstawiający przychodzące żądanie zamknięcia połączenia za pośrednictwem menedżera połączeń.

Sterownik MCM wywołuje polecenie NdisMCmDispatchIncomingCloseCall , aby wskazać przychodzące żądanie zamknięcia połączenia (zobacz poniższą ilustrację).

Diagram przedstawiający przychodzące żądanie zamknięcia połączenia za pośrednictwem sterownika MCM.

Menedżer połączeń lub sterownik MCM może również wywołać Ndis(M)CmDispatchIncomingCloseCall:

  • Jeśli funkcja ProtocolCmIncomingCallComplete stwierdzi, że klient z orientacją na połączenia żąda nieakceptowalnej zmiany parametrów połączenia w odpowiedzi na wcześniejsze połączenie przychodzące, które zostało wskazane przez menedżera połączeń lub sterownik MCM (zobacz Żądanie zmiany parametrów połączenia przychodzącego).

  • Jeśli nietypowe warunki sieciowe zmuszają menedżera połączeń do zakończenia aktywnych rozmów.

Wywołanie Ndis(M)CmDispatchIncomingCloseCall powoduje wywołanie funkcji ProtocolClIncomingCloseCall klienta zorientowanego na połączenie dla tego połączenia. ProtocolClIncomingCloseCall powinien wykonywać wszelkie operacje określone przez protokół, takie jak powiadamianie własnego klienta lub klientów o przerwaniu połączenia. Jeśli wywołanie do zamknięcia jest multipoint VC utworzone przez klienta, ProtocolClIncomingCloseCall musi wywołać NdisClDropParty jeden lub więcej razy, dopóki tylko jedna strona nie pozostanie na VC (zobacz Usuwanie strony z wywołania multipoint).

ProtocolClIncomingCloseCall musi następnie wywołać NdisClCloseCall(z uchwytem do ostatniej strony na VC, jeśli VC jest wielopunktowym VC utworzonym przez klienta), aby potwierdzić, że klient nie będzie już próbował wysyłać lub oczekiwać odbierania danych na tym konkretnym VC. Jeśli menedżer wywołań lub sterownik MCM utworzył ten VC, ProtokółClIncomingCloseCall powinien zwrócić kontrolę po wywołaniu NdisClCloseCall. Menedżer połączeń lub sterownik MCM musi również dezaktywować VC (zobacz Dezaktywowanie VC).

Jeśli klient pierwotnie utworzył ten vc dla wywołania wychodzącego i CloseStatus jest NDIS_STATUS_SUCCESS, ProtokółClIncomingCloseCall może opcjonalnie usunąć vc z NdisCoDeleteVc (zobacz Usuwanie VC) lub ponownie użyć VC w celu innego wywołania. Jeśli CloseStatus nie jest NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall musi wywołać NdisCoDeleteVc.

Jeśli menedżer połączeń lub sterownik MCM pierwotnie utworzył ten VC dla połączenia przychodzącego, menedżer połączeń lub sterownik MCM może opcjonalnie usunąć VC , wywołując odpowiednio NdisCoDeleteVc lub NdisMCmDeleteVc.