提供程序模块的 ProviderDetachClient 回调函数将提供程序模块与客户端模块分离。
语法
NPI_PROVIDER_DETACH_CLIENT_FN NpiProviderDetachClientFn;
NTSTATUS NpiProviderDetachClientFn(
[in] PVOID ProviderBindingContext
)
{...}
参数
[in] ProviderBindingContext
指向提供程序模块上下文的指针,用于在提供程序模块与要从中分离的客户端模块之间的绑定。 提供程序模块的 ProviderAttachClient 回调函数在附加到客户端模块时返回指向 NMR 的指针。
返回值
提供程序模块的 ProviderDetachClient 回调函数返回以下 NTSTATUS 代码之一:
返回代码 | 描述 |
---|---|
|
提供程序模块已成功从客户端模块分离。 |
|
提供程序模块无法立即从客户端模块分离。 |
言论
每当提供程序模块和客户端模块之间的绑定需要终止时,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 |