Функция 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-адрес или адрес по умолчанию.