來自 VF Miniport 驅動程式的 Backchannel 通訊
PCI Express (PCIe) Virtual Function (VF 的迷你埠驅動程式) 會與 PCIe 實體函式的迷你埠驅動程式通訊, (PF) 從 VF 設定區塊讀取或寫入資料。
VF 組態區塊用於 PF 與 VF 迷你埠驅動程式之間的反向通道通訊。 獨立硬體廠商 (IHV) 可以定義裝置的一或多個 VF 設定區塊。 每個 VF 組態區塊都有 IHV 定義的格式、長度和區塊識別碼。 例如,IHV 可以定義 VF 組態區塊,可用於 VF 迷你埠驅動程式的 MAC (MAC) 位址。 另一個 VF 組態區塊可用於目前的 VF 和虛擬埠 (VPort) 組態。
注意 來自每個 VF 組態區塊的資料只會由 PF 和 VF 迷你埠驅動程式使用。 此資料的格式和內容對 Windows 作業系統的元件不透明。
每個 VF 組態區塊都會由 IHV 指派唯一識別碼。 這可讓 VF 迷你埠驅動程式查詢或設定特定 VF 組態區塊的相關資訊。
VF 迷你埠驅動程式會透過下列函式,在指定的 VF 組態區塊上起始讀取或寫入作業:
NdisMReadConfigBlock,它會從指定的 VF 組態區塊讀取資料。 當 VF 迷你埠驅動程式呼叫此函式時,它會指定要讀取之資料的區塊識別碼和長度。 驅動程式也會將指標傳遞至將包含所要求資料的緩衝區。
NdisMWriteConfigBlock,會將資料寫入指定的 VF 組態區塊。 當 VF 迷你埠驅動程式呼叫此函式時,它會指定要寫入之資料的區塊識別碼和長度。 驅動程式也會將指標傳遞至要從中寫入資料的緩衝區。
PF 迷你埠驅動程式會以下列方式管理對指定 VF 組態區塊的存取:
當 VF 迷你埠驅動程式呼叫 NdisMReadConfigBlock時,NDIS 會發出物件識別碼 (OID) 方法要求 ,OID_SRIOV_READ_VF_CONFIG_BLOCK PF 迷你埠驅動程式。 此 OID 要求包含函式調用中 VF 迷你埠驅動程式所傳遞的參數資料。
PF 迷你埠驅動程式會執行讀取作業,並在驅動程式完成 OID 要求時傳回要求的資料。 OID 要求完成後,NDIS 會從 NdisMReadConfigBlock的呼叫傳回。
當 VF 迷你埠驅動程式呼叫 NdisMWriteConfigBlock時,NDIS 會向 PF 迷你埠驅動程式發出 OID 方法要求 OID_SRIOV_WRITE_VF_CONFIG_BLOCK 。 此 OID 要求包含函式調用中 VF 迷你埠驅動程式所傳遞的參數資料。
PF 迷你埠驅動程式會執行寫入作業,並完成 OID 要求。 OID 要求完成之後,NDIS 會從 NdisMWriteConfigBlock的呼叫傳回。
下圖顯示透過 SR-IOV 後端通道介面讀取和寫入 VF 設定區塊所涉及的程式。