PCI_VIRTUALIZATION_INTERFACE 구조체(wdm.h)

PCI_VIRTUALIZATION_INTERFACE 구조를 사용하면 드라이버가 VF(가상 함수)에 대한 PCI Express(PCIe) 구성 공간을 관리하고 구성할 수 있습니다. VF는 SR-IOV(단일 루트 I/O 가상화) 인터페이스를 지원하는 디바이스에 의해 PCI 버스에 노출됩니다.

이 구조체는 GUID_PCI_VIRTUALIZATION_INTERFACE 인터페이스를 설명합니다.

구문

typedef struct _PCI_VIRTUALIZATION_INTERFACE {
  USHORT                            Size;
  USHORT                            Version;
  PVOID                             Context;
  PINTERFACE_REFERENCE              InterfaceReference;
  PINTERFACE_DEREFERENCE            InterfaceDereference;
  PSET_VIRTUAL_DEVICE_DATA          SetVirtualFunctionData;
  PGET_VIRTUAL_DEVICE_DATA          GetVirtualFunctionData;
  PGET_VIRTUAL_DEVICE_LOCATION      GetLocation;
  PGET_VIRTUAL_DEVICE_RESOURCES     GetResources;
  PENABLE_VIRTUALIZATION            EnableVirtualization;
  PGET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;
} PCI_VIRTUALIZATION_INTERFACE, *PPCI_VIRTUALIZATION_INTERFACE;

멤버

Size

이 구조체의 크기(바이트)입니다.

Version

드라이버 정의 인터페이스 버전입니다.

Context

인터페이스별 컨텍스트 정보에 대한 포인터입니다.

InterfaceReference

인터페이스의 참조 수를 증가시키는 InterfaceReference 루틴에 대한 포인터입니다.

InterfaceDereference

인터페이스의 참조 수를 감소시키는 InterfaceDereference 루틴에 대한 포인터입니다.

SetVirtualFunctionData

SR-IOV 디바이스 VF의 PCIe 구성 공간에 데이터를 쓰는 SetVirtualFunctionData 루틴에 대한 포인터입니다.

GetVirtualFunctionData

SR-IOV 디바이스 VF의 PCIe 구성 공간에서 데이터를 읽는 GetVirtualFunctionData 루틴에 대한 포인터입니다.

GetLocation

PCIe 계층 구조에서 VF의 현재 디바이스 위치에 대한 정보를 제공하는 GetLocation 루틴에 대한 포인터입니다. 이 정보는 IOMMU(I/O 메모리 관리 단위)를 사용하여 디바이스를 오가는 트래픽을 라우팅하는 가상화 시스템에 필요합니다.

GetResources

SR-IOV 디바이스에서 가상화에 사용할 수 있는 리소스에 대한 정보를 제공하는 GetResources 루틴에 대한 포인터입니다.

EnableVirtualization

SR-IOV 디바이스에서 가상화를 사용하거나 사용하지 않도록 설정하는 EnableVirtualization 루틴에 대한 포인터입니다.

GetVirtualFunctionProbedBars

권한 없는 VM(Hyper-V 가상 머신)이 PCI 버스 드라이버의 쿼리 후 VF의 PCIe 기본 주소 레지스터(BAR)에서 읽을 내용을 확인할 수 있는 GetVirtualFunctionProbedBars 루틴에 대한 포인터입니다. PCI 드라이버는 이 쿼리를 수행하여 디바이스에 필요한 메모리 또는 I/O 주소 공간을 결정합니다.

설명

SR-IOV 인터페이스를 지원하는 디바이스의 경우 드라이버가 디바이스 VF의 PCIe 구성 공간에 액세스하고 관리해야 하는 경우도 있습니다. 드라이버는 GUID_PCI_VIRTUALIZATION_INTERFACE 인터페이스에서 루틴을 호출하여 디바이스에서 VF의 PCIe 구성 공간에 액세스합니다.

디바이스의 VF는 PCI 버스에서 전체 PCIe 디바이스로 표시되지 않으므로 VF 관리에 GUID_BUS_INTERFACE_STANDARD 인터페이스를 사용할 수 없습니다.

PCI_VIRTUALIZATION_INTERFACE 구조체는 INTERFACE 구조체의 확장입니다.

드라이버는 interfaceTypeGUID_PCI_VIRTUALIZATION_INTERFACE 설정된 버스 드라이버에 IRP_MN_QUERY_INTERFACE IRP(I/O 요청 패킷)를 전송하여 PCI_VIRTUALIZATION_INTERFACE 구조체에 대한 포인터를 가져옵니다.

요구 사항

요구 사항
지원되는 최소 서버 Windows Server 2012
머리글 wdm.h(Wdm.h 포함)

추가 정보

GUID_BUS_INTERFACE_STANDARD

InterfaceDereference

InterfaceReference

IRP_MN_QUERY_INTERFACE