WdfDeviceMapIoSpace 函式 (wdfdevice.h)
[僅適用於 UMDF]
WdfDeviceMapIoSpace 函式會將指定的實體位址範圍對應至系統地址空間,並傳回虛擬基位址。
語法
NTSTATUS WdfDeviceMapIoSpace(
[in] WDFDEVICE Device,
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *PseudoBaseAddress
);
參數
[in] Device
架構裝置物件的句柄。
[in] PhysicalAddress
指定要對應之 I/O 範圍的起始 64 位實體位址。
[in] NumberOfBytes
指定大於零的值,表示要對應的位元元組數目。
[in] CacheType
指定 MEMORY_CACHING_TYPE 值,指出用來對應實體位址範圍的快取屬性。 MEMORY_CACHING_TYPE列舉類型定義於 Wdfdevice.h 中。
[out] PseudoBaseAddress
接收虛擬基位址指標的位置位址。
傳回值
如果作業成功,函式會傳回STATUS_SUCCESS。
函式可能會傳回其他
言論
此函式相當於 IWDFDevice3::MapIoSpace的 UMDF 第 2 版。
驅動程式必須在裝置啟動期間呼叫此函式,如果驅動程式在 CM_PARTIAL_RESOURCE_DESCRIPTOR 結構中收到 cmResourceTypeMemory 類型的轉譯資源,則必須在裝置啟動期間呼叫此函式。 WdfDeviceMapIoSpace 會將資源清單中傳回的實體地址對應至稱為虛擬基地址的架構管理位址。
然後,驅動程式可以使用虛擬基位址來存取WDF_READ_REGISTER_Xxx 和WDF_WRITE_REGISTER_Xxx 函式的裝置快取器。
呼叫 WdfDeviceMapIoSpace 的驅動程式必須將 UmdfDirectHardwareAccess INF 指示詞設定為 AllowDirectHardwareAccess。
如果驅動程式將 UmdfRegisterAccessMode INF 指示詞設定為 RegisterAccessUserModeMapping,則呼叫 WdfDeviceMapIoSpace 也會將指定的實體地址範圍對應至使用者模式基位址範圍,驅動程式後續可藉由呼叫 WdfDeviceGetHardwareRegisterMappedAddress來存取該範圍。
如需 UMDF 驅動程式可以使用之 INF 指示詞的詳細資訊,請參閱 在 INF 檔案中指定 WDF 指示詞。
如需從 UMDF 第 2 版開始剖析硬體資源的詳細資訊,請參閱 處理 UMDF 驅動程式中的硬體資源。
PHYSICAL_ADDRESS類型定義於 Wudfwdm.h 中,如下所示:
typedef LARGE_INTEGER PHYSICAL_ADDRESS;
如需示範驅動程式如何尋找及對應記憶體對應快取器資源的範例,請參閱 讀取和寫入裝置快取器。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8.1 |
目標平臺 | 普遍 |
最低 UMDF 版本 | 2.0 |
標頭 | wdfdevice.h (包括 Wdf.h) |
連結庫 | WUDFx02000.lib |
DLL | WUDFx02000.dll |
IRQL | PASSIVE_LEVEL |