VideoPortGetDeviceBase 函式 (video.h)

VideoPortGetDeviceBase 函式會將一系列總線相對裝置記憶體或 I/O 位址對應至系統空間。

語法

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

參數

HwDeviceExtension

迷你埠驅動程式裝置延伸模組的指標。

IoAddress

要對應之範圍的基底實體位址。 您可以藉由呼叫 VideoPortGetDeviceDataVideoPortGetRegistryParametersVideoPortGetAccessRanges 來取得此總線相對值。 否則,這個值是裝置記憶體或 I/O 連接埠的驅動程式提供的預設基位址。

您必須透過先前呼叫 VideoPortVerifyAccessRangesVideoPortGetAccessRanges,成功宣告登錄中的 IoAddressNumberOfUchars 所描述的範圍。

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

備註

您可以將對應的虛擬位址傳遞至 VideoPortReadXxxVideoPortWriteXxx 和 VideoPort Xxx記憶體函式,但 VideoPortMapMemory 和 VideoPortUnmapMemory 除外。

您必須從迷你埠驅動程式的 HwVidFindAdapterHwVidQueryDeviceCallbackHwVidQueryNamedValueCallback 函式呼叫 VideoPortGetDeviceBase

在 HwVidFindAdapter 傳回控件之前,您應該同時儲存 VideoPortGetDeviceBase 所傳回的對應基位址,以及配接器裝置延伸模組中對應存取範圍的長度, (HwDeviceExtension 所指向) 以供稍後使用。

存取對應的位址空間必須遵循下列規則:

  • 如果 InIoSpace 是VIDEO_MEMORY_SPACE_IO,表示地址位於 I/O 空間中,則此函式傳回的虛擬位址應該傳遞至 VideoPortReadPort XxxVideoPortWritePortXxxVideoPortReadPortBufferXxxVideoPortWritePortBufferXxx 函式,其中 Xxx 是 UcharUshortUlong
  • 如果 InIoSpace 是VIDEO_MEMORY_SPACE_MEMORY,表示位址不在 I/O 空間中,但在記憶體空間中,則此函式傳回的虛擬地址應該傳遞至 VideoPortReadRegister Xxx、VideoPortWriteRegisterXxxVideoPortReadRegisterBufferXxxVideoPortWriteRegisterBufferXxx 函式,其中 XxxUcharUshortUlong
  • 驅動程式不得存取超出 NumberOfUchars 分隔範圍的位址。
VideoPortGetDeviceBaseVideoPortMapMemory 可由視訊迷你埠驅動程式呼叫,以將視訊記憶體對應到虛擬地址空間。 如果您呼叫這兩個函式來對應相同的實體位址,或多次呼叫其中一個函式來對應相同的實體位址,您可能有多個虛擬位址範圍對應至相同的實體地址範圍。 在此情況下,您必須將所有呼叫中的 InIoSpace 參數VIDEO_MEMORY_SPACE_P6CACHE旗標設定為相同的值。

每個通用記憶體架構 (UMA) 顯示裝置都會使用位於主要記憶體而非 PCI 總線上的畫面緩衝區。 在此情況下,請勿呼叫 VideoPortMapMemory 來對應框架緩衝區。 若要將 UMA 框架緩衝區對應至系統空間,請呼叫 MmMapIoSpace

如果迷你埠驅動程式不支援其已對應邏輯範圍的適配卡,它必須先執行兩個步驟,才能將控件傳回 DriverEntry 函式:呼叫 VideoPortFreeDeviceBase 以取消對應先前從系統空間對應的範圍,並呼叫 VideoPortGetAccessRangesVideoPortVerifyAccessRanges ,以在登錄中的範圍上釋放其宣告。

規格需求

需求
最低支援的用戶端 可在 Windows 2000 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 video.h (包含 Video.h)
程式庫 Videoprt.lib
Dll Videoprt.sys
IRQL PASSIVE_LEVEL

另請參閱

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory