다음을 통해 공유


VC 활성화

VC(가상 연결)를 만든 후(VC만들기 참조) 데이터를 전송하거나 수신하기 전에 활성화해야 합니다. 호출 관리자는 NdisCmActivateVc호출하여 VC의 활성화를 시작합니다(다음 그림 참조).

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

MCM 드라이버는 NdisMCmActivateVc호출하여 VC의 활성화를 시작합니다(다음 그림 참조).

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

로컬 클라이언트 또는 원격 당사자가 해당 VC의 호출 매개 변수 변경을 성공적으로 협상하는 경우 호출 관리자 또는 MCM 드라이버가 활성 VC의 다시 활성화를 시작할 수 있습니다(Client-Initiated 통화 닫기 요청 및 수신 요청변경). 호출 관리자 또는 MCM 드라이버는 단일 VC에 대해 Ndis(M)CmActivateVc 여러 번 호출하여 이미 활성 호출에 대한 호출 매개 변수를 변경할 수 있습니다.

클라이언트에서 시작한 발신 호출의 경우 호출 관리자 또는 MCM 드라이버는 일반적으로 Ndis(M)CmActivateVc를 호출하고, 패킷 교환 직후에 호출의 원격 대상과 협상된 계약을 확인하거나 스위치에서 성공적인 호출 설치를 확인합니다. 호출 관리자 또는 MCM 드라이버는 Ndis(M)CmActivateVc을 호출한 후, 발신 호출 완료를 Ndis(M)CmMakeCallComplete로 NDIS(및 클라이언트)에게 알리기 전에 공지합니다 (호출 만들기 참조). 수신 호출의 경우 일반적으로 호출 관리자 또는 MCM 드라이버는 NdisCo(MCm)CreateVc 성공적으로 호출한 후 Ndis(M)CmDispatchIncomingCall호출하기 전에 Ndis(M)CmActivateVc 호출합니다(수신 호출 나타내는참조).

호출 관리자가 NdisCmActivateVc를 호출하면 NDIS가 기본 미니포트 드라이버의 MiniportCoActivateVc 함수를 호출합니다. MiniportCoActivateVc 이 VC에 대한 호출 매개 변수의 유효성을 검사하여 어댑터가 요청된 호출을 지원할 수 있는지 확인해야 합니다. 호출 매개 변수가 허용되는 경우 MiniportCoActivateVc 필요에 따라 어댑터와 통신하여 가상 연결을 통해 데이터를 받거나 전송하도록 어댑터를 준비합니다(예: 수신 버퍼 프로그래밍). 요청된 호출 매개 변수를 지원하지 못하면 미니포트 드라이버가 요청에 실패합니다.

MiniportCoActivateVc 동기 또는 비동기적으로 완료할 수 있습니다. NdisMCoActivateVcComplete 호출하면 NDIS가 호출 관리자의 ProtocolCmActivateVcComplete 함수를 호출합니다. ProtocolCmActivateVcCompleteNdisMCoActivateVcComplete 반환된 상태를 확인하여 가상 연결이 성공적으로 활성화되었는지 확인해야 합니다. 미니포트 드라이버가 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에 불투명합니다.