다음을 통해 공유


VC 비활성화

호출 관리자는 NdisCmDeactivateVc를 호출하여 나가거나 들어오는 호출을 닫는 데 필수적인 단계로 사용하며, 이는 일반적으로 패킷이 네트워크 구성 요소와 교환되어 호출을 종료한 후 수행됩니다(Client-Initiated Request to Close a CallIncoming Request to Close a Call 참조). MCM 드라이버는 NdisMCmDeactivateVc호출하여 동일한 작업을 수행합니다.

NdisCmDeactivateVc 호출하면 NDIS가 기본 미니포트 드라이버의 MiniportCoDeactivateVc 함수를 호출합니다(다음 그림 참조). MiniportCoDeactivateVc 네트워크 어댑터와 통신하여 이 VC에서 모든 통신을 종료합니다(예: 어댑터에서 수신 또는 송신 버퍼 지우기).

VC 비활성화를 시작하는 호출 관리자를 보여 주는 다이어그램

VC를 비활성화하기 전에 미니포트 드라이버는 VC에서 보류 중인 전송을 완료해야 합니다. 즉, 미니포트 드라이버는 진행 중인 모든 전송을 완료하고 표시된 모든 수신 패킷이 반환될 때까지 기다려야 합니다. VC를 비활성화한 후 미니포트 드라이버는 VC에서 송신을 받거나 전송하는 것을 나타낼 수 없습니다.

참고로 MiniportCoDeactivateVc는 VC를 삭제하지 않습니다. 다시 사용되지 않을 특정 VC의 작성자(클라이언트, 호출 관리자 또는 MCM 드라이버)는 해당 VC 삭제하기 위해 NdisCoDeleteVc호출합니다. 비활성화된 VC는 연결 지향 클라이언트, 호출 관리자 또는 MCM 드라이버에 의해 다시 활성화 할 수 있습니다.

MiniportCoDeactivateVc 동기 또는 비동기적으로 완료할 수 있습니다. NdisMCoDeactivateVcComplete에 대한 호출입니다. 는 NDIS가 원래 VC 비활성화를 요청한 호출 관리자의 ProtocolCmDeactivateVcComplete 함수를 호출하도록 합니다. 비활성화가 완료되면 활성화에 사용되는 VC에 대한 모든 호출 매개 변수가 더 이상 유효하지 않습니다. VC의 추가 사용은 새 호출 매개 변수 집합으로 다시 활성화하는 것을 제외하고는 금지됩니다.

MCM 드라이버가 NdisMCmDeactivateVc 호출하면 NDIS가 VC를 비활성화했거나 설정된 VC에서 호출 매개 변수를 변경했음을 알 수 있습니다(다음 그림 참조). NDIS는 MCM 드라이버의 ProtocolCmDeactivateVcComplete 함수를 호출하여 비활성화 시퀀스를 완료합니다.

VC 비활성화를 시작하는 MCM 드라이버를 보여 주는 다이어그램

MCM 드라이버는 NdisMCmDeactivateVc 호출하여 MCM 드라이버와 스위치와 같은 네트워크 구성 요소 간에 신호 메시지를 교환하는 데 사용되는 VC를 비활성화하지 않습니다. MCM 드라이버는 NdisXxx 함수를 호출하지 않고 내부적으로 신호 VC를 비활성화합니다.