Функция 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по