Udostępnij przez


Aktywowanie VC

Po utworzeniu połączenia wirtualnego (VC) (zobacz TworzenieVC), należy go aktywować, aby można było przesyłać lub odbierać dane. Menedżer wywołań inicjuje aktywację VC, wywołując NdisCmActivateVc(zobacz poniższy rysunek).

Diagram ilustrujący menedżera wywołań inicjującego aktywację VC.

Sterownik MCM inicjuje aktywację vc przez wywołanie NdisMCmActivateVc(zobacz poniższą ilustrację).

Diagram ilustrujący sterownik MCM inicjujący aktywację VC.

Menedżer wywołań lub sterownik MCM (Mobile Communications Manager) może zainicjować ponowną aktywację aktywnego VC, jeśli klient lokalny lub strona zdalna pomyślnie negocjuje zmianę parametrów wywołania na tym VC (zobacz Client-Initiated Żądanie zamknięcia połączenia i Przychodzące żądanie do zmiany parametrów wywołania). Menedżer połączeń lub sterownik MCM może wywołać Ndis(M)CmActivateVc wiele razy dla pojedynczego VC, aby zmienić parametry połączenia dla już aktywnego wywołania.

W przypadku połączenia wychodzącego zainicjowanego przez klienta menedżer połączeń lub sterownik MCM zazwyczaj wywołuje Ndis(M)CmActivateVc zaraz po wymianie pakietów, która potwierdza wynegocjowaną umowę z zdalnym odbiorcą połączenia lub po pomyślnym zestawieniu połączenia na przełączniku. Menedżer połączeń lub sterownik MCM wywołuje Ndis(M)CmActivateVc przed powiadomieniem NDIS oraz klienta o zakończeniu połączenia wychodzącego za pomocą Ndis(M)CmMakeCallComplete(zobacz Tworzenie połączenia). W przypadku połączenia przychodzącego menedżer wywołań lub sterownik MCM zwykle wywołuje Ndis(M)CmActivateVc po pomyślnym wywołaniu NdisCo(MCm)CreateVc i przed wywołaniem Ndis(M)CmDispatchIncomingCall(zobacz Wskazanie połączenia przychodzącego).

Wywołanie przez menedżera połączeń funkcji NdisCmActivateVc powoduje wywołanie funkcji MiniportCoActivateVc w podstawowym sterowniku miniportu. MiniportCoActivateVc musi zweryfikować parametry wywołania dla tego VC, aby sprawdzić, czy adapter może obsługiwać żądane połączenie. Jeśli parametry wywołania są dopuszczalne, MiniportCoActivateVc komunikuje się z adapterem według potrzeby, aby przygotować go do odbierania lub przesyłania danych przez połączenie wirtualne (na przykład programowania buforów odbiorczych). Jeśli żądane parametry wywołania nie mogą być obsługiwane, sterownik miniportu odrzuca żądanie.

MiniportCoActivateVc może być wykonywane synchronicznie lub asynchronicznie. Wywołanie NdisMCoActivateVcComplete powoduje, że NDIS wywołuje funkcję ProtocolCmActivateVcComplete menedżera wywołań. ProtocolCmActivateVcComplete musi sprawdzić stan zwrócony przez NdisMCoActivateVcComplete, aby upewnić się, że połączenie wirtualne zostało pomyślnie aktywowane. Jeśli sterownik miniportu nie aktywował VC z powodzeniem, menedżer połączeń nie powinien próbować komunikować się przez VC. ProtocolCmActivateVcComplete musi również wykonać wszelkie operacje wymagane przez media sieciowe, aby upewnić się, że połączenie wirtualne jest gotowe do transmisji danych przed przekazaniem kontroli do NDIS.

Wywołanie sterownika MCM do NdisMCmActivateVc informuje NDIS, że skonfigurowano parametry wywołania i multimediów na nowo utworzonym VC lub zmieniono parametry wywołania na ustalonym VC. Ta akcja powiadamia NDIS, że sterownik MCM przygotował NIC do transferu na VC. NDIS kończy sekwencję aktywacji, wywołując funkcję ProtocolCmActivateVcComplete sterownika MCM.

Sterownik MCM wywołuje NdisMCmActivateVc do aktywowania tylko VCs używanych do przesyłania i/lub odbierania danych klienta, ale nie do aktywowania VCs używanych do wymiany komunikatów sygnalizujących między sterownikiem MCM a składnikami sieciowymi, takimi jak przełącznik. Sterownik MCM aktywuje wewnętrznie sygnał VC, nie wywołując żadnej funkcji NdisXxx. Każdy VC, który sterownik MCM konfiguruje do własnych celów sygnalizacyjnych, jest zatem nieprzejrzysty dla NDIS.