다음을 통해 공유


VC 만들기

나가는 호출을 하기 전에 연결 지향 클라이언트는 VC(가상 연결) 만들기를 시작합니다. 연결 지향 클라이언트에 대한 수신 호출을 나타내기 전에 호출 관리자 또는 MCM 드라이버가 VC 만들기를 시작합니다. VC가 설정되고 활성화된 후에는 VC에서 클라이언트 데이터를 전송하거나 받을 수 있습니다.

호출 관리자 또는 MCM 드라이버는 네트워크 스위치와 같은 네트워크 구성 요소와 신호 메시지를 교환하는 VC 만들기를 시작할 수도 있습니다.

Client-Initiated VC 만들기

NdisClMakeCall을 사용하여 호출하기 전에 연결 지향 클라이언트는 NdisCoCreateVc를 호출하여 VC 만들기를 시작합니다.

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

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

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

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

호출 관리자의 연결 지향 클라이언트가 NdisCoCreateVc를 호출하는 경우 NDIS는 동기 작업, 호출 관리자의 ProtocolCoCreateVc 함수 및 기본 미니포트 드라이버의 MiniportCoCreateVc 함수를 호출합니다(이 항목의 첫 번째 그림 참조). NDIS는 VC를 나타내는 NdisVcHandleProtocolCoCreateVcMiniportCoCreateVc에 전달합니다. NdisCoCreateVc 호출에 성공하면 NDIS는 NdisVcHandleNdisCoCreateVc로 반환합니다.

ProtocolCoCreateVc 는 호출 관리자가 활성화될 VC에서 후속 작업을 수행하는 데 필요한 동적 리소스 및 구조를 할당하고 초기화합니다. MiniportCoCreateVc 는 미니포트 드라이버가 VC에 대한 상태 정보를 유지하는 데 필요한 모든 리소스를 할당하고 초기화합니다. ProtocolCoCreateVcMiniportCoCreateVc모두 NdisVcHandle 을 저장합니다.

MCM 드라이버의 연결 지향 클라이언트인 경우 NdisCoCreateVc 를 호출하면 NDIS가 MCM 드라이버의 ProtocolCoCreateVc 함수를 호출합니다(Client-Initiated VC 만들기(MCM 드라이버 존재 참조). 이 경우 ProtocolCoCreateVc 는 VC에 필요한 리소스 할당 및 초기화를 수행합니다. MCM 드라이버가 이러한 함수를 제공하지 않으므로 MiniportCoCreateVc에 대한 호출(내부 또는 기타)은 없습니다.

호출 Manager-Initiated VC 만들기

NdisCmDispatchIncomingCall을 사용하여 연결 지향 클라이언트에 대한 수신 호출을 나타내기 전에 호출 관리자는 NdisCoCreateVc를 호출하여 VC 만들기를 시작합니다(다음 그림 참조).

VC 만들기를 시작하는 호출 관리자를 보여 주는 다이어그램

호출 관리자가 NdisCoCreateVc를 호출할 때 NDIS는 동기 작업으로 호출하고, 호출이 수신되는 SAP를 등록한 연결 지향 클라이언트의 ProtocolCoCreateVc 함수와 기본 미니포트의 MiniportCoCreateVc 함수를 호출합니다. NDIS는 VC를 나타내는 NdisVcHandleProtocolCoCreateVcMiniportCoCreateVc에 전달합니다. NdisCoCreateVc 호출에 성공하면 NDIS는 NdisVcHandleNdisCoCreateVc로 반환합니다.

MCM Driver-Initiated VC 만들기

NdisMCmDispatchIncomingCall을 사용하여 연결 지향 클라이언트에 대한 수신 호출을 나타내기 전에 MCM 드라이버는 NdisMCmCreateVc를 호출하여 VC 만들기를 시작합니다(다음 그림 참조).

VC 만들기를 시작하는 MCM 드라이버를 보여 주는 다이어그램

MCM 드라이버가 NdisMCmCreateVc를 호출하면 NDIS는 NdisMCmCreateVc 가 반환되기 전에 동기 작업으로 를 호출하며, 호출이 수신되는 SAP를 등록한 연결 지향 클라이언트의 ProtocolCoCreateVc 함수입니다. NDIS는 VC를 나타내는 NdisVcHandleProtocolCoCreateVc에 전달합니다. NdisMCmCreateVc 호출에 성공하면 NDIS는 NdisVcHandleNdisMCmCreateVc로 반환합니다.

ProtocolCoCreateVc 는 클라이언트가 VC에서 후속 작업을 수행하는 데 필요한 동적 리소스 및 구조를 할당하고 초기화합니다. ProtocolCoCreateVcNdisVcHandle 도 저장합니다.

MCM 드라이버가 네트워크 구성 요소와 신호 메시지를 교환하기 위한 VC를 만드는 경우 NdisXxx 호출을 사용하여 VC를 만들지 않습니다. 실제로 MCM 드라이버는 NdisXxx 호출을 사용하여 이러한 VC를 생성, 활성화, 비활성화 또는 삭제하지 않습니다. 대신 MCM 드라이버는 내부적으로 이러한 작업을 수행합니다. 따라서 이러한 VC는 NDIS에 불투명합니다.