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


Функция NmrClientAttachProvider (netioddk.h)

Функция NmrClientAttachProvider присоединяет клиентский модуль к модулю поставщика.

Синтаксис

NTSTATUS NmrClientAttachProvider(
  [in]  HANDLE                 NmrBindingHandle,
  [in]  __drv_aliasesMem PVOID ClientBindingContext,
  [in]  const VOID             *ClientDispatch,
  [out] PVOID                  *ProviderBindingContext,
  [out] const VOID             **ProviderDispatch
);

Параметры

[in] NmrBindingHandle

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

[in] ClientBindingContext

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

[in] ClientDispatch

Указатель на константную структуру, содержащую таблицу диспетчеризации функций обратного вызова NPI для клиентского модуля. Клиентский модуль должен убедиться, что эта структура остается действительной и находится в памяти до тех пор, пока модуль поставщика подключен к клиентскому модулю. Содержимое структуры зависит от NPI. Если NPI не определяет структуру таблицы диспетчеризации клиента, клиентский модуль должен задать для этого параметра значение NULL.

[out] ProviderBindingContext

Указатель на переменную, которая получает указатель на контекст модуля поставщика для привязки между клиентским модулем и модулем поставщика. Модуль поставщика использует этот контекст для отслеживания состояния привязки. Содержимое контекста привязки модуля поставщика непрозрачно для клиентского модуля. Клиентский модуль передает этот указатель модулю поставщика всякий раз, когда он вызывает любую из функций NPI модуля поставщика, для которых требуется контекст привязки модуля поставщика.

[out] ProviderDispatch

Указатель на переменную, получающую указатель на структуру, содержащую таблицу диспетчеризации
Функции NPI для модуля поставщика. Содержимое структуры зависит от NPI.

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

Функция NmrClientAttachProvider возвращает один из следующих кодов NTSTATUS:

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

Комментарии

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

Когда клиентский модуль вызывает функцию NmrClientAttachProvider , NMR вызывает функцию обратного вызова ProviderAttachClient модуля поставщика для завершения процесса вложения. Функция NmrClientAttachProvider возвращает код состояния, возвращаемый функцией обратного вызова ProviderAttachClient модуля поставщика.

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

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

Если функция NmrClientAttachProvider возвращает STATUS_SUCCESS, клиентский модуль должен сохранить указатели, возвращенные в параметрах ProviderBindingContext и ProviderDispatch , чтобы он мог вызывать функции NPI модуля поставщика.

Требования

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

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

ClientAttachProvider

ClientCleanupBindingContext

ProviderAttachClient