VC 활성화
VC(가상 연결)를 만든 후( VC 만들기 참조) 데이터를 전송하거나 수신하기 전에 활성화해야 합니다. 호출 관리자는 NdisCmActivateVc를 호출하여 VC의 활성화를 시작합니다(다음 그림 참조).
MCM 드라이버는 NdisMCmActivateVc를 호출하여 VC의 활성화를 시작합니다(다음 그림 참조).
로컬 클라이언트 또는 원격 당사자가 해당 VC에서 호출 매개 변수 변경을 성공적으로 협상하는 경우 호출 관리자 또는 MCM 드라이버가 활성 VC의 다시 활성화를 시작할 수 있습니다( 클라이언트가 시작한 통화 닫기 요청 및 호출 매개 변수 변경을 위한 수신 요청 참조). 호출 관리자 또는 MCM 드라이버는 단일 VC에 대해 Ndis(M)CmActivateVc 를 여러 번 호출하여 이미 활성 호출에 대한 호출 매개 변수를 변경할 수 있습니다.
클라이언트에서 시작한 발신 통화의 경우 통화 관리자 또는 MCM 드라이버는 일반적으로 패킷 교환 직후 Ndis(M)CmActivateVc 를 호출하여 통화의 원격 대상과 협상된 계약을 확인하거나 스위치에서 성공적인 호출 설정을 확인합니다. 호출 관리자 또는 MCM 드라이버는 Ndis(M)CmActivateVc 를 호출한 후 NDIS(및 클라이언트)에게 Ndis(M)CmMakeCallComplete를 사용하여 발신 호출 완료를 알린 후( 통화 만들기 참조) 수신 호출의 경우 호출 관리자 또는 MCM 드라이버는 일반적으로 NdisCo(MCm)CreateVc를 성공적으로 호출한 후 Ndis(M)CmDispatchIncomingCall을 호출하기 전에 Ndis(M)CmActivateVc를 호출합니다(수신 전화 표시 참조).
NdisCmActivateVc에 대한 호출 관리자의 호출로 인해 NDIS는 기본 미니포트 드라이버의 MiniportCoActivateVc 함수를 호출합니다. MiniportCoActivateVc 는 어댑터가 요청된 호출을 지원할 수 있는지 확인하기 위해 이 VC에 대한 호출 매개 변수의 유효성을 검사해야 합니다. 호출 매개 변수가 허용되는 경우 MiniportCoActivateVc 는 어댑터가 가상 연결을 통해 데이터를 받거나 전송하도록 준비하기 위해 필요에 따라 어댑터와 통신합니다(예: 수신 버퍼 프로그래밍). 요청된 호출 매개 변수를 지원하지 못하면 미니포트 드라이버가 요청에 실패합니다.
MiniportCoActivateVc 는 동기적으로 또는 비동기적으로 완료할 수 있습니다. NdisMCoActivateVcComplete를 호출하면 NDIS가 호출 관리자의 ProtocolCmActivateVcComplete 함수를 호출합니다. ProtocolCmActivateVcComplete는 가상 연결이 성공적으로 활성화되었는지 확인하기 위해 NdisMCoActivateVcComplete에서 반환된 상태 검사 합니다. 미니포트 드라이버가 VC를 성공적으로 활성화하지 못한 경우 호출 관리자는 VC를 통해 통신을 시도해서는 안됩니다. ProtocolCmActivateVcComplete 는 제어를 NDIS로 반환하기 전에 가상 연결이 데이터 전송에 대해 준비되었는지 확인하기 위해 네트워크 미디어에 필요한 모든 처리를 완료해야 합니다.
MCM 드라이버가 NdisMCmActivateVc를 호출하면 새로 만든 VC에서 호출 및 미디어 매개 변수를 설정했거나 설정된 VC에서 호출 매개 변수를 변경했음을 NDIS에 알릴 수 있습니다. 이 작업은 MCM 드라이버가 VC에서 NIC를 전송할 준비가 되었음을 NDIS에 알린 것입니다. NDIS는 MCM 드라이버의 ProtocolCmActivateVcComplete 함수를 호출하여 활성화 시퀀스를 완료합니다.
MCM 드라이버는 NdisMCmActivateVc 를 호출하여 클라이언트 데이터를 전송 및/또는 수신하는 데 사용되는 VC만 활성화하지만 MCM 드라이버와 스위치와 같은 네트워크 구성 요소 간에 신호 메시지를 교환하는 데 사용되는 VC를 활성화하지는 않습니다. MCM 드라이버는 NdisXxx 함수를 호출하지 않고 내부적으로 신호 VC를 활성화합니다. 따라서 MCM 드라이버가 자체 신호 전송을 위해 설정하는 모든 VC는 NDIS에 불투명합니다.