다음을 통해 공유


OID_SRIOV_PROBED_BARS

NDIS는 네트워크 어댑터의 PCI Express(PCIe) BAR(기본 주소 레지스터)의 값을 얻기 위해 OID_SRIOV_PROBED_BARS OID(개체 식별자) 쿼리 요청을 발급합니다. 이 함수는 PCI 버스 드라이버에서 수행한 쿼리에 따라 네트워크 어댑터에서 보고한 BAR 값을 반환합니다. 이 쿼리는 네트워크 어댑터에 필요한 메모리 또는 I/O 주소 공간을 결정합니다.

NDIS는 네트워크 어댑터의 PCIe 물리적 함수(PF)에 대한 미니포트 드라이버에 대한 OID_SRIOV_PROBED_BARS OID 쿼리 요청을 실행합니다. 이 OID 쿼리 요청은 단일 루트 I/O 가상화(SR-IOV) 인터페이스를 지원하는 PF 미니포트 드라이버에 필요합니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 버퍼에 대한 포인터를 포함합니다. 이 버퍼는 다음을 포함하도록 형식이 지정됩니다.

  • 네트워크 어댑터의 PCI BAR에 대한 읽기 작업에 대한 매개 변수를 포함하는 NDIS_SRIOV_PROBED_BARS_INFO 구조체입니다.

  • PCIe 네트워크 어댑터의 각 BAR에 대한 ULONG 값 배열입니다. 이 배열 내의 최대 요소 수는 PCI_TYPE0_ADDRESSES.

설명

Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 PCI 버스 드라이버는 네트워크 어댑터의 각 PCI BAR(기본 주소 등록)의 메모리 또는 I/O 주소 공간 요구 사항을 쿼리합니다. PCI 버스 드라이버는 버스에서 어댑터를 처음 검색할 때 이 쿼리를 수행합니다.

이 PCI BAR 쿼리를 통해 PCI 버스 드라이버는 다음을 결정합니다.

  • 네트워크 어댑터에서 PCI BAR를 지원하는지 여부입니다.

  • BAR가 지원되는 경우 BAR에 필요한 메모리 또는 I/O 주소 공간의 양입니다.

VPCI(가상 PCI) 버스 드라이버는 Hyper-V 자식 파티션의 게스트 운영 체제에서 실행됩니다. PCI Express(PCIe) VF(가상 함수)가 자식 파티션에 연결되면 VPCI 버스 드라이버는 VF(VF 네트워크 어댑터)에 대한 가상 네트워크 어댑터를 노출합니다. 이 작업을 수행하기 전에 VPCI 버스 드라이버는 PCI BAR 쿼리를 수행하여 VF 네트워크 어댑터에 필요한 필요한 메모리 또는 주소 공간을 확인해야 합니다.

PCI 구성 공간에 대한 액세스는 권한 있는 작업이므로 Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 구성 요소에서만 수행할 수 있습니다. VPCI 버스 드라이버가 PCI BAR을 쿼리할 때 NDIS는 PF 미니포트 드라이버에 OID_SRIOV_PROBED_BARS OID 쿼리 요청을 실행합니다. 이 OID 쿼리 요청에서 반환된 결과는 VPCI 버스 드라이버로 전달되므로 VF 네트워크 어댑터에 필요한 메모리 주소 공간을 확인할 수 있습니다.

참고 OID_SRIOV_PROBED_BARS OID 요청은 NDIS에서만 발급할 수 있습니다. OID 요청은 필터 드라이버의 프로토콜과 같은 지나치게 많은 드라이버에 의해 실행되어서는 안 됩니다.

OID_SRIOV_PROBED_BARS 쿼리 요청에는 NDIS_SRIOV_PROBED_BARS_INFO 구조가 포함됩니다. PF 미니포트 드라이버가 이 OID를 처리하는 경우 드라이버는 NDIS_SRIOV_PROBED_BARS_INFO 구조체의 BaseRegisterValuesOffset 멤버가 참조하는 배열 내에서 PCI BAR 값을 반환해야 합니다. 배열 내의 각 오프셋에 대해 PF 미니포트 드라이버는 배열 요소를 실제 어댑터의 PCI 구성 공간 내에서 동일한 오프셋에 있는 BAR의 ULONG 값으로 설정해야 합니다.

드라이버에서 반환하는 각 BAR 값은 관리 운영 체제에서 실행되는 PCI 드라이버에서 수행한 것과 PCI BAR 쿼리를 따르는 값과 동일해야 합니다. PF 미니포트 드라이버는 NdisMQueryProbedBars를 호출하여 이 정보를 확인할 수 있습니다.

PCI 디바이스의 BAR에 대한 자세한 내용은 PCI 로컬 버스 사양을 참조하세요.

VF에 대한 PCI BAR 레지스터를 쿼리하는 방법에 대한 자세한 내용은 가상 함수의 PCI 기본 주소 레지스터 쿼리를 참조하세요.

반환 상태 코드

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

상태 코드 Description

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

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

NDIS_STATUS_INVALID_LENGTH

정보 버퍼가 (sizeof(NDIS_SRIOV_PROBED_BARS_INFO) + PCI_TYPE0_ADDRESSES)보다 작습니다. PF 미니포트 드라이버는 데이터를 설정해야 합니다 . QUERY_INFORMATION. 필요한 최소 버퍼 크기에 대한 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버입니다.

NDIS_STATUS_FAILURE

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

요구 사항

Version

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

헤더

Ntddndis.h(Ndis.h 포함)

추가 정보


NDIS_OID_REQUEST

NDIS_SRIOV_PROBED_BARS_INFO

NdisMQueryProbedBars