Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 (include Ndis.h) |
| библиотеки | Ndis.lib |
| IRQL | PASSIVE_LEVEL |
| правил соответствия DDI | Irql_Interfaces_Function(ndis) |