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


Функция 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.

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

Никакой

Замечания

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 (include Ndis.h)
библиотеки Ndis.lib
IRQL PASSIVE_LEVEL
правил соответствия DDI Irql_Miscellaneous_Function(ndis)

См. также

NdisCloseConfiguration

NdisOpenConfigurationEx