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


Функция NdisReadNetworkAddress (ndis.h)

Функция NdisReadNetworkAddress возвращает программный сетевой адрес, который был сохранен в реестре сетевого адаптера при установке на компьютере.

Синтаксис

void NdisReadNetworkAddress(
  [out] PNDIS_STATUS Status,
  [out] PVOID        *NetworkAddress,
  [out] PUINT        NetworkAddressLength,
  [in]  NDIS_HANDLE  ConfigurationHandle
);

Параметры

[out] Status

Указатель на переменную, предоставленную вызывающей стороны, в которой эта функция возвращает состояние вызова в виде одного из следующих:

NDIS_STATUS_SUCCESS

Вызывающий объект может использовать адрес, возвращенный в NetworkAddress для сетевой карты.

NDIS_STATUS_FAILURE

В разделе параметров реестра вызывающего объекта отсутствуют сведения об адресе сетевого адаптера или хранимое значение не было строкой.

[out] NetworkAddress

Указатель на переменную, предоставленную вызывающим объектом, в которой эта функция возвращает указатель на буфер, содержащий сетевой адрес (обычно MAC-адрес), хранящийся в виде последовательности целых байтов, если вызов выполнен успешно.

[out] NetworkAddressLength

Указатель на переменную, предоставленную вызывающей стороны, в которой эта функция возвращает количество байтов, возвращаемых в NetworkAddress.

[in] ConfigurationHandle

Дескриптор конфигурации, возвращаемыйФункция NdisOpenConfigurationEx.

Возвращаемое значение

None

Remarks

NdisReadNetworkAddress выполняет поиск раздела параметров реестра, заданного заданным ConfigurationHandle, для ключевое слово NetworkAddress, преобразует значение этой записи строкового типа в последовательность целых байтов и сохраняет запрошенную информацию внутри системы. Хранилище, выделяемое NDIS для такого адреса, остается действительным до тех пор, пока драйвер мини-порта не вызовет функцию NdisCloseConfiguration , которая освобождает память.

Вызывающий объект не может использовать переменную в NetworkAddress в качестве указателя, если только NdisReadNetworkAddress не возвращает NDIS_STATUS_SUCCESS в состояние.

Программа установки сетевого адаптера, поддерживающего программную настройку сетевой адресации, должна хранить запись значения с именем с ключевое слово NetworkAddress в HKLM\System\CurrentControlSet\Control\Class{4d36e972...} \00xx раздела реестра.

Установщик сетевого адаптера обычно сохраняет значение записи NetworkAddress в реестре в виде строки шестнадцатеричных цифр. При необходимости установщик может хранить такой адрес в виде строки парных цифр, при этом каждая пара отделяется от следующего дефисом. NdisReadNetworkAddress удаляет дефисы и преобразует каждую такую пару в один байт.

В любой форме NdisReadNetworkAddress преобразует адрес, указанный в виде строки по одному символу за раз, в эквивалентное целое число до тех пор, пока строка не будет исчерпана.

В реестре Windows 2000 и более поздних версий такая установленная строка адреса содержит символы Юникода.

Обратите внимание, что NDIS не проверяет значение в NetworkAddress. NDIS не гарантирует, что это значение является допустимым адресом, что значение имеет правильную длину или даже что значение является сетевым адресом. Поэтому вызывающий объект NdisReadNetworkAddress не должен делать никаких предположений относительно этого значения и сам должен проверять значение. Если вызывающий объект определяет, что значение выходит за пределы границ, он не должен использовать значение ; Вместо этого следует использовать постоянный MAC-адрес или адрес по умолчанию.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и более поздних версий в Windows Vista и более поздних версиях. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisReadNetworkAddress (NDIS 5.1)) в Windows XP и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL PASSIVE_LEVEL
Правила соответствия DDI Irql_Miscellaneous_Function(ndis)

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

NdisCloseConfiguration

NdisOpenConfigurationEx