附註 這個方法只能由執行在 Hyper-V 父層分割區的管理操作系統中的覆蓋驅動程式使用。
PCI 總線驅動程式會在 Hyper-V 父磁碟分區的管理作系統中執行,會查詢網路適配器之每個PCI基位址緩存器(BAR)的記憶體或I/O位址空間需求。 PCI 總線驅動程式會在第一次偵測總線上的配接器時執行此查詢。
透過此 PCI BAR 查詢,PCI 總線驅動程式會決定下列各項:
網路適配器是否支援PCI BAR。
如果支援 BAR,BAR 需要多少記憶體或 I/O 位址空間。
PCI 驅動程式會以下列方式執行此 PCI BAR 查詢:
PCI 驅動程式首先將所有的 1 寫入 BAR。
PCI 驅動程式接著會讀取 BAR,以判斷 BAR 所需的記憶體或地址空間。 值為零表示網路適配器不支援 BAR。
虛擬 PCI(VPCI)總線驅動程式會在 Hyper-V 子分割區的客體作業系統中執行。 當 PCI Express (PCIe)虛擬函式(VF)附加到子分割區時,VPCI 總線驅動程式會為 VF 提供一個虛擬網路介面卡(VF 網路介面卡)。 在這樣做之前,VPCI 總線驅動程式必須執行 PCI BAR 查詢,以判斷 VF 網路配接器所需的記憶體或地址空間。
因為PCI設定空間的存取權是特殊許可權作業,所以只能由在 Hyper-V 父分割區之管理作系統中執行的元件執行。 當VPCI總線驅動程式查詢PCI BAR時,NDIS會向PF小型埠驅動程式發出 OID_SRIOV_PROBED_BARS 的物件識別碼(OID)查詢要求。 此 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 小型埠驅動程式必須將該陣列元素設定為位於實體網路適配器 PCI 組態空間相同位移處 BAR 的 ULONG 值。
驅動程式返回的每個 BAR 值都必須是與在管理作業系統中運行的 PCI 驅動程式所執行的 PCI BAR 查詢後獲得的值相同。 PF 迷你埠驅動程式可以呼叫 NdisMQueryProbedBars 來判斷這項資訊。
如需 PCI 裝置基址暫存器的更多資訊,請參閱 PCI 本地匯流排規格。