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


функция обратного вызова NPI_CLIENT_ATTACH_PROVIDER_FN (netioddk.h)

Функция обратного вызова ClientAttachProvider клиентского модуля подключает клиентский модуль к модулю поставщика.

Синтаксис

NPI_CLIENT_ATTACH_PROVIDER_FN NpiClientAttachProviderFn;

NTSTATUS NpiClientAttachProviderFn(
  [in] HANDLE NmrBindingHandle,
  [in] PVOID ClientContext,
  [in] PNPI_REGISTRATION_INSTANCE ProviderRegistrationInstance
)
{...}

Параметры

[in] NmrBindingHandle

Дескриптор, используемый NMR для представления привязки между клиентским модулем и модулем поставщика.

[in] ClientContext

Указатель на контекст регистрации клиентского модуля. Клиентский модуль передает этот указатель в NMR при вызове функции NmrRegisterClient для регистрации в NMR.

[in] ProviderRegistrationInstance

Указатель на NPI_REGISTRATION_INSTANCE структура. Эта структура содержит регистрационные данные модуля поставщика.

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

Функция обратного вызова ClientAttachProvider клиентского модуля возвращает один из следующих кодов NTSTATUS:

Код возврата Описание
STATUS_SUCCESS
Клиентский модуль и модуль поставщика успешно подключены друг к другу.
STATUS_NOINTERFACE
Либо клиентский модуль не подключился к модулю поставщика, либо модуль поставщика не подключился к клиентскому модулю.
Другие коды состояния
Произошла ошибка.

Комментарии

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

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

Клиентский модуль может проверять данные регистрации модуля поставщика. Эти данные приведены в структуре, на которую указывает параметр ProviderRegistrationInstance . Клиентский модуль использует эти данные, чтобы определить, будет ли он подключаться к модулю поставщика:

  • Если клиентский модуль определяет, что он будет присоединен к модулю поставщика, функция обратного вызова ClientAttachProvider вызывает функцию NmrClientAttachProvider для продолжения процесса вложения. В этом случае функция обратного вызова ClientAttachProvider должна возвращать код состояния, возвращаемый вызовомФункция NmrClientAttachProvider.
  • Если клиентский модуль определяет, что он не будет подключаться к модулю поставщика, функция обратного вызова ClientAttachProvider должна возвращать STATUS_NOINTERFACE.
Если клиентский модуль успешно подключается к модулю поставщика, он должен сохранить дескриптор, указанный в параметре NmrBindingHandle . Клиентский модуль передает этот дескриптор в качестве параметра вФункция NmrClientDetachProviderComplete при отключении от модуля поставщика.

NMR вызывает функцию обратного вызова ClientAttachProvider клиентского модуля в IRQL = PASSIVE_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Windows
Header netioddk.h (включая Wsk.h)
IRQL PASSIVE_LEVEL

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

ClientDetachProvider

NPI_CLIENT_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrClientDetachProviderComplete

NmrRegisterClient