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

Функция NdisIfRegisterInterface регистрирует сетевой интерфейс NDIS.

Синтаксис

NDIS_STATUS NdisIfRegisterInterface(
  [in] NDIS_HANDLE         NdisProviderHandle,
  [in] NET_LUID            NetLuid,
  [in] NDIS_HANDLE         ProviderIfContext,
  [in] PNET_IF_INFORMATION pIfInfo,
       PNET_IFINDEX        pfIndex
);

Параметры

[in] NdisProviderHandle

Дескриптор, идентифицирующий поставщика сетевого интерфейса, регистрирующего интерфейс. Вызывающий объект получил этот дескриптор из предыдущего вызоваФункция NdisIfRegisterProvider.

[in] NetLuid

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

[in] ProviderIfContext

Дескриптор области контекста, выделенной вызывающей стороны, связанной с интерфейсом. NDIS передает этот дескриптор функциям обратного вызова, которые вызывающий объект зарегистрировал в NdisIfRegisterProvider.

[in] pIfInfo

Указатель на структуру, выделенную вызывающим объектом NET_IF_INFORMATION , которая предоставляет сведения об интерфейсе. Эта структура содержит сведения, которые остаются постоянными, пока существует интерфейс.

pfIndex

Указатель на переменную индекса интерфейса, предоставляемую вызывающим абонентом. Если NDIS успешно регистрирует интерфейс, NDIS выделяет индекс интерфейса для этого интерфейса и задает значение pIfIndex . Индекс интерфейса — это 24-разрядное значение, уникальное на локальном компьютере. NDIS может не возвращать один и тот же индекс интерфейса каждый раз, когда поставщик регистрирует интерфейс с тем же NET_LUID значением . Нулевое значение индекса интерфейса зарезервировано, и NDIS не назначает его ни одному интерфейсу. Не путайте индекс интерфейса с индексом NET_LUID.

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

NdisIfRegisterInterface возвращает одно из следующих значений состояния:

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция выполнена успешно.
NDIS_STATUS_RESOURCES
Операция завершилась сбоем из-за нехватки ресурсов.
NDIS_STATUS_INVALID_PARAMETER
Ошибка NdisIfRegisterInterface , так как некоторые входные параметры недопустимы.
NDIS_STATUS_DUPLICATE_OBJECTID
Сбой NdisIfRegisterInterface , так как интерфейс уже зарегистрирован с тем же значением NET_LUID, что и параметр NetLuid .

Комментарии

Поставщики интерфейсов NDIS вызывают функцию NdisIfRegisterInterface для регистрации сетевого интерфейса. Вызов этой функции не означает, что интерфейс активен.

При перезагрузке компьютера NDIS начинается с пустого списка зарегистрированных сетевых интерфейсов. Поставщик интерфейса вызывает функцию NdisIfRegisterInterface при каждом запуске (или обнаружении) интерфейса и интерфейсе
NET_LUID известно.

Метод обнаружения или запуска интерфейса зависит от приложения. Например, если промежуточный драйвер LBFO MUX является поставщиком интерфейса, этот драйвер может зарегистрировать внутренний интерфейс, когда NDIS вызывает функцию ProtocolBindAdapterEx драйвера для первого базового адаптера минипорта.

Поставщик интерфейса может поместить сведения об интерфейсе в постоянное хранилище и восстановить интерфейс по мере необходимости для конкретного приложения. Например, поставщик может хранить дополнительные сведения об интерфейсе с NET_LUID и повторно зарегистрировать интерфейс после перезагрузки компьютера.

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

NDIS может не возвращать один и тот же индекс интерфейса каждый раз, когда поставщик регистрирует интерфейс с тем же NET_LUID значением. Например, NDIS не обязательно назначает один и тот же индекс интерфейса при повторной регистрации интерфейса после перезагрузки компьютера или при отмене регистрации и повторной регистрации интерфейса. Нулевое значение индекса интерфейса зарезервировано, и NDIS не назначает его ни одному интерфейсу.

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

Требования

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

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

NDIS_MAKE_NET_LUID

NET_IF_INFORMATION

NET_LUID

NdisIfDeregisterInterface

NdisIfRegisterProvider

ProtocolBindAdapterEx