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


Функция 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 утверждения аппаратных ресурсов в реестре сетевого адаптера драйвера. Следовательно, вызов функций 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)

См. также

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort