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)
WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

另请参阅

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace