Udostępnij za pośrednictwem


Usuwanie inwestora

Tylko klient zorientowany na połączenie, menedżer wywołań lub sterownik MCM, który zainicjował tworzenie obwodu wirtualnego (VC), może zainicjować usunięcie tego VC. W związku z tym klient usuwa vc, który został wcześniej utworzony na potrzeby połączenia wychodzącego, menedżer wywołań lub sterownik MCM usuwa vc, który został wcześniej utworzony na potrzeby połączenia przychodzącego za pośrednictwem sieci, a menedżer wywołań usuwa vc, który został wcześniej utworzony do wymiany komunikatów sygnalizujących za pośrednictwem sieci. (Sterownik MCM nie wzywa NDIS do usunięcia VC, który został utworzony w celu wymiany komunikatów sygnalizacyjnych. Usuwnie takiego VC odbywa się poprzez operację wewnętrzną, która jest nieprzejrzysta dla NDIS.)

Klient zorientowany na połączenie lub menedżer połączeń inicjuje usunięcie VC za pomocą NdisCoDeleteVc.

Na poniższej ilustracji przedstawiono klienta zarządzania połączeniami inicjującego usunięcie obwodu wirtualnego.

Diagram przedstawiający klienta menedżera wywołań inicjującego usunięcie VC.

Ilustracja poniżej przedstawia klienta sterownika MCM inicjującego usunięcie VC.

Diagram przedstawiający klienta sterownika MCM inicjującego usunięcie VC.

Na poniższej ilustracji przedstawiono menedżera połączeń inicjującego usunięcie VC.

Diagram przedstawiający menedżera wywołań inicjującego usunięcie VC.

Gdy klient lub menedżer wywołań wywołuje NdisCoDeleteVc lub gdy sterownik MCM wywołuje NdisMCmDeleteVc, nie mogą istnieć zaległe wywołania dla danego VC i ten VC musi już zostać dezaktywowany. Aby spełnić te wymagania, oznacza to, że spełnione są następujące warunki:

Wywołanie klienta lub menedżera połączeń do NdisCoDeleteVc powoduje, że NDIS wywołuje zarówno funkcję MiniportCoDeleteVc w sterowniku miniportu, jak i funkcję ProtocolCoDeleteVc klienta lub menedżera połączeń, z którym wywoływacz współdzieli NdisVcHandle (zobacz trzy poprzednie ilustracje).

MiniportCoDeleteVc zwalnia wszelkie zasoby przydzielone dla VC oraz kontekst sterownika miniportu związany z VC. ProtocolCoDeleteVc zwalnia wszystkie zasoby wykorzystywane przez klienta lub menedżera wywołań do wykonywania operacji i śledzenia stanu VC. Zarówno funkcje MiniportCoDeleteVc, jak i ProtocolCoDeleteVc są funkcjami synchronicznymi i nie mogą zwrócić NDIS_STATUS_PENDING.

Sterownik MCM inicjuje usunięcie VC z NdisMCmDeleteVc(zobacz poniższy rysunek).

Diagram przedstawiający sterownik MCM inicjujący usunięcie VC.

Wywołanie sterownika MCM do NdisMCmDeleteVc powoduje wywołanie ProtocolCoDeleteVc funkcji klienta, z którym sterownik MCM udostępnił NdisVcHandle .

Gdy NdisCoDeleteVc lub NdisMCmDeleteVc zwraca kontrolę, NdisVcHandle nie jest już prawidłowa.