OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS는 하나 이상의 구성 블록 내의 데이터가 변경되었음을 PCI Express(PCIe) VF(가상 함수)의 미니포트 드라이버에 알리기 위해 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK OID(개체 식별자) 메서드 요청을 실행합니다. NDIS는 PF(PCIe 물리적 함수)의 미니포트 드라이버가 NdisMInvalidateConfigBlock을 호출할 때 이 OID를 발급합니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 구조체에 대한 포인터를 포함합니다. 이 구조체는 PF 미니포트 드라이버에 의해 데이터가 변경(무효화)된 VF(가상 함수) 구성 블록을 하나 이상 지정합니다.

설명

VF 구성 블록은 PF와 VF 미니포트 드라이버 간의 백채널 통신에 사용됩니다. IHV는 디바이스에 대해 하나 이상의 VF 구성 블록을 정의할 수 있습니다. 각 VF 구성 블록에는 IHV 정의 형식, 길이 및 블록 ID가 있습니다.

참고 각 VF 구성 블록의 데이터는 PF 및 VF 미니포트 드라이버에서만 사용됩니다.

VF 구성 데이터는 다음 드라이버 간에 교환됩니다.

  • 게스트 운영 체제에서 실행되는 VF 드라이버입니다. 이 운영 체제는 Hyper-V 자식 파티션 내에서 실행됩니다.

  • 관리 운영 체제에서 실행되는 PF 드라이버입니다. 이 운영 체제는 Hyper-V 부모 파티션 내에서 실행됩니다.

잘못된 VF 구성 데이터의 알림을 처리하기 위해 NDIS 및 미니포트 드라이버는 다음 단계를 수행합니다.

  1. 게스트 운영 체제에서 NDIS는 IOCTL_VPCI_INVALIDATE_BLOCK 요청의 I/O 제어 요청을 실행합니다. 이 IOCTL이 완료되면 NDIS는 VF 구성 데이터가 변경되었다는 알림을 받습니다.

  2. 관리 운영 체제에서 다음 단계가 수행됩니다.

    1. PF 미니포트 드라이버는 NdisMInvalidateConfigBlock 함수를 호출하여 VF 구성 데이터가 변경되었으며 더 이상 유효하지 않음을 NDIS에 알립니다. 드라이버는 BlockMask 매개 변수를 변경된 VF 구성 블록을 지정하는 ULONGLONG 비트 마스크로 설정합니다. 비트 마스크의 각 비트는 VF 구성 블록에 해당합니다. 비트가 1로 설정된 경우 해당 VF 구성 블록의 데이터가 변경됩니다.

    2. NDIS는 관리 운영 체제에서 실행되는 가상화 스택에 VF 구성 블록 데이터 변경에 대한 신호를 보냅니다. 가상화 스택은 BlockMask 매개 변수 데이터를 캐시합니다.

      참고 PF 미니포트 드라이버가 NdisMInvalidateConfigBlock을 호출할 때마다 가상화 스택은 BlockMask 매개 변수 데이터를 캐시의 현재 값과 함께 RS합니다.

    3. 가상화 스택은 게스트 운영 체제에서 실행되는 VPCI(가상 PCI) 드라이버에 VF 구성 데이터의 무효화에 대해 알 수 있습니다. 가상화 스택은 캐시된 BlockMask 매개 변수 데이터를 VPCI 드라이버로 보냅니다.

  3. 게스트 운영 체제에서 다음 단계가 수행됩니다.

    1. VPCI 드라이버는 캐시된 BlockMask 매개 변수 데이터를 IOCTL_VPCI_INVALIDATE_BLOCK 요청과 연결된 VPCI_INVALIDATE_BLOCK_OUTPUT 구조체의 BlockMask 멤버에 저장합니다.

    2. VPCI 드라이버가 IOCTL_VPCI_INVALIDATE_BLOCK 요청을 성공적으로 완료합니다. 이 경우 NDIS는 VF 미니포트 드라이버에 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK OID 메서드 요청을 발급합니다. NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO OID 요청에 전달됩니다. 이 구조체에는 캐시된 BlockMask 매개 변수 데이터가 포함됩니다.

      또한 NDIS는 VF 구성 데이터 변경에 대한 연속 알림을 처리하기 위한 또 다른 IOCTL_VPCI_INVALIDATE_BLOCK 요청을 발행합니다.

    3. VF 드라이버가 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 요청을 처리하면 지정된 VF 구성 블록에서 데이터를 읽습니다.

단일 루트 I/O 가상화(SR-IOV) 인터페이스 내의 백채널 통신에 대한 자세한 내용은 SR-IOV PF/VF 백채널 통신을 참조하세요.

반환 상태 코드

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

상태 코드 Description

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 구조체의 멤버 중 하나 이상의 값이 잘못되었습니다.

NDIS_STATUS_INVALID_LENGTH

정보 버퍼가 너무 짧습니다. NDIS는 데이터를 설정합니다 . SET_INFORMATION. NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 구조체의 크기에 대한 NDIS_OID_REQUEST구조체 의 BytesNeeded 멤버입니다.

NDIS_STATUS_FAILURE

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

요구 사항

Version

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

헤더

Ntddndis.h(Ndis.h 포함)

추가 정보


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT