미니포트 드라이버는 네트워크 어댑터에서 NIC 스위치를 만들거나 삭제하는 동안 NdisMEnableVirtualization 함수를 호출합니다. 이 함수를 호출하여 드라이버는 네트워크 어댑터의 PF(물리적 함수)에 대한 PCI Express(PCIe) 구성 공간에서 단일 루트 I/O 가상화(SR-IOV) 확장 기능 구조를 구성합니다.
통사론
NDIS_STATUS NdisMEnableVirtualization(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] USHORT NumVFs,
[in] BOOLEAN EnableVFMigration,
[in] BOOLEAN EnableMigrationInterrupt,
[in] BOOLEAN EnableVirtualization
);
매개 변수
[in] NdisMiniportHandle
네트워크 어댑터는 NDIS가 MiniportInitializeExMiniportAdapterHandle 매개 변수에 전달한 것을 처리합니다.
[in] NumVFs
네트워크 어댑터에 사용할 VF(가상 함수) 수를 포함하는 USHORT 값입니다. NdisMEnableVirtualization SR-IOV 확장 기능 구조의 NumVFs 멤버를 NumVFs 매개 변수의 값으로 설정합니다.
[in] EnableVFMigration
이 매개 변수는 NDIS용으로 예약되어 있으며 FALSE로 설정해야 합니다.
[in] EnableMigrationInterrupt
이 매개 변수는 NDIS용으로 예약되어 있으며 FALSE로 설정해야 합니다.
[in] EnableVirtualization
네트워크 어댑터의 PCI 구성 공간에서 가상화를 사용하도록 설정할지 여부를 지정하는 BOOLEAN 값입니다. EnableVirtualization TRUE이면 NdisMEnableVirtualization SR-IOV Control 멤버의 VF 사용 비트를 설정합니다. NdisMEnableVirtualizationEnableVirtualization FALSE이면 이 비트를 지웁니다.
반환 값
NdisMEnableVirtualization 다음 상태 값 중 하나를 반환할 수 있습니다.
| 반환 코드 | 묘사 |
|---|---|
|
가상화 작업이 성공적으로 완료되었습니다. |
|
어댑터 또는 시스템은 SR-IOV를 지원하지 않습니다. |
|
EnableVirtualization 매개 변수는 FALSE로 설정되고 NumVFs 매개 변수는 0이 아닌 값으로 설정됩니다. |
|
가상화 작업이 실패했습니다.
참고NdisMEnableVirtualization 함수는 가상화가 이미 사용하도록 설정된 경우 가상화를 사용하도록 설정하기 위해 호출되면 실패합니다. 드라이버가 가상화를 다시 활성화하려면 먼저 가상화를 사용하지 않도록 설정해야 합니다(EnableVirtualization 매개 변수가 FALSE로 설정된 함수를 호출하여).
|
발언
PF 미니포트 드라이버는 NdisMEnableVirtualization 호출하여 PCI 구성 공간에서 SR-IOV 확장 기능 필드를 구성합니다. 이 호출은 구성 공간에서 가상화를 사용하거나 사용하지 않도록 설정하고 네트워크 어댑터에서 PCIe 패브릭에 노출해야 하는 VF 수를 지정하는 데 사용됩니다.
PF 미니포트 드라이버가 OID_NIC_SWITCH_CREATE_SWITCHOID 메서드 요청을 처리하는 경우 드라이버는 NdisMEnableVirtualization 호출하여 NIC 스위치에 대한 네트워크 어댑터에서 가상화를 사용하도록 설정합니다. 드라이버는 다음 매개 변수 설정을 사용하여 NdisMEnableVirtualization 호출하여 이 작업을 수행합니다.
| 학기 | 묘사 |
|---|---|
| NumVFs | NIC 스위치에 사용할 VF 수로 설정합니다. |
| EnableVirtualization | TRUE로 설정합니다. |
PF 미니포트 드라이버가 OID_NIC_SWITCH_DELETE_SWITCHOID 메서드 요청을 처리하면 드라이버는 NdisMEnableVirtualization 호출하여 네트워크 어댑터에서 가상화를 사용하지 않도록 설정합니다. 드라이버는 다음 매개 변수 설정을 사용하여 NdisMEnableVirtualization 호출하여 이 작업을 수행합니다.
| 학기 | 묘사 |
|---|---|
| NumVFs | 0으로 설정합니다. |
| EnableVirtualization | FALSE로 설정합니다. |
NIC 스위치를 만드는 방법에 대한 자세한 내용은 NIC 스위치만들기를 참조하세요.
SR-IOV 인터페이스에 대한 자세한 내용은 단일 루트 I/O 가상화(SR-IOV)개요를 참조하세요.
Virtual Bus 드라이버에 대한 상호 작용
IHV(독립 하드웨어 공급업체)가 SR-IOV 드라이버 패키지일부로 VBD(가상 버스 드라이버)를 제공하는 경우 미니포트 드라이버는 NdisMEnableVirtualization호출해서는 안 됩니다. 대신 드라이버는 프라이빗 통신 채널을 통해 VBD와 인터페이스하고 VBD 호출 EnableVirtualization요청해야 합니다. 이 함수는 기본 PCI 버스 드라이버에서 지원하는 GUID_PCI_VIRTUALIZATION_INTERFACE 인터페이스에서 제공됩니다.Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 VBD는 PCI 버스의 물리적 디바이스 개체(PDO)에 IRP_MN_QUERY_INTERFACE 요청을 실행하여 GUID_PCI_VIRTUALIZATION_INTERFACE 인터페이스를 쿼리할 수 있습니다. 이 요청은 IRQL = PASSIVE_LEVEL 만들어야 합니다. 이 요청에서 드라이버는 InterfaceType 매개 변수를 GUID_PCI_VIRTUALIZATION_INTERFACE 설정해야 합니다.
요구 사항
| 요구 | 값 |
|---|---|
| 지원되는 최소 클라이언트 | NDIS 6.30 이상에서 지원됩니다. |
| 대상 플랫폼 | 보편적 |
| 헤더 | ndis.h(Ndis.h 포함) |
| 라이브러리 | Ndis.lib |
| IRQL | PASSIVE_LEVEL |
참고 항목