Функция 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:
Код возврата | Описание |
---|---|
|
Клиентский модуль успешно подключен к модулю поставщика. |
|
Модуль поставщика не подключился к клиентскому модулю. |
|
Произошла ошибка. |
Комментарии
Клиентский модуль вызывает функцию 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 |