Функция NdisMMapIoSpace (ndis.h)
NdisMMapIoSpace сопоставляет заданный относительный "физический" диапазон ОЗУ устройства или регистрируется в диапазоне виртуальных пространств системы.
Синтаксис
NDIS_STATUS NdisMMapIoSpace(
[out] PVOID *VirtualAddress,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] UINT Length
);
Параметры
[out] VirtualAddress
Указатель на указанную вызывающим переменную, которая устанавливается на преобразованный виртуальный адрес, если вызов выполнен успешно.
[in] MiniportAdapterHandle
Задает входные данные дескриптора для MiniportInitializeEx.
[in] PhysicalAddress
Указывает относительный базовый физический адрес шины диапазона памяти устройства, который необходимо сопоставить.
[in] Length
Указывает число байтов, которые необходимо сопоставить.
Возвращаемое значение
NdisMMapIoSpace может возвращать любое из следующих значений состояния:
Возвращаемый код | Описание |
---|---|
|
Диапазон памяти устройства успешно сопоставлен так, что значение VirtualAddress допустимо, а сопоставленный диапазон был указан в реестре сетевого адаптера. |
|
Попытка утверждения диапазона памяти устройства в реестре завершилась сбоем, так как другой драйвер уже утверждал диапазон для своего устройства. NdisMMapIoSpace регистрирует ошибку, если это происходит. |
|
Не удалось сопоставить память или не удается выделить достаточную виртуальную память. |
|
Тип шины или номер шины выходит за пределы диапазона или указанный physicalAddress и Длина недействительна (возможно, не в пределах пространства ввода-вывода текущей платформы). |
Замечания
Эта функция вызывается драйверами сетевых адаптеров с памятью на борту или банком регистров устройств, отображаемых в пространстве ввода-вывода узла. Например, драйвер сетевой карты, использующий вызовы PIO NdisMMapIoSpace.
Успешный вызов NdisMMapIoSpace утверждения аппаратных ресурсов в реестре сетевого адаптера драйвера. Следовательно, вызов функций NdisMMapIoSpaceвызывается только MiniportInitializeEx.
NdisMMapIoSpace задает переменную VirtualAddress значение NULL, если он не возвращает NDIS_STATUS_SUCCESS.
MiniportInitializeEx получает значение PhysicalAddress из раздела реестра драйвера или путем вызова функции конфигурации типа NdisXxx конфигурации. Заданный диапазон физических адресов должен находиться в пространстве ввода-вывода текущей платформы. Это ошибка программирования для вызова NdisMMapIoSpace с адресом физической памяти узла.
Минипорт-драйвер должен вызвать обратную NdisMUnmapIoSpace, чтобы освободить утверждение о системных ресурсах, если MiniportInitializeEx впоследствии не удается инициализировать сетевой адаптер, если сетевой адаптер удаляется с компьютера и (или) при выгрузке драйвера.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. NdisMMapIoSpace (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisMMapIoSpace (NDIS 5.1)) в Windows XP. |
целевая платформа | Всеобщий |
заголовка | ndis.h (include Ndis.h) |
библиотеки | Ndis.lib |
IRQL | PASSIVE_LEVEL |
правил соответствия DDI | Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis) |