Функция 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 возвращает одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Операция выполнена успешно. |
|
Операция завершилась сбоем из-за нехватки ресурсов. |
|
Ошибка NdisIfRegisterInterface , так как некоторые входные параметры недопустимы. |
|
Сбой 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по