Функция 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

Указывает начальный 64-разрядный физический адрес диапазона операций ввода-вывода для сопоставления.

[in] NumberOfBytes

Задает значение больше нуля, указывающее количество сопоставляемых байтов.

[in] CacheType

Задает значение MEMORY_CACHING_TYPE , указывающее атрибут кэша, используемый для сопоставления диапазона физических адресов. Тип перечисления MEMORY_CACHING_TYPE определен в Wdfdevice.h.

[out] PseudoBaseAddress

Адрес расположения, которое получает указатель на псевдобазовой адрес.

Возвращаемое значение

Если операция выполнена успешно, функция возвращает STATUS_SUCCESS.

Функция может возвращать другие значения NTSTATUS.

Комментарии

Эта функция является эквивалентом UMDF версии 2 IWDFDevice3::MapIoSpace.

Драйвер должен вызывать эту функцию во время запуска устройства, если он получает переведенные ресурсы типа CmResourceTypeMemory в CM_PARTIAL_RESOURCE_DESCRIPTOR структуре. WdfDeviceMapIoSpace сопоставляет физический адрес, возвращенный в списке ресурсов, с управляемым платформой адресом, который называется псевдобазовым адресом.

Затем драйвер может использовать псевдобазовой адрес для доступа к регистрам устройств с помощью функций WDF_READ_REGISTER_Xxx и WDF_WRITE_REGISTER_Xxx .

Драйвер, вызывающий WdfDeviceMapIoSpace , должен задать для директивы INF UmdfDirectDirectHardwareAccess значение AllowDirectHardwareAccess.

Если драйвер задает директиву INF UmdfRegisterAccessModeв значение RegisterAccessUsingUserModeMapping, вызов WdfDeviceMapIoSpace также сопоставляет заданный диапазон физических адресов с базовым диапазоном адресов в пользовательском режиме, к которому драйвер впоследствии может получить доступ, вызвав WdfDeviceGetHardwareRegisterMappedAddress.

Дополнительные сведения о директивах INF, которые могут использоваться драйверами UMDF, см. в разделе Указание директив WDF в INF-файлах.

Дополнительные сведения о синтаксическом анализе аппаратных ресурсов, начиная с 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