Функция 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 запрашивает аппаратные ресурсы в реестре для сетевой карты драйвера. Следовательно, только функции MiniportInitializeEx вызывают NdisMMapIoSpace.
NdisMMapIoSpace устанавливает для переменной в VirtualAddressзначение NULL , если она не возвращает NDIS_STATUS_SUCCESS.
MiniportInitializeEx получает значение PhysicalAddress из раздела реестра Parameters драйвера или путем вызова функции конфигурации 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 (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis) |