NdisMEnableVirtualization 함수(ndis.h)
미니포트 드라이버는 네트워크 어댑터에서 NIC 스위치를 만들거나 삭제하는 동안 NdisMEnableVirtualization 함수를 호출합니다. 이 함수를 호출하면 드라이버는 네트워크 어댑터의 PF(물리적 함수)에 대한 PCI Express(PCIe) 구성 공간에서 SR-IOV(단일 루트 I/O 가상화) 확장 기능 구조를 구성합니다.
구문
NDIS_STATUS NdisMEnableVirtualization(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] USHORT NumVFs,
[in] BOOLEAN EnableVFMigration,
[in] BOOLEAN EnableMigrationInterrupt,
[in] BOOLEAN EnableVirtualization
);
매개 변수
[in] NdisMiniportHandle
NDIS가 MiniportInitializeEx의 MiniportAdapterHandle 매개 변수에 전달한 네트워크 어댑터 핸들입니다.
[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 컨트롤 멤버의 VF Enable 비트를 설정합니다. EnableVirtualization이 FALSE인 경우 NdisMEnableVirtualization은 이 비트를 지웁니다.
반환 값
NdisMEnableVirtualization은 다음 상태 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
가상화 작업이 성공적으로 완료되었습니다. |
|
어댑터 또는 시스템은 SR-IOV를 지원하지 않습니다. |
|
EnableVirtualization 매개 변수는 FALSE로 설정되고 NumVFs 매개 변수는 0이 아닌 값으로 설정됩니다. |
|
가상화 작업이 실패했습니다.
참고 가상화를 이미 사용하도록 설정한 경우 가상화를 사용하도록 설정하기 위해 NdisMEnableVirtualization 함수가 호출되면 실패합니다. 드라이버가 가상화를 다시 활성화하려면 먼저 EnableVirtualization 매개 변수가 FALSE로 설정된 함수를 호출하여 가상화를 사용하지 않도록 설정해야 합니다.
|
설명
PF 미니포트 드라이버는 NdisMEnableVirtualization 을 호출하여 PCI 구성 공간에서 SR-IOV 확장 기능 필드를 구성합니다. 이 호출은 구성 공간에서 가상화를 사용하거나 사용하지 않도록 설정하고 네트워크 어댑터에서 PCIe 패브릭에 노출해야 하는 VF 수를 지정하는 데 사용됩니다.
PF 미니포트 드라이버가 OID_NIC_SWITCH_CREATE_SWITCH OID 메서드 요청을 처리하는 경우 드라이버는 NdisMEnableVirtualization 을 호출하여 NIC 스위치에 대한 네트워크 어댑터에서 가상화를 사용하도록 설정합니다. 드라이버는 다음 매개 변수 설정을 사용하여 NdisMEnableVirtualization 을 호출하여 이 작업을 수행합니다.
용어 | Description |
---|---|
NumVFs | NIC 스위치에 사용할 VF 수로 설정합니다. |
EnableVirtualization | TRUE로 설정합니다. |
PF 미니포트 드라이버가 OID_NIC_SWITCH_DELETE_SWITCH OID 메서드 요청을 처리하면 드라이버는 NdisMEnableVirtualization을 호출하여 네트워크 어댑터에서 가상화를 사용하지 않도록 설정합니다. 드라이버는 다음 매개 변수 설정을 사용하여 NdisMEnableVirtualization 을 호출하여 이 작업을 수행합니다.
용어 | Description |
---|---|
NumVFs | 0으로 설정됩니다. |
EnableVirtualization | FALSE로 설정합니다. |
NIC 스위치를 만드는 방법에 대한 자세한 내용은 NIC 스위치 만들기를 참조하세요.
SR-IOV 인터페이스에 대한 자세한 내용은 SR-IOV(단일 루트 I/O 가상화) 개요를 참조하세요.
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 |
추가 정보