다음을 통해 공유


PF 미니포트 드라이버에 대한 DriverEntry 지침

이 항목에서는 PCI Express(PCIe) PF(물리적 함수)의 미니포트 드라이버에 대한 DriverEntry 함수를 작성하기 위한 지침을 설명합니다. PF는 SR-IOV(단일 루트 I/O 가상화)를 지원하는 네트워크 어댑터의 구성 요소입니다.

참고 이러한 지침은 PF 미니포트 드라이버에만 적용합니다. 어댑터의 PCIe VF(가상 함수)의 미니포트 드라이버에 대한 초기화 지침은 VF 미니포트 드라이버 초기화를 참조하세요.

SR-IOV 네트워크 어댑터는 어댑터의 실제 포트 및 내부 VPort(가상 포트)를 통해 네트워크 트래픽을 전달하는 하드웨어 브리지를 구현해야 합니다. 이 브리지를 NIC 스위치라고 합니다. 자세한 내용은 NIC 스위치를 참조하세요.

PF 미니포트 드라이버가 SR-IOV 네트워크 어댑터에서 NIC 스위치의 정적 생성을 지원하는 경우 디바이스 스택의 네트워크 어댑터에 대해 FDO(기능 디바이스 개체)를 만들 때 스위치 리소스를 할당해야 할 수 있습니다. 이 경우 드라이버는 NDIS가 MiniportInitializeEx를 호출하기 전에 해당 리소스를 할당해야 합니다. 이렇게 하려면 어댑터의 FDO가 디바이스 스택에서 추가되거나 제거될 때 프로세스에 참여할 수 있도록 드라이버에서 선택적 PnP(플러그 앤 플레이) 처리기를 등록해야 합니다.

미니포트 드라이버는 이러한 PnP 처리기 함수를 등록하기 위해 MiniportSetOptions 함수를 제공해야 합니다. 이를 위해 드라이버는 DriverEntry 함수 호출의 컨텍스트에서 다음 단계를 수행합니다.

  1. 미니포트 드라이버는 MiniportXxx 함수의 진입점을 사용하여 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 구조를 초기화합니다. 특히 드라이버는 SetOptionsHandler 멤버를 드라이버의 MiniportSetOptions 함수의 진입점으로 설정합니다.

  2. 미니포트 드라이버는 NdisMRegisterMiniportDriver 함수를 호출하여 진입점을 등록합니다. 이 호출의 컨텍스트에서 NDIS는 드라이버의 MiniportSetOptions 함수를 호출합니다 .

  3. NDIS가 MiniportSetOptions를 호출하면 미니포트 드라이버는 NdisSetOptionalHandlers 함수를 호출하고 NDIS_MINIPORT_PNP_CHARACTERISTICS 구조를 지정합니다. 이 구조체는 MiniportAddDevice, MiniportRemoveDevice, MiniportStartDeviceMiniportFilterResourceRequirements 함수의 진입점을 정의합니다. NDIS는 PCI 버스 드라이버에서 발급한 PnP I/O 요청 패킷(IRP)을 처리할 때 이러한 처리기 함수를 호출합니다.

    PF 미니포트 드라이버가 NDIS가 드라이버의 MiniportInitializeEx 함수를 호출하기 전에 NIC 스위치에 대한 추가 소프트웨어 리소스를 할당해야 하는 경우 드라이버는 MiniportAddDevice 함수를 등록해야 합니다. NDIS가 MiniportAddDevice 함수를 호출하는 경우 PF 미니포트 드라이버는 NdisReadConfiguration을 호출하여 레지스트리에서 NIC 스위치 구성 키워드(keyword) 설정을 읽을 수 있습니다. 이러한 키워드에 대한 자세한 내용은 SR-IOV에 대한 표준화된 INF 키워드를 참조하세요.

    MiniportAddDevice 함수에 대한 지침에 대한 자세한 내용은 PF 미니포트 드라이버에 대한 MiniportAddDevice 지침을 참조하세요.

NIC 스위치를 만드는 방법에 대한 자세한 내용은 NIC 스위치 만들기를 참조하세요.