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 处调用提供程序模块的 < 回调函数。

要求

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

另请参阅

ClientCleanupBindingContext

NPI_PROVIDER_CHARACTERISTICS

NmrDeregisterClient

NmrDeregisterProvider

NmrProviderDetachClientComplete

ProviderAttachClient

ProviderCleanupBindingContext