OID_SRIOV_WRITE_VF_CONFIG_SPACE
지나치게 많은 드라이버가 네트워크 어댑터의 지정된 PCIe VF(가상 함수)에 대한 PCI Express(PCIe) 구성 공간에 데이터를 쓰도록 OID_SRIOV_WRITE_VF_CONFIG_SPACE OID(개체 식별자) 집합 요청을 실행합니다.
오버리싱 드라이버는 네트워크 어댑터의 PCIe PF(물리적 함수)에 대한 미니포트 드라이버에 이 OID 집합 요청을 실행합니다. 이 OID 메서드 요청은 단일 루트 I/O 가상화(SR-IOV) 인터페이스를 지원하는 PF 미니포트 드라이버에 필요합니다.
NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 호출자가 할당한 버퍼에 대한 포인터가 포함됩니다. 이 버퍼는 다음을 포함하도록 형식이 지정됩니다.
VF의 PCI 구성 공간에 대한 쓰기 작업에 대한 매개 변수를 포함하는 NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 구조체입니다.
PCI 구성 공간에 쓸 데이터를 포함하는 추가 버퍼 공간입니다.
설명
VF 미니포트 드라이버는 Hyper-V 자식 파티션의 게스트 운영 체제에서 실행됩니다. 이 때문에 VF 미니포트 드라이버는 VF의 PCI 구성 공간과 같은 하드웨어 리소스에 직접 액세스할 수 없습니다. Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 PF 미니포트 드라이버만 VF의 PCI 구성 공간에 액세스할 수 있습니다.
가상화 스택과 같은 오버라이징 드라이버는 VF 미니포트 드라이버가 NdisMSetBusData 를 호출하여 PCI 구성 공간에 쓸 때 OID_SRIOV_WRITE_VF_CONFIG_SPACE OID 집합 요청을 발급합니다.
OID_SRIOV_WRITE_VF_CONFIG_SPACE OID 메서드 요청을 처리하는 경우 PF 미니포트 드라이버는 다음 지침을 따라야 합니다.
PF 미니포트 드라이버는 NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 구조체의 VFId 멤버로 지정된 VF에 이전에 할당된 리소스가 있는지 확인해야 합니다. PF 미니포트 드라이버는 OID_NIC_SWITCH_ALLOCATE_VF OID 메서드 요청을 통해 VF에 대한 리소스를 할당합니다.
지정된 VF에 대한 리소스가 할당되지 않은 경우 드라이버는 OID 요청에 실패해야 합니다.
PF 미니포트 드라이버는 NdisMSetVirtualFunctionBusData 를 호출하여 요청된 PCI 구성 공간에 씁니다. 그러나 PF 미니포트 드라이버는 PCI 구성 공간의 이전 읽기 또는 쓰기 작업에서 드라이버가 캐시한 VF에 대한 PCI 구성 공간 데이터를 반환할 수도 있습니다.
참고 IHV(독립 하드웨어 공급업체)가 SR-IOV 드라이버 패키지의 일부로 VBD(가상 버스 드라이버)를 제공하는 경우 PF 미니포트 드라이버는 NdisMSetVirtualFunctionBusData를 호출해서는 안 됩니다. 대신 드라이버는 프라이빗 통신 채널을 통해 VBD와 인터페이스하고 VBD가 SetVirtualFunctionData를 호출하도록 요청해야 합니다. 이 함수는 기본 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_WRITE_VF_CONFIG_SPACE OID 집합 요청에 대해 다음 상태 코드 중 하나를 반환합니다.
상태 코드 | Description |
---|---|
NDIS_STATUS_SUCCESS |
OID 요청이 성공적으로 완료되었습니다. |
NDIS_STATUS_NOT_SUPPORTED |
PF 미니포트 드라이버는 단일 루트 I/O 가상화(SR-IOV) 인터페이스를 지원하지 않거나 인터페이스를 사용할 수 없습니다. |
NDIS_STATUS_INVALID_PARAMETER |
NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 구조체의 멤버 중 하나 이상에 잘못된 값이 있습니다. |
NDIS_STATUS_INVALID_LENGTH |
정보 버퍼가 너무 짧습니다. NDIS는 데이터를 설정합니다 . SET_INFORMATION. 필요한 최소 버퍼 크기에 대한 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버입니다. |
NDIS_STATUS_FAILURE |
다른 이유로 인해 요청이 실패했습니다. |
요구 사항
Version |
NDIS 6.30 이상에서 지원됩니다. |
헤더 |
Ntddndis.h(Ndis.h 포함) |
추가 정보
NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS
NdisMSetVirtualFunctionBusData