функция обратного вызова NPI_PROVIDER_ATTACH_CLIENT_FN (netioddk.h)
Функция обратного вызова модуля поставщика ProviderAttachClient подключает модуль поставщика к клиентскому модулю.
Синтаксис
NPI_PROVIDER_ATTACH_CLIENT_FN NpiProviderAttachClientFn;
NTSTATUS NpiProviderAttachClientFn(
[in] HANDLE NmrBindingHandle,
[in] PVOID ProviderContext,
[in] PNPI_REGISTRATION_INSTANCE ClientRegistrationInstance,
[in] PVOID ClientBindingContext,
[in] const VOID *ClientDispatch,
[out] PVOID *ProviderBindingContext,
[out] const VOID **ProviderDispatch
)
{...}
Параметры
[in] NmrBindingHandle
Дескриптор, используемый NMR для представления привязки между клиентским модулем и модулем поставщика.
[in] ProviderContext
Указатель на контекст регистрации модуля поставщика. Модуль поставщика передает этот указатель на NMR при вызове функции nmR NmrRegisterProvider для регистрации в NMR.
[in] ClientRegistrationInstance
Указатель на объект структура NPI_REGISTRATION_INSTANCE. Эта структура содержит данные регистрации клиентского модуля.
[in] ClientBindingContext
Указатель на контекст клиентского модуля для привязки между клиентским модулем и модулем поставщика. Клиентский модуль использует этот контекст для отслеживания состояния привязки. Содержимое контекста привязки клиентского модуля непрозрачно к модулю поставщика. Модуль поставщика передает этот указатель на клиентский модуль всякий раз, когда вызывает любой из NPI клиентского модуля функции обратного вызова, требующие контекста привязки клиентского модуля.
[in] ClientDispatch
Указатель на константную структуру, содержащую таблицу отправки NPI функции обратного вызова для клиентского модуля. Содержимое структуры зависит от NPI. Если NPI не определяет структуру таблицы диспетчеризации клиента, этот указатель null.
[out] ProviderBindingContext
Указатель на переменную, в которую модуль поставщика будет хранить указатель на его контекст для привязки между клиентским модулем и модулем поставщика. Модуль поставщика использует этот контекст для отслеживания состояния привязки. Содержимое контекста привязки модуля поставщика непрозрачно к клиентскому модулю. Клиентский модуль передает этот указатель на модуль поставщика при вызове одного из NPI модуля поставщика функций, требующих контекста привязки модуля поставщика. Модуль поставщика должен убедиться, что этот контекст остается допустимым и резидентным в памяти до тех пор, пока клиентский модуль подключен к модулю поставщика.
[out] ProviderDispatch
Указатель на переменную, в которую модуль поставщика будет хранить указатель на константную структуру, содержащую таблицу отправки NPI функций для модуля поставщика. Модуль поставщика должен убедиться, что эта структура остается допустимой и резидентной в памяти, пока клиентский модуль подключен к модулю поставщика. Содержимое структуры зависит от NPI.
Возвращаемое значение
Функция обратного вызова модуля поставщика ProviderAttachClient возвращает один из следующих кодов NTSTATUS:
Возвращаемый код | Описание |
---|---|
|
Модуль поставщика успешно подключен к клиентскому модулю. |
|
Модуль поставщика не подключился к клиентскому модулю. |
|
Произошла ошибка. |
Замечания
NMR вызывает функцию обратного вызова модуля поставщика ProviderAttachClient всякий раз, когда клиентский модуль вызывает функцию NmrClientAttachProvider с дескриптором, который представляет привязку между клиентским модулем и модулем поставщика.
Модуль поставщика может изучить данные регистрации клиентского модуля. Эти данные указываются на параметр ClientRegistrationInstance. Модуль поставщика использует эти данные для определения того, будет ли он присоединяться к клиентскому модулю:
- Если модуль поставщика определяет, что он будет подключаться к клиентскому модулю, то функция обратного вызова ProviderAttachClient должна выполнять следующие действия:
- Сохраните указатели, переданные в параметры ClientBindingContext и ClientDispatch, чтобы модуль поставщика мог вызывать функции N PI клиентского модуля.
- Сохраните дескриптор, переданный в параметре NmrBindingHandle. Модуль поставщика передает этот дескриптор в качестве параметра в функция NmrProviderDetachClientComplete при отключении от клиентского модуля.
- Задайте параметр ProviderBindingContext, чтобы указать структуру контекста привязки модуля поставщика для привязки между клиентским модулем и модулем поставщика.
- Задайте параметру ProviderDispatch указывать на структуру, содержащую таблицу отправки модуля поставщика функций NPI.
- Возврат STATUS_SUCCESS.
- Если модуль поставщика определяет, что он не будет подключаться к клиентскому модулю, функция обратного вызова ProviderAttachClient должна возвращать STATUS_NOINTERFACE.
NMR вызывает функцию обратного вызова модуля поставщика ProviderAttachClient в IRQL = PASSIVE_LEVEL.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
целевая платформа | Виндоус |
заголовка | netioddk.h (include Wsk.h) |
IRQL | PASSIVE_LEVEL |