GET_VIRTUAL_DEVICE_LOCATION 콜백 함수(wdm.h)

GetLocation 루틴은 PCI 버스에서 PCI Express(PCIe) VF(가상 함수)의 디바이스 위치를 반환합니다. SR-IOV(단일 루트 I/O 가상화) 인터페이스를 지원하는 디바이스는 PCI 버스에 하나 이상의 VF를 노출할 수 있습니다.

구문

GET_VIRTUAL_DEVICE_LOCATION GetVirtualDeviceLocation;

NTSTATUS GetVirtualDeviceLocation(
  [in, out] PVOID Context,
  [in]      USHORT VirtualFunction,
  [out]     PUINT16 SegmentNumber,
  [out]     PUINT8 BusNumber,
  [out]     PUINT8 FunctionNumber
)
{...}

매개 변수

[in, out] Context

인터페이스별 컨텍스트 정보에 대한 포인터입니다. 호출자는 인터페이스에 대한 PCI_VIRTUALIZATION_INTERFACE 구조체의 컨텍스트 멤버로 전달되는 값을 전달합니다.

[in] VirtualFunction

디바이스 위치가 반환되는 디바이스의 VF를 지정하는 0부터 시작하는 값입니다.

[out] SegmentNumber

이 루틴이 현재 PCI 세그먼트 번호에 대한 UINT16 값을 반환하는 호출자 제공 변수에 대한 포인터입니다. 이 값은 디바이스가 연결된 PCI 버스 그룹을 지정합니다.

[out] BusNumber

이 루틴이 UINT8 값을 반환하는 호출자 제공 변수에 대한 포인터입니다. 이 값은 디바이스가 연결된 현재 PCI 버스 번호를 지정합니다.

[out] FunctionNumber

이 루틴이 UINT8 값을 반환하는 호출자 제공 변수에 대한 포인터입니다. 이 값에는 PCI 버스에서 지정된 VF에 대한 함수 번호가 포함됩니다.

반환 값

GetLocation 루틴은 다음 NTSTATUS 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS 작업이 성공적으로 완료되었습니다.
STATUS_INVALID_PARAMETER VirtualFunction 매개 변수는 디바이스에 대한 SR-IOV 확장 기능 구조의 TotalVFs 멤버 값보다 큽니다.

설명

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

GetLocation 루틴에 대한 호출에서 성공적으로 반환되면 FunctionNumber 매개 변수에는 PCI 버스에서 지정된 VF의 함수 번호를 나타내는 값이 포함됩니다. 이 값은 PCI Express 3.0 사양의 ARI(대체 라우팅 해석) 옵션을 기반으로 합니다. ARI는 PCIe 버스를 8비트 함수 공간이 있는 단일 디바이스로 처리하므로 버스에서 256개의 기능을 사용할 수 있습니다.

GetLocation 루틴은 GUID_PCI_VIRTUALIZATION_INTERFACE 인터페이스에서 제공됩니다.

VF가 있는 PCI 버스 번호는 변경할 수 있습니다. 드라이버는 레지스트리와 같은 비휘발성 스토리지에 VF의 디바이스 위치를 저장하지 않는 것이 좋습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012 이상 버전의 Windows Server에서 지원됩니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

PCI_VIRTUALIZATION_INTERFACE