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


Функция 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 может возвращать любое из следующих значений состояния:

Код возврата Описание
NDIS_STATUS_SUCCESS
Диапазон памяти устройства успешно сопоставлен, поэтому значение в VirtualAddress является допустимым , а сопоставленный диапазон был заявлен в реестре для сетевой карты.
NDIS_STATUS_RESOURCE_CONFLICT
Попытка запросить диапазон памяти устройства в реестре завершилась сбоем, возможно, из-за того, что другой драйвер уже затребовал диапазон для своего устройства. В этом случае NdisMMapIoSpace регистрирует ошибку.
NDIS_STATUS_RESOURCES
Не удалось сопоставить память или выделить достаточный объем виртуальной памяти.
NDIS_STATUS_FAILURE
Тип автобуса или номер автобуса выходит за пределы диапазона, или заданные Значения 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)

См. также раздел

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort