다음을 통해 공유


VC 삭제

VC(가상 회로) 만들기를 시작한 연결 지향 클라이언트, 호출 관리자 또는 MCM 드라이버만 해당 VC의 삭제를 시작할 수 있습니다. 따라서 클라이언트는 이전에 나가는 호출을 위해 만든 VC를 삭제하고, 호출 관리자 또는 MCM 드라이버는 네트워크를 통해 들어오는 호출을 위해 이전에 만든 VC를 삭제하고, 호출 관리자는 네트워크를 통해 신호 메시지를 교환하기 위해 이전에 만든 VC를 삭제합니다. (MCM 드라이버는 신호 메시지를 교환하기 위해 만든 VC를 삭제하기 위해 NDIS를 호출하지 않습니다. MCM 드라이버는 NDIS에 불투명한 내부 작업을 사용하여 이러한 VC를 삭제합니다.)

연결 지향 클라이언트 또는 호출 관리자는 NdisCoDeleteVc를 사용하여 VC 삭제를 시작합니다.

다음 그림에서는 VC 삭제를 시작하는 호출 관리자의 클라이언트를 보여줍니다.

VC 삭제를 시작하는 호출 관리자의 클라이언트를 보여 주는 다이어그램

다음 그림에서는 VC 삭제를 시작하는 MCM 드라이버의 클라이언트를 보여줍니다.

VC 삭제를 시작하는 MCM 드라이버의 클라이언트를 보여 주는 다이어그램

다음 그림에서는 VC 삭제를 시작하는 호출 관리자를 보여줍니다.

VC 삭제를 시작하는 호출 관리자를 보여 주는 다이어그램

클라이언트 또는 호출 관리자가 NdisCoDeleteVc 를 호출하거나 MCM 드라이버가 NdisMCmDeleteVc를 호출할 때 지정된 VC에 대한 미해결 호출이 없어야 하며 해당 VC가 이미 비활성화되어 있어야 합니다. 이러한 요구 사항을 충족하려면 다음 조건이 충족됨을 의미합니다.

클라이언트 또는 호출 관리자가 NdisCoDeleteVc를 호출하면 NDIS가 기본 미니포트 드라이버의 MiniportCoDeleteVc 함수와 클라이언트 또는 호출자가 NdisVcHandle을 공유하는 호출 관리자의 ProtocolCoDeleteVc 함수를 모두 호출합니다(위의 세 가지 그림 참조).

MiniportCoDeleteVc 는 VC에 할당된 모든 리소스와 VC에 대한 미니포트 드라이버의 컨텍스트를 해제합니다. ProtocolCoDeleteVc 는 클라이언트 또는 호출 관리자가 VC에 대한 작업을 수행하고 상태를 추적하는 데 사용한 모든 리소스를 해제합니다. MiniportCoDeleteVcProtocolCoDeleteVc는 모두 NDIS_STATUS_PENDING 반환할 수 없는 동기 함수입니다.

MCM 드라이버는 NdisMCmDeleteVc를 사용하여 VC 삭제를 시작합니다(다음 그림 참조).

VC 삭제를 시작하는 MCM 드라이버를 보여 주는 다이어그램

MCM 드라이버가 NdisMCmDeleteVc를 호출하면 NDIS가 MCM 드라이버가 NdisVcHandle 을 공유한 클라이언트의 ProtocolCoDeleteVc 함수를 호출합니다.

NdisCoDeleteVc 또는 NdisMCmDeleteVc가 컨트롤을 반환하면 NdisVcHandle이 더 이상 유효하지 않습니다.