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 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈