Поделиться через


Функция 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 UmdfDirectHardwareAccess для AllowDirectHardwareAccess.

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

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

Дополнительные сведения об анализе аппаратных ресурсов, начиная с версии 2 UMDF, см. в разделе Обработка аппаратных ресурсов вдрайвера UMDF.

Тип PHYSICAL_ADDRESS определен в Wudfwdm.h следующим образом:

typedef LARGE_INTEGER PHYSICAL_ADDRESS;

Пример поиска и сопоставления ресурсов регистра, сопоставленных с памятью, см. в статье чтение и запись в регистры устройств.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8.1
целевая платформа Всеобщий
минимальная версия UMDF 2.0
заголовка wdfdevice.h (include Wdf.h)
библиотеки WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

См. также

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace