Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na poniższej ilustracji przedstawiono klienta wykonującego połączenie wychodzące za pośrednictwem menedżera połączeń.
Na poniższej ilustracji przedstawiono klienta wykonującego połączenie wychodzące za pośrednictwem sterownika MCM.
Przed wykonaniem połączenia wychodzącego klient zorientowany na połączenie musi:
Zainicjuj parametry wywołania w strukturze typu CO_CALL_PARAMETERS. Menedżer wywołań lub sterownik MCM zwykle używa parametrów wywołania, które klient określa, aby skonfigurować wywołanie i uzyskać parametry nośnika do użycia przez sterownik miniportu.
Zainicjuj tworzenie VC za pomocą NdisCoCreateVc.
Po pomyślnym powrocie NdisCoCreateVcklient wywołuje NdisClMakeCall, by zainicjować wywołanie (zobacz dwa rysunki w tej sekcji).
W wywołaniu polecenia NdisClMakeCallklient przekazuje wskaźnik do wcześniej zainicjowanej struktury CO_CALL_PARAMETERS. Klient przekazuje również NdisVcHandle (zwracane przez NdisCoCreateVc), który identyfikuje VC, na którym klient będzie przesyłał (i być może odbierał) dane w ramach wywołania. Jeśli klient wykonuje połączenie wielopunktowe (połączenie z więcej niż jedną zdalną stroną), przekazuje również ProtocolPartyContext, który określa dojście do przydzielonego przez klienta obszaru kontekstu rezydenta, w którym klient będzie utrzymywać stan poszczególnych stron dla początkowej strony w wielopunktowej VC.
Wywołanie polecenia NdisClMakeCall powoduje, że usługa NDIS przekazuje to żądanie do funkcji ProtocolCmMakeCall menedżera wywołań lub sterownika MCM, z którym klient współużytkuje dany NdisVcHandle . ProtocolCmMakeCall musi zweryfikować parametry wywołania wejściowego skonfigurowane przez klienta.
ProtocolCmMakeCall komunikuje się (wymienia komunikaty sygnalizujące) z urządzeniami kontroli sieci w celu nawiązania połączenia. Menedżer połączeń wywołuje NdisCoSendNetBufferLists, aby rozpocząć taką wymianę (zobacz Wysyłanie struktur NET_BUFFER ze sterowników CoNDIS). Sterownik MCM nigdy nie wywołuje NdisCoSendNetBufferLists. Zamiast tego przesyła dane bezpośrednio przez sieć.
Menedżer wywołań lub sterownik MCM może modyfikować parametry wywołania dostarczone przez klienta podczas negocjacji z odpowiednimi składnikami sieciowymi i może zwrócić inne parametry ruchu niż te, które klient pierwotnie przekazał do NdisClMakeCall(zobacz Żądanie przychodzące zmiany parametrów wywołania).
Jawny NdisPartyHandle przekazany do ProtocolCmMakeCall wskazuje, że VC utworzony przez klienta będzie używany dla połączenia wielopunktowego. Menedżer połączeń lub sterownik MCM musi przydzielić i zainicjować wszelkie niezbędne zasoby wymagane do obsługi informacji o stanie poszczególnych stron i kontrolować połączenie multipoint.
Po wykonaniu przez menedżera połączeń całej niezbędnej komunikacji ze sprzętem sieciowym zgodnie z wymaganiami nośnika, musi wywołać NdisCmActivateVc, aby zainicjować aktywację VC, na którym dane połączenia zostaną wysłane i może również być odbierane. Sterownik MCM musi wywołać NdisMCmActivateVc.
Gdy podstawowy sterownik miniportu jest gotowy do przesyłania danych na VC (czyli po aktywowaniu VC), menedżer połączeń wywołuje NdisCmMakeCallComplete, a sterownik MCM wywołuje NdisMCmMakeCallComplete. W tym momencie menedżer połączeń lub sterownik MCM powinien negocjować z siecią w celu ustanowienia parametrów wywołania dla VC, a bazowy sterownik miniportu powinien ukończyć aktywację VC.
W wywołaniu do Ndis(M)CmMakeCallCompletemenedżer połączeń lub sterownik MCM przekazuje parametry połączenia dla VC jako wskaźnik do struktury typu CO_CALL_PARAMETERS. Jeśli menedżer wywołań zmodyfikował parametry wywołania określone pierwotnie przez klienta, może powiadomić klienta, ustawiając flagę CALL_PARAMETERS_CHANGED w strukturze CO_CALL_PARAMETERS.
Wywołanie Ndis(M)CmMakeCallComplete powoduje, że NDIS wywołuje funkcję ProtocolClMakeCallComplete u klienta, który zainicjował to wywołanie wychodzące. Wywołanie ProtocolClMakeCallComplete wskazuje, że menedżer wywołań zakończył przetwarzanie żądania klienta w celu nawiązania połączenia wirtualnego z NdisClMakeCall.
Jeśli próba nawiązania połączenia wychodzącego klienta zakończyła się pomyślnie, ProtocolClMakeCallComplete powinna sprawdzić flagę CALL_PARAMETERS_CHANGED, aby określić, czy parametry wywołania pierwotnie określone przez klienta zostały zmodyfikowane. Jeśli flaga jest ustawiona, co wskazuje, że parametry wywołania zostały zmienione, ProtocolClMakeCallComplete powinien zbadać zwrócone parametry wywołania, aby określić, czy są one dopuszczalne dla tego połączenia.
Jeśli parametry wywołania są dopuszczalne, ProtocolClMakeCallComplete po prostu zwraca kontrolę. Jeśli parametry wywołania nie są dopuszczalne i jeśli protokół sygnalizacyjny zezwala na renegocjację w tym momencie, klient może wywołać NdisClModifyCallQoS zażądać zmiany parametrów wywołania (zobacz Client-Initiated Żądanie zamknięcia wywołania). Jeśli protokół sygnalizacyjny nie zezwala na renegocjację niedopuszczalnych parametrów wywołania, ProtocolClMakeCallComplete musi rozłączyć połączenie z NdisClCloseCall(zobacz Client-Initiated Żądanie zamknięcia wywołania).