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