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。

函数可能会返回其他 NTSTATUS 值

注解

此函数是 IWDFDevice3::MapIoSpace 的 UMDF 版本 2 等效项。

如果驱动程序在CM_PARTIAL_RESOURCE_DESCRIPTOR结构中收到 CmResourceTypeMemory 类型的转换资源,则驱动程序必须在 设备 启动期间调用此函数。 WdfDeviceMapIoSpace 将资源列表中返回的物理地址映射到称为伪基址的框架托管地址。

然后,驱动程序可以使用伪基址通过 WDF_READ_REGISTER_Xxx 和 WDF_WRITE_REGISTER_Xxx 函数访问设备寄存器。

调用 WdfDeviceMapIoSpace 的驱动程序必须将 UmdfDirectHardwareAccess INF 指令设置为 AllowDirectHardwareAccess

如果驱动程序将 UmdfRegisterAccessMode INF 指令设置为 RegisterAccessUsingUserModeMapping,则调用 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)
Library WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

另请参阅

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace