VideoPortGetDeviceBase 函式 (video.h)
VideoPortGetDeviceBase 函式會將一系列總線相對裝置記憶體或 I/O 位址對應至系統空間。
語法
VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS IoAddress,
ULONG NumberOfUchars,
UCHAR InIoSpace
);
參數
HwDeviceExtension
迷你埠驅動程式裝置延伸模組的指標。
IoAddress
要對應之範圍的基底實體位址。 您可以藉由呼叫 VideoPortGetDeviceData、 VideoPortGetRegistryParameters 或 VideoPortGetAccessRanges 來取得此總線相對值。 否則,這個值是裝置記憶體或 I/O 連接埠的驅動程式提供的預設基位址。
您必須透過先前呼叫 VideoPortVerifyAccessRanges 或 VideoPortGetAccessRanges,成功宣告登錄中的 IoAddress 和 NumberOfUchars 所描述的範圍。
NumberOfUchars
從 IoAddress 開始要對應的位元元組數目。
InIoSpace
IoAddress 範圍的位置。 此參數可以是下列其中一個旗標或這些旗標的 ORed 相容組合。
國旗 | 意義 |
---|---|
VIDEO_MEMORY_SPACE_DENSE | 已過時。 |
VIDEO_MEMORY_SPACE_IO | 位址範圍位於 I/O 空間中,不在記憶體空間中。 |
VIDEO_MEMORY_SPACE_MEMORY | 位址範圍位於記憶體空間中,而不是在 I/O 空間中。 |
VIDEO_MEMORY_SPACE_P6CACHE | 處理器會匯總一連串的寫入作業、將它們傳送至快取行,然後排清快取。 只有在未設定VIDEO_MEMORY_SPACE_IO時,此旗標才有意義。 將視訊記憶體指定為寫入合併 (WC) 。 如需 WC 快取的相關信息,請參閱 Video Miniport Drivers 網站中的寫入合併記憶體 一文。 |
傳回值
如果成功, VideoPortGetDeviceBase 會傳回對應的基底虛擬位址。 如果指定的總線相對範圍無法對應, VideoPortGetDeviceBase 會傳回 NULL。
備註
您可以將對應的虛擬位址傳遞至 VideoPortReadXxx、VideoPortWriteXxx 和 VideoPort Xxx記憶體函式,但 VideoPortMapMemory 和 VideoPortUnmapMemory 除外。
您必須從迷你埠驅動程式的 HwVidFindAdapter、HwVidQueryDeviceCallback 或 HwVidQueryNamedValueCallback 函式呼叫 VideoPortGetDeviceBase。
在 HwVidFindAdapter 傳回控件之前,您應該同時儲存 VideoPortGetDeviceBase 所傳回的對應基位址,以及配接器裝置延伸模組中對應存取範圍的長度, (HwDeviceExtension 所指向) 以供稍後使用。
存取對應的位址空間必須遵循下列規則:
- 如果 InIoSpace 是VIDEO_MEMORY_SPACE_IO,表示地址位於 I/O 空間中,則此函式傳回的虛擬位址應該傳遞至 VideoPortReadPort Xxx、VideoPortWritePortXxx、VideoPortReadPortBufferXxx 和 VideoPortWritePortBufferXxx 函式,其中 Xxx 是 Uchar、Ushort 或 Ulong。
- 如果 InIoSpace 是VIDEO_MEMORY_SPACE_MEMORY,表示位址不在 I/O 空間中,但在記憶體空間中,則此函式傳回的虛擬地址應該傳遞至 VideoPortReadRegister Xxx、VideoPortWriteRegisterXxx、VideoPortReadRegisterBufferXxx 和 VideoPortWriteRegisterBufferXxx 函式,其中 Xxx 是 Uchar、Ushort 或 Ulong。
- 驅動程式不得存取超出 NumberOfUchars 分隔範圍的位址。
每個通用記憶體架構 (UMA) 顯示裝置都會使用位於主要記憶體而非 PCI 總線上的畫面緩衝區。 在此情況下,請勿呼叫 VideoPortMapMemory 來對應框架緩衝區。 若要將 UMA 框架緩衝區對應至系統空間,請呼叫 MmMapIoSpace。
如果迷你埠驅動程式不支援其已對應邏輯範圍的適配卡,它必須先執行兩個步驟,才能將控件傳回 DriverEntry 函式:呼叫 VideoPortFreeDeviceBase 以取消對應先前從系統空間對應的範圍,並呼叫 VideoPortGetAccessRanges 或 VideoPortVerifyAccessRanges ,以在登錄中的範圍上釋放其宣告。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows 2000 和更新版本的 Windows 作業系統中使用。 |
目標平台 | 桌面 |
標頭 | video.h (包含 Video.h) |
程式庫 | Videoprt.lib |
Dll | Videoprt.sys |
IRQL | PASSIVE_LEVEL |