查詢虛擬函式的 PCI 基底位址暫存器
注意 這個方法只能由超載在 Hyper-V 父分割區管理作業系統中執行的驅動程式使用。
在 Hyper-V 父磁碟分割的管理作業系統中執行的 PCI 匯流排驅動程式會查詢網路介面卡的每個 PCI 基底位址暫存器 (BAR) 的記憶體或 I/O 位址空間需求。 PCI 匯流排驅動程式會在第一次偵測匯流排上的配接器時執行此查詢。
透過此 PCI BAR 查詢,PCI 匯流排驅動程式會決定下列各項:
網路介面卡是否支援 PCI BAR。
如果支援 BAR,則 BAR 需要多少記憶體或 I/O 位址空間。
PCI 驅動程式會以下列方式執行此 PCI BAR 查詢:
PCI 驅動程式會先將所有驅動程式寫入 BAR。
PCI 驅動程式接著會讀取 BAR,以判斷 BAR 所需的記憶體或位址空間。 值為零表示網路介面卡不支援 BAR。
虛擬 PCI () 匯流排驅動程式會在 Hyper-V 子分割的客體作業系統中執行。 當 PCI Express (PCIe) Virtual Function (VF) 附加至子分割區時,則) 會公開 VF (VF 網路介面卡 的虛擬網路介面卡) 。 在這樣做之前,DHCPI 匯流排驅動程式必須執行 PCI BAR 查詢,以判斷 VF 網路介面卡所需的記憶體或位址空間。
由於 PCI 設定空間的存取權是特殊許可權的作業,因此只能由在 Hyper-V 父分割區之管理作業系統中執行的元件執行。 當 JSONI 匯流排驅動程式查詢 PCI BAR 時,NDIS 會向 PF 迷你埠驅動程式發出物件識別碼 (OID) 查詢 OID_SRIOV_PROBED_BARS 要求。 此 OID 查詢要求所傳回的結果會轉送至 DHCPI 匯流排驅動程式,以便判斷 VF 網路介面卡需要多少記憶體位址空間。
注意 OID_SRIOV_BAR_RESOURCES的 OID 要求只能由 NDIS 發出。 OID 要求不得由過度配置驅動程式發出,例如通訊協定或篩選驅動程式。
OID_SRIOV_PROBED_BARS查詢要求包含 NDIS_SRIOV_PROBED_BARS_INFO 結構。 當 PF 迷你埠驅動程式處理此 OID 時,驅動程式必須傳回NDIS_SRIOV_PROBED_BARS_INFO結構之 BaseRegisterValuesOffset成員所參考陣列內的 PCI BAR 值。 對於陣列中的每個位移,PF 迷你埠驅動程式必須將陣列元素設定為 BAR 在實體網路介面卡 PCI 設定空間內相同位移的 ULONG 值。
驅動程式所傳回的每個 BAR 值都必須與在管理作業系統中執行的 PCI 驅動程式所執行 PCI BAR 查詢之後的值相同。 PF 迷你埠驅動程式可以呼叫 NdisMQueryProbedBars 來判斷這項資訊。
如需 PCI 裝置基底位址暫存器的詳細資訊,請參閱 PCI 本機匯流排規格。