Share via


OID_SRIOV_READ_VF_CONFIG_SPACE

오버리싱 드라이버는 네트워크 어댑터의 지정된 PCIe VF(가상 함수)에 대한 PCI Express(PCIe) 구성 공간에서 데이터를 읽기 위해 OID_SRIOV_READ_VF_CONFIG_SPACE OID(개체 식별자) 메서드 요청을 실행합니다.

이 OID 메서드 요청에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 호출자가 할당한 버퍼에 대한 포인터가 포함됩니다. 이 버퍼는 다음을 포함하도록 형식이 지정됩니다.

  • VF의 PCI 구성 공간 읽기 작업에 대한 매개 변수를 포함하는 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 구조체입니다.

  • PCI 구성 공간에서 데이터를 읽을 수 있는 추가 버퍼 공간입니다.

설명

VF 미니포트 드라이버는 Hyper-V 자식 파티션의 게스트 운영 체제에서 실행됩니다. 이 때문에 VF 미니포트 드라이버는 VF의 PCI 구성 공간과 같은 하드웨어 리소스에 직접 액세스할 수 없습니다. PCIe PF(물리적 함수)의 미니포트 드라이버만 VF의 PCI 구성 공간에 액세스할 수 있습니다. PF 미니포트 드라이버는 Hyper-V 부모 파티션의 관리 운영 체제에서 실행되며 VF 리소스에 대한 권한 있는 액세스 권한이 있습니다.

VF PCI 구성 공간을 읽기 위해 관리 운영 체제에서 실행되는 오버리 드라이버가 PF 미니포트 드라이버에 OID_SRIOV_READ_VF_CONFIG_SPACE OID 메서드 요청을 실행합니다. 이 OID 메서드 요청은 단일 루트 I/O 가상화(SR-IOV) 인터페이스를 지원하는 PF 미니포트 드라이버에 필요합니다.

예를 들어 관리 운영 체제에서 실행되는 가상화 스택은 VF 미니포트 드라이버가 NdisMGetBusData 를 호출하여 VF PCI 구성 공간에서 읽을 때 OID_SRIOV_READ_VF_CONFIG_SPACE OID 메서드 요청을 실행합니다.

OID_SRIOV_READ_VF_CONFIG_SPACE OID 메서드 요청을 처리하는 경우 PF 미니포트 드라이버는 다음 지침을 따라야 합니다.

  • 미니포트 드라이버는 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 구조체의 VFId 멤버로 지정된 VF에 이전에 할당된 리소스가 있는지 확인해야 합니다. 미니포트 드라이버는 OID_NIC_SWITCH_ALLOCATE_VF OID 메서드 요청을 통해 VF에 대한 리소스를 할당합니다. 지정된 VF에 대한 리소스가 할당되지 않은 경우 드라이버는 OID 요청에 실패해야 합니다.

  • 미니포트 드라이버는 요청된 PCIe 구성 공간 데이터를 반환할 수 있을 만큼 버퍼(NDIS_OID_REQUEST 구조의 InformationBuffer 멤버가 참조)가 큰지 확인해야 합니다. 그렇지 않은 경우 드라이버는 OID 요청에 실패해야 합니다.

  • 미니포트 드라이버는 일반적으로 NdisMGetVirtualFunctionBusData 를 호출하여 요청된 PCIe 구성 공간을 쿼리합니다. 그러나 미니포트 드라이버는 PCIe 구성 공간의 이전 읽기 또는 쓰기 작업에서 드라이버가 캐시한 VF에 대한 PCIe 구성 공간 데이터를 반환할 수도 있습니다.

    참고 IHV(독립 하드웨어 공급업체)가 SR-IOV 드라이버 패키지의 일부로 VBD(가상 버스 드라이버)를 제공하는 경우 미니포트 드라이버는 NdisMGetVirtualFunctionBusData를 호출해서는 안 됩니다. 대신 드라이버는 프라이빗 통신 채널을 통해 VBD와 인터페이스하고 VBD가 ReadVfConfigBlock을 호출하도록 요청해야 합니다. 이 함수는 기본 VPCI(가상 PCI) 버스 드라이버에서 지원하는 GUID_VPCI_INTERFACE_STANDARD 인터페이스에서 노출됩니다.

PF 미니포트 드라이버가 OID 요청을 성공적으로 완료할 수 있는 경우 드라이버는 요청된 PCI 구성 공간 데이터를 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버가 참조하는 버퍼에 복사해야 합니다. 드라이버는 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 구조체의 BufferOffset 멤버가 지정한 오프셋의 버퍼에 데이터를 복사합니다.

자세한 내용은 가상 함수의 PCI 구성 데이터 쿼리를 참조하세요.

반환 상태 코드

PF 미니포트 드라이버는 OID_SRIOV_READ_VF_CONFIG_SPACE OID 메서드 요청에 대해 다음 상태 코드 중 하나를 반환합니다.

상태 코드 Description

NDIS_STATUS_SUCCESS

OID 요청이 성공적으로 완료되었습니다.

NDIS_STATUS_NOT_SUPPORTED

미니포트 드라이버는 단일 루트 I/O 가상화(SR-IOV) 인터페이스를 지원하지 않거나 인터페이스를 사용할 수 없습니다.

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 구조체의 멤버 중 하나 이상에 잘못된 값이 있습니다.

NDIS_STATUS_INVALID_LENGTH

정보 버퍼가 너무 짧습니다. 미니포트 드라이버는 데이터를 설정해야 합니다 . METHOD_INFORMATION. 필요한 최소 버퍼 크기에 대한 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버입니다.

NDIS_STATUS_FAILURE

다른 이유로 인해 요청이 실패했습니다.

요구 사항

Version

NDIS 6.30 이상에서 지원됩니다.

헤더

Ntddndis.h(Ndis.h 포함)

추가 정보


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock