Функция 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 передает этот дескриптор клиентскому модулю при вызове функции обратного вызова клиента ClientAttachProvid er.
[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, чтобы он мог вызывать функции N PI модуля поставщика.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
целевая платформа | Настольный |
заголовка | netioddk.h (include Wsk.h) |
библиотеки | Netio.lib |
IRQL | PASSIVE_LEVEL |