NPI_PROVIDER_ATTACH_CLIENT_FN función de devolución de llamada (netioddk.h)
La función de devolución de llamada ProviderAttachClient de un módulo de proveedor adjunta el módulo de proveedor a un módulo cliente.
Sintaxis
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
)
{...}
Parámetros
[in] NmrBindingHandle
Identificador utilizado por el NMR para representar el enlace entre el módulo cliente y el módulo de proveedor.
[in] ProviderContext
Puntero al contexto de registro del módulo de proveedor. El módulo de proveedor pasa este puntero al NMR cuando llama a la función NmrRegisterProvider para registrarse con el NMR.
[in] ClientRegistrationInstance
Puntero a un NPI_REGISTRATION_INSTANCE estructura. Esta estructura contiene los datos de registro del módulo cliente.
[in] ClientBindingContext
Puntero al contexto del módulo cliente para el enlace entre el módulo cliente y el módulo de proveedor. El módulo cliente usa este contexto para realizar un seguimiento del estado del enlace. El contenido del contexto de enlace del módulo cliente es opaco para el módulo del proveedor. El módulo de proveedor pasa este puntero al módulo cliente cada vez que llama a cualquiera de las funciones de devolución de llamada NPI del módulo cliente que requieren el contexto de enlace del módulo cliente.
[in] ClientDispatch
Puntero a una estructura constante que contiene la tabla de distribución de funciones de devolución de llamada NPI para el módulo cliente. El contenido de la estructura es específico de NPI. Si el NPI no define una estructura de tabla de distribución de cliente, este puntero es NULL.
[out] ProviderBindingContext
Puntero a una variable en la que el módulo de proveedor almacenará un puntero a su contexto para el enlace entre el módulo cliente y el módulo de proveedor. El módulo de proveedor usa este contexto para realizar un seguimiento del estado del enlace. El contenido del contexto de enlace del módulo de proveedor es opaco para el módulo cliente. El módulo cliente pasa este puntero al módulo de proveedor cada vez que llama a una de las funciones NPI del módulo del proveedor que requieren el contexto de enlace del módulo del proveedor. El módulo de proveedor debe asegurarse de que este contexto siga siendo válido y resida en la memoria siempre y cuando el módulo cliente esté asociado al módulo de proveedor.
[out] ProviderDispatch
Puntero a una variable en la que el módulo de proveedor almacenará un puntero a una estructura constante que contiene la tabla de distribución de funciones NPI para el módulo de proveedor. El módulo de proveedor debe asegurarse de que esta estructura sigue siendo válida y residente en la memoria siempre y cuando el módulo cliente esté asociado al módulo de proveedor. El contenido de la estructura es específico de NPI.
Valor devuelto
La función de devolución de llamada ProviderAttachClient de un módulo de proveedor devuelve uno de los siguientes códigos NTSTATUS:
Código devuelto | Descripción |
---|---|
|
El módulo de proveedor se adjuntó correctamente al módulo cliente. |
|
El módulo de proveedor no se adjuntó al módulo cliente. |
|
Se produjo un error. |
Comentarios
NmR llama a la función de devolución de llamada ProviderAttachClient de un módulo de proveedor cada vez que un módulo cliente llama a la función NmrClientAttachProvider con un identificador que representa un enlace entre el módulo cliente y el módulo de proveedor.
Un módulo de proveedor puede examinar los datos de registro del módulo cliente. Estos datos están en la estructura a la que apunta el parámetro ClientRegistrationInstance . El módulo de proveedor usa estos datos para determinar si se asociará al módulo cliente:
- Si el módulo de proveedor determina que se asociará al módulo cliente, la función de devolución de llamada ProviderAttachClient debe hacer lo siguiente:
- Guarde los punteros pasados en los parámetros ClientBindingContext y ClientDispatch para que el módulo de proveedor pueda realizar llamadas a las funciones NPI del módulo cliente.
- Guarde el identificador pasado en el parámetro NmrBindingHandle . El módulo de proveedor pasa este identificador como un parámetro al Función NmrProviderDetachClientComplete cuando se desasocia del módulo cliente.
- Establezca el parámetro ProviderBindingContext para que apunte a la estructura de contexto de enlace del módulo de proveedor para el enlace entre el módulo cliente y el módulo de proveedor.
- Establezca el parámetro ProviderDispatch para que apunte a una estructura que contiene la tabla de distribución del módulo de proveedor de funciones NPI .
- Devuelve STATUS_SUCCESS.
- Si el módulo de proveedor determina que no se asociará al módulo cliente, la función de devolución de llamada ProviderAttachClient debe devolver STATUS_NOINTERFACE.
NmR llama a la función de devolución de llamada ProviderAttachClient del módulo de proveedor en IRQL = PASSIVE_LEVEL.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Windows |
Encabezado | netioddk.h (incluya Wsk.h) |
IRQL | PASSIVE_LEVEL |