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 指令设置为 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 |