가상 포트 삭제

지나치게 많은 드라이버는 네트워크 어댑터의 NIC 스위치에서 기본이 아닌 VPort(가상 포트)를 삭제하기 위해 OID_NIC_SWITCH_DELETE_VPORT OID(개체 식별자) 집합 요청을 발급합니다. 오버리싱 드라이버는 OID_NIC_SWITCH_CREATE_VPORT OID 메서드 요청을 실행하여 이전에 만든 VPort만 삭제할 수 있습니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS 구조체에 대한 포인터를 포함합니다.

가상화 스택과 같은 지나치게 많은 드라이버는 이전에 만든 기본이 아닌 VPort를 삭제할 수 있습니다. 오버리싱 드라이버는 OID_NIC_SWITCH_CREATE_VPORT OID 메서드 요청을 실행하여 VPort를 만듭니다.

OID_NIC_SWITCH_DELETE_VPORT OID 집합 요청을 발급하기 전에 오버리싱 드라이버는 다음을 수행해야 합니다.

  • 오버리싱 드라이버는 VPort를 삭제하기 전에 드라이버가 이전에 VPort에 설정한 모든 수신 필터를 지우거나 이동해야 합니다. 수신 필터는 OID_RECEIVE_FILTER_SET_FILTER OID 요청을 통해 설정되며 OID_RECEIVE_FILTER_MOVE_FILTER OID 요청을 통해 이동합니다.

  • 오버리싱 드라이버는 NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS 구조체의 VPortId 멤버를 삭제할 기본이 아닌 VPort의 식별자로 설정합니다.

    참고: 오버리싱 드라이버는 VPortId 멤버NDIS_DEFAULT_PORT_NUMBER 설정해서는 안됩니다. 이 VPort 식별자는 네트워크 어댑터의 PCI Express(PCIe) PF(물리적 함수)에 연결된 기본 VPort용으로 예약되어 있습니다. 기본 VPort는 항상 존재하며 OID_NIC_SWITCH_DELETE_VPORT OID 집합 요청을 통해 명시적으로 삭제되지 않습니다.

지나치게 많은 드라이버는 NdisOidRequest를 호출하여 기본 PF 미니포트 드라이버에 OID_NIC_SWITCH_DELETE_VPORT 요청을 실행합니다. 미니포트 드라이버가 OID_NIC_SWITCH_DELETE_VPORT 요청을 받으면 드라이버는 다음을 수행해야 합니다.

  • 드라이버는 지정된 VPort에 할당된 하드웨어 및 소프트웨어 리소스를 해제해야 합니다.

  • 드라이버는 PF 또는 PCIe VF(가상 함수)에서 지정된 VPort를 분리해야 합니다.

    VPort가 VF에 연결된 경우 가상화 스택은 게스트 운영 체제에서 실행되는 VF 미니포트 드라이버가 이전에 일시 중지되고 중지되었는지 확인합니다. 따라서 이전에 표시된 모든 VPort 수신 패킷이 VF 미니포트 드라이버로 반환되어야 합니다.

    VPort가 PF에 연결된 경우 PF 미니포트 드라이버는 VPort와 연결된 공유 메모리에 대한 추가 DMA를 중지해야 합니다. PF 미니포트 드라이버는 VPort에서 이전에 설명한 모든 수신 패킷이 미니포트로 반환되는지 확인해야 합니다. PF 미니포트 드라이버는 패킷 의 NET_BUFFER_LIST 구조에서 VPort의 식별자를 지정하는 추가 수신 표시를 NDIS에 표시해서는 안 됩니다. VPort에서 표시된 모든 수신 패킷이 PF 미니포트 드라이버로 반환되면 NdisFreeSharedMemory를 호출하여 VPort와 연결된 공유 메모리를 해제해야 합니다.

VPort 삭제에는 다음 사항이 적용됩니다.

  • 오버리싱 프로토콜 드라이버는 NdisCloseAdapterEx를 호출하기 전에 만든 기본이 아닌 모든 VPort를 삭제해야 합니다.

  • 오버리싱 필터 드라이버는 FilterDetach 함수 내에서 만든 기본이 아닌 모든 VPort를 삭제해야 합니다.

  • NDIS는 네트워크 어댑터에서 NIC 스위치를 삭제하기 위해 OID_NIC_SWITCH_DELETE_SWITCH 집합 요청을 실행하기 전에 해당 스위치에서 기본이 아닌 모든 VPort가 삭제되도록 보장합니다.

  • 기본이 아닌 VPort만 OID_NIC_SWITCH_DELETE_SWITCH OID 요청을 통해 명시적으로 삭제할 수 있습니다. PF 미니포트 드라이버가 기본 NIC 스위치를 삭제하면 기본 VPort가 암시적으로 삭제됩니다. 자세한 내용은 NIC 스위치 삭제를 참조 하세요.