NPI_PROVIDER_DETACH_CLIENT_FN回调函数 (netioddk.h)

提供程序模块的 ProviderDetachClient 回调函数将提供程序模块与客户端模块分离。

语法

NPI_PROVIDER_DETACH_CLIENT_FN NpiProviderDetachClientFn;

NTSTATUS NpiProviderDetachClientFn(
  [in] PVOID ProviderBindingContext
)
{...}

参数

[in] ProviderBindingContext

指向提供程序模块上下文的指针,用于提供程序模块与要从中分离的客户端模块之间的绑定。 提供程序模块的 ProviderAttachClient 回调函数在附加到客户端模块时返回指向 NMR 的此指针。

返回值

提供程序模块的 ProviderDetachClient 回调函数返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS
提供程序模块已成功从客户端模块分离。
STATUS_PENDING
提供程序模块无法立即从客户端模块分离。

注解

每当提供程序模块与客户端模块之间的绑定需要终止时,NMR 都会调用提供程序模块的 ProviderDetachClient 回调函数。 分离由调用 NmrDeregisterClient 函数的客户端模块或调用 NmrDeregisterProvider 函数的提供程序模块启动。

调用其 ProviderDetachClient 回调函数后,提供程序模块不应再调用客户端模块的任何 NPI 回调函数。 如果在调用提供程序模块的 ProviderDetachClient 回调函数时,客户端模块的任何 NPI 回调函数都没有正在进行的调用,则提供程序模块的 ProviderDetachClient 回调函数将返回STATUS_SUCCESS。

如果在调用提供程序模块的 ProviderDetachClient 回调函数时,对客户端模块的一个或多个 NPI 回调函数进行正在进行的调用,则提供程序模块的 ProviderDetachClient 回调函数将返回STATUS_PENDING。 在这种情况下,提供程序模块必须调用完成对客户端模块 NPI 回调函数的所有正在进行的调用后,NmrProviderDetachClientComplete 函数。 对 的调用 NmrProviderDetachClientComplete 函数通知 NMR 从客户端模块分离已完成。

NMR 调用客户端模块的 ClientCleanupBindingContext 回调函数和提供程序模块的客户端模块和提供程序模块完成彼此分离之后的 ProviderCleanupBindingContext 回调函数。

NMR 在任意 IRQL <= DISPATCH_LEVEL调用提供程序模块的 ProviderDetachClient 回调函数。

要求

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

另请参阅

ClientCleanupBindingContext

NPI_PROVIDER_CHARACTERISTICS

NmrDeregisterClient

NmrDeregisterProvider

NmrProviderDetachClientComplete

ProviderAttachClient

ProviderCleanupBindingContext