Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sanal PCI (VPCI) veri türleri, cihaz kaynaklarını ayırmak, sanal PCI cihazları oluşturmak, MMIO aralıklarını eşlemek, cihaz kayıtlarına erişmek ve cihaz kesintilerini hedeflemek için kullanılan bayrakları, özellik kodlarını ve değer yapılarını tanımlar.
Sözdizimi
//
// Virtual PCI type definitions.
//
typedef enum WHV_ALLOCATE_VPCI_RESOURCE_FLAGS
{
WHvAllocateVpciResourceFlagNone = 0x00000000,
WHvAllocateVpciResourceFlagAllowDirectP2P = 0x00000001
} WHV_ALLOCATE_VPCI_RESOURCE_FLAGS;
// Enables bitwise operators on the WHV_ALLOCATE_VPCI_RESOURCE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS);
#define WHV_MAX_DEVICE_ID_SIZE_IN_CHARS 200 // PnP manager limit
typedef struct WHV_SRIOV_RESOURCE_DESCRIPTOR
{
WCHAR PnpInstanceId[WHV_MAX_DEVICE_ID_SIZE_IN_CHARS];
LUID VirtualFunctionId;
UINT16 VirtualFunctionIndex;
UINT16 Reserved;
} WHV_SRIOV_RESOURCE_DESCRIPTOR;
typedef enum WHV_VPCI_DEVICE_NOTIFICATION_TYPE
{
WHvVpciDeviceNotificationUndefined = 0,
WHvVpciDeviceNotificationMmioRemapping = 1,
WHvVpciDeviceNotificationSurpriseRemoval = 2
} WHV_VPCI_DEVICE_NOTIFICATION_TYPE;
typedef struct WHV_VPCI_DEVICE_NOTIFICATION
{
WHV_VPCI_DEVICE_NOTIFICATION_TYPE NotificationType;
UINT32 Reserved1;
union
{
UINT64 Reserved2;
};
} WHV_VPCI_DEVICE_NOTIFICATION;
typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS
{
WHvCreateVpciDeviceFlagNone = 0x00000000,
WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
} WHV_CREATE_VPCI_DEVICE_FLAGS;
// Enables bitwise operators on the WHV_CREATE_VPCI_DEVICE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);
typedef enum WHV_VPCI_DEVICE_PROPERTY_CODE
{
WHvVpciDevicePropertyCodeUndefined = 0,
WHvVpciDevicePropertyCodeHardwareIDs = 1,
WHvVpciDevicePropertyCodeProbedBARs = 2
} WHV_VPCI_DEVICE_PROPERTY_CODE;
typedef struct WHV_VPCI_HARDWARE_IDS
{
UINT16 VendorID;
UINT16 DeviceID;
UINT8 RevisionID;
UINT8 ProgIf;
UINT8 SubClass;
UINT8 BaseClass;
UINT16 SubVendorID;
UINT16 SubSystemID;
} WHV_VPCI_HARDWARE_IDS;
#define WHV_VPCI_TYPE0_BAR_COUNT 6
typedef struct WHV_VPCI_PROBED_BARS
{
UINT32 Value[WHV_VPCI_TYPE0_BAR_COUNT];
} WHV_VPCI_PROBED_BARS;
typedef enum WHV_VPCI_MMIO_RANGE_FLAGS
{
WHvVpciMmioRangeFlagReadAccess = 0x00000001,
WHvVpciMmioRangeFlagWriteAccess = 0x00000002
} WHV_VPCI_MMIO_RANGE_FLAGS;
// Enables bitwise operators on the WHV_VPCI_MMIO_RANGE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_MMIO_RANGE_FLAGS);
typedef enum WHV_VPCI_DEVICE_REGISTER_SPACE
{
WHvVpciConfigSpace = -1,
WHvVpciBar0 = 0,
WHvVpciBar1 = 1,
WHvVpciBar2 = 2,
WHvVpciBar3 = 3,
WHvVpciBar4 = 4,
WHvVpciBar5 = 5
} WHV_VPCI_DEVICE_REGISTER_SPACE;
typedef struct WHV_VPCI_MMIO_MAPPING
{
WHV_VPCI_DEVICE_REGISTER_SPACE Location;
WHV_VPCI_MMIO_RANGE_FLAGS Flags;
UINT64 SizeInBytes;
UINT64 OffsetInBytes;
PVOID VirtualAddress;
} WHV_VPCI_MMIO_MAPPING;
typedef struct WHV_VPCI_DEVICE_REGISTER
{
WHV_VPCI_DEVICE_REGISTER_SPACE Location;
UINT32 SizeInBytes;
UINT64 OffsetInBytes;
} WHV_VPCI_DEVICE_REGISTER;
typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS
{
WHvVpciInterruptTargetFlagNone = 0x00000000,
WHvVpciInterruptTargetFlagMulticast = 0x00000001,
} WHV_VPCI_INTERRUPT_TARGET_FLAGS;
// Enables bitwise operators on the WHV_VPCI_INTERRUPT_TARGET_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_INTERRUPT_TARGET_FLAGS);
typedef struct WHV_VPCI_INTERRUPT_TARGET
{
UINT32 Vector;
WHV_VPCI_INTERRUPT_TARGET_FLAGS Flags;
UINT32 ProcessorCount;
UINT32 Processors[ANYSIZE_ARRAY];
} WHV_VPCI_INTERRUPT_TARGET;
Members
WHV_ALLOCATE_VPCI_RESOURCE_FLAGS
tarafından WHvAllocateVpciResourceayrılan kaynak için seçenekleri belirtir.
WHvAllocateVpciResourceFlagNone
Ayrılan kaynağa özel bir seçenek uygulanmadığını belirtir.
WHvAllocateVpciResourceFlagAllowDirectP2P
Ayrılan kaynağın doğrudan, çevrilmiş eşler arası (P2P) işlemlere katılmasına izin verildiğini belirtir.
WHV_SRIOV_RESOURCE_DESCRIPTOR
Ayrılacak tek kök G/Ç sanallaştırma (SR-IOV) sanal işlevini açıklar. bu yapıyı ResourceDescriptor olduğunda ProviderIdNULLolarak WHvAllocateVpciResource geçirin.
PnpInstanceId
Sanal işlevi barındıran fiziksel işlevin Tak ve Kullan (PnP) örnek tanımlayıcısını belirtir. Tanımlayıcı, PnP yöneticisi sınırıyla eşleşen en çok WHV_MAX_DEVICE_ID_SIZE_IN_CHARS karakterdir.
VirtualFunctionId
Ayrılacak sanal işlevin yerel olarak benzersiz tanımlayıcısını (LUID) belirtir.
VirtualFunctionIndex
Sanal işlevin fiziksel işlevindeki dizinini belirtir.
Reserved
Rezerve edilmiş. Sıfır olarak ayarlayın.
WHV_VPCI_DEVICE_NOTIFICATION_TYPE
tarafından bir VPCI cihazı WHvGetVpciDeviceNotificationiçin bildirilen zaman uyumsuz bildirimin türünü tanımlar.
WHvVpciDeviceNotificationUndefined
Kullanılabilir bildirim olmadığını gösterir. Bu tür döndürdüğünde WHvGetVpciDeviceNotification , arayan tüm bekleyen bildirimleri boşaltmış olur.
WHvVpciDeviceNotificationMmioRemapping
Cihazın MMIO aralıklarının yeniden eşlendiğini gösterir. Çağıran, cihazın MMIO aralıklarını ile WHvMapVpciDeviceMmioRangesyeniden eşlemelidir.
WHvVpciDeviceNotificationSurpriseRemoval
Cihazın beklenmedik bir şekilde kaldırıldığını gösterir (sürpriz kaldırma).
WHV_VPCI_DEVICE_NOTIFICATION
tarafından WHvGetVpciDeviceNotificationdöndürülen bir VPCI cihaz bildiriminin türünü ve verilerini alır.
NotificationType
Bildirimi tanımlayan bir WHV_VPCI_DEVICE_NOTIFICATION_TYPE değer alır.
Reserved1
Rezerve edilmiş.
Reserved2
Rezerve edilmiş.
WHV_CREATE_VPCI_DEVICE_FLAGS
tarafından WHvCreateVpciDeviceoluşturulan bir cihazın isteğe bağlı özelliklerini belirtir.
WHvCreateVpciDeviceFlagNone
İsteğe bağlı özelliklerin uygulanacağını belirtir.
WHvCreateVpciDeviceFlagPhysicallyBacked
Cihazın, sağlanan VPCI kaynak tanıtıcısı tarafından tanımlanan fiziksel kaynaklar tarafından yedeklendiğini belirtir.
WHvCreateVpciDeviceFlagUseLogicalInterrupts
Cihazın konuk işletim sisteminde mantıksal kesmeleri kullanıma çıkardığını belirtir.
WHV_VPCI_DEVICE_PROPERTY_CODE
tarafından WHvGetVpciDevicePropertysorgulanan bir VPCI cihaz özelliğini tanımlar.
WHvVpciDevicePropertyCodeUndefined
Rezerve edilmiş. Geçerli bir özellik kodu değil.
WHvVpciDevicePropertyCodeHardwareIDs
Cihazın donanım tanımlayıcılarını seçer. Özellik değeri bir WHV_VPCI_HARDWARE_IDS yapıdır.
WHvVpciDevicePropertyCodeProbedBARs
Cihazın olası temel adres yazmaçlarını (BAR) seçer. Özellik değeri bir WHV_VPCI_PROBED_BARS yapıdır.
WHV_VPCI_HARDWARE_IDS
VPCI cihazının PCI donanım tanımlayıcılarını içerir. özelliği için WHvVpciDevicePropertyCodeHardwareIDs tarafından WHvGetVpciDeviceProperty döndürülür.
VendorID
PCI satıcı tanımlayıcısını alır.
DeviceID
PCI cihaz tanımlayıcısını alır.
RevisionID
PCI düzeltme tanımlayıcısını alır.
ProgIf
PCI sınıf kodunun programlama arabirimi baytını alır.
SubClass
PCI sınıf kodunun alt sınıf baytını alır.
BaseClass
PCI sınıf kodunun temel sınıf baytını alır.
SubVendorID
PCI alt sistemi satıcı tanımlayıcısını alır.
SubSystemID
PCI alt sistem tanımlayıcısını alır.
WHV_VPCI_PROBED_BARS
VPCI cihazının tür 0 temel adres yazmaçlarının (BAR) olası değerlerini içerir. özelliği için WHvVpciDevicePropertyCodeProbedBARs tarafından WHvGetVpciDeviceProperty döndürülür.
Value
(6) türü 0 BAR'ların her birinin WHV_VPCI_TYPE0_BAR_COUNT olası değerini alır.
WHV_VPCI_MMIO_RANGE_FLAGS
tarafından WHV_VPCI_MMIO_MAPPINGaçıklanan bir MMIO aralığına verilen erişimi belirtir.
WHvVpciMmioRangeFlagReadAccess
Çağıranın işleminin aralığa okuma erişimi olduğunu gösterir.
WHvVpciMmioRangeFlagWriteAccess
Çağıranın işleminin aralığa yazma erişimi olduğunu gösterir.
WHV_VPCI_DEVICE_REGISTER_SPACE
ve WHV_VPCI_DEVICE_REGISTERtarafından WHV_VPCI_MMIO_MAPPING kullanılan bir VPCI cihazının kayıt alanını tanımlar.
WHvVpciConfigSpace
Cihazın PCI yapılandırma alanını tanımlar.
WHvVpciBar0 ile WHvVpciBar5 arasında
Cihazın temel adres kayıtlarını (BAR) 0 ile 5 arasında tanımlayın.
WHV_VPCI_MMIO_MAPPING
tarafından çağıranın işlemiyle WHvMapVpciDeviceMmioRangeseşlenen tek bir MMIO alt aralığını açıklar.
Location
Alt aralığın ait olduğu ÇUBUĞU bir WHV_VPCI_DEVICE_REGISTER_SPACE değer olarak tanımlar.
Flags
Bu alt aralık için çağıranın işlemine verilen erişimi değerlerin WHV_VPCI_MMIO_RANGE_FLAGS bir bileşimi olarak belirtir.
SizeInBytes
Alt aralığın uzunluğunu bayt cinsinden belirtir.
OffsetInBytes
tarafından Locationtanımlanan BAR'ın temel adresinden alt aralığın uzaklığını bayt cinsinden belirtir.
VirtualAddress
Çağıranın işlemindeki alt aralığın eşlendiği sanal adresi belirtir.
WHV_VPCI_DEVICE_REGISTER
ile WHvReadVpciDeviceRegisterWHvWriteVpciDeviceRegisterokunacak veya ile yazacak bir kayıt tanımlar.
Location
Yazmaç alanını bir WHV_VPCI_DEVICE_REGISTER_SPACE değer (yapılandırma alanı veya belirli bir BAR) olarak belirtir.
SizeInBytes
Yazmaç erişiminin boyutunu bayt cinsinden belirtir.
OffsetInBytes
tarafından Locationtanımlanan alan içindeki yazmaç uzaklığını bayt cinsinden belirtir.
WHV_VPCI_INTERRUPT_TARGET_FLAGS
tarafından WHV_VPCI_INTERRUPT_TARGETaçıklanan kesme hedefi seçeneklerini belirtir.
WHvVpciInterruptTargetFlagNone
Kesme hedefi için hiçbir özel seçeneğin geçerli olmadığını belirtir.
WHvVpciInterruptTargetFlagMulticast
Kesmenin hedef işlemci kümesine çok noktaya yayın olarak teslim edilir.
WHV_VPCI_INTERRUPT_TARGET
VPCI cihaz kesintisinin hedefini belirtir: vektör ve sanal işlemci kümesi. Bu yapı, esnek bir dizi üyesi olduğundan Processors değişken uzunluktadır.
Vector
Hedef işlemcilere teslim etmek için kesme vektörlerini belirtir.
Flags
Değerlerin bir bileşimi WHV_VPCI_INTERRUPT_TARGET_FLAGS olarak hedef için seçenekleri belirtir.
ProcessorCount
Dizideki Processors geçerli girdilerin sayısını belirtir.
Processors
Kesmenin hedeflediğini sanal işlemcilerin dizinlerini belirtir.
Açıklamalar
Bölüme atanan VPCI cihazı tek kök G/Ç sanallaştırma (SR-IOV) sanal işlevini, ayrı olarak atanabilir bir fiziksel işlevi veya herhangi bir fiziksel kaynak tarafından desteklenmeyen bir sanal cihazı temsil eder. Tipik yaşam döngüsü, ile WHvAllocateVpciResourcebir kaynak ayırmak, ile WHvCreateVpciDevicecihazı oluşturmak, cihazın MMIO aralıklarını ile WHvMapVpciDeviceMmioRangeseşlemek, kesmelerini ile WHvMapVpciDeviceInterrupteşlemek ve son olarak cihazı ile WHvDeleteVpciDeviceyok etmektir.
WHV_VPCI_INTERRUPT_TARGET ve WHV_VPCI_INTERRUPT_TARGET_FLAGS türleri, , WHvRetargetVpciDeviceInterruptve WHvGetVpciDeviceInterruptTargetcihaz kesme işlevleri WHvMapVpciDeviceInterrupttarafından paylaşılır.
Processors Esnek bir dizi üyesi olduğundan, çağıranların yapının sabit bölümünü izleyen işlemci dizinlerini tutacak ProcessorCount kadar büyük bir arabellek ayırması gerekir.
Ayrıca bakınız
WHvAllocateVpciResourceWHvCreateVpciDeviceWHvDeleteVpciDeviceWHvGetVpciDevicePropertyWHvGetVpciDeviceNotificationWHvMapVpciDeviceMmioRangesWHvUnmapVpciDeviceMmioRangesWHvSetVpciDevicePowerStateWHvReadVpciDeviceRegisterWHvWriteVpciDeviceRegisterWHvMapVpciDeviceInterruptWHvRetargetVpciDeviceInterruptWHvGetVpciDeviceInterruptTarget- Windows Hiper Yönetici Platformu API Tanımları