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 |