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作系统中可用。
目标平台 窗户
标头 netioddk.h (包括 Wsk.h)
IRQL PASSIVE_LEVEL

另请参阅

ClientDetachProvider

NPI_CLIENT_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrClientDetachProviderComplete

NmrRegisterClient