NPI_CLIENT_ATTACH_PROVIDER_FN回调函数 (netioddk.h)

客户端模块的 ClientAttachProvider 回调函数将客户端模块附加到提供程序模块。

语法

NPI_CLIENT_ATTACH_PROVIDER_FN NpiClientAttachProviderFn;

NTSTATUS NpiClientAttachProviderFn(
  [in] HANDLE NmrBindingHandle,
  [in] PVOID ClientContext,
  [in] PNPI_REGISTRATION_INSTANCE ProviderRegistrationInstance
)
{...}

参数

[in] NmrBindingHandle

NMR 用于表示客户端模块与提供程序模块之间的绑定的句柄。

[in] ClientContext

指向客户端模块的注册上下文的指针。 客户端模块在调用 NmrRegisterClient 函数以将自身注册到 NMR 时,会将此指针传递到 NMR。

[in] ProviderRegistrationInstance

指向 的指针 NPI_REGISTRATION_INSTANCE 结构。 此结构包含提供程序模块的注册数据。

返回值

客户端模块的 ClientAttachProvider 回调函数返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS
客户端模块和提供程序模块已成功相互附加。
STATUS_NOINTERFACE
客户端模块未附加到提供程序模块,或者提供程序模块未附加到客户端模块。
其他状态代码
出现了错误。

注解

客户端模块注册到 NMR 后,NMR 将调用客户端模块的 ClientAttachProvider 回调函数,针对注册为客户端模块已注册为客户端的同一 NPI 提供程序的每个提供程序模块调用一次。

每当新的网络模块注册为客户端模块注册为客户端的同一 NPI 的提供程序时,NMR 还会调用客户端模块的 ClientAttachProvider 回调函数。

客户端模块可以检查提供程序模块的注册数据。 此数据位于 ProviderRegistrationInstance 参数指向的结构中。 客户端模块使用此数据确定是否将附加到提供程序模块:

  • 如果客户端模块确定将附加到提供程序模块,则 ClientAttachProvider 回调函数调用 NmrClientAttachProvider 函数以继续附件过程。 在这种情况下, ClientAttachProvider 回调函数必须返回由调用 返回的状态代码 NmrClientAttachProvider 函数。
  • 如果客户端模块确定不会附加到提供程序模块,则 ClientAttachProvider 回调函数必须返回STATUS_NOINTERFACE。
如果客户端模块成功附加到提供程序模块,则必须保存 NmrBindingHandle 参数中提供的句柄。 客户端模块将此句柄作为参数传递给 NmrClientDetachProviderComplete 函数与提供程序模块分离时。

NMR 在 IRQL = PASSIVE_LEVEL 调用客户端模块的 ClientAttachProvider 回调函数。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 Windows
标头 netioddk.h (包括 Wsk.h)
IRQL PASSIVE_LEVEL

另请参阅

ClientDetachProvider

NPI_CLIENT_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrClientDetachProviderComplete

NmrRegisterClient