NPI_CLIENT_DETACH_PROVIDER_FN回调函数 (netioddk.h)

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

语法

NPI_CLIENT_DETACH_PROVIDER_FN NpiClientDetachProviderFn;

NTSTATUS NpiClientDetachProviderFn(
  [in] PVOID ClientBindingContext
)
{...}

参数

[in] ClientBindingContext

指向客户端模块与要从中分离的提供程序模块之间的绑定的客户端模块上下文的指针。 客户端模块在调用 NmrClientAttachProvider 函数以附加到提供程序模块时将此指针传递给 NMR。

返回值

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

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

言论

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

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

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

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

NMR 在任何 IRQL <= DISPATCH_LEVEL处调用客户端模块的 ClientDetachProvider 回调函数。

要求

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

另请参阅

ClientCleanupBindingContext

NPI_CLIENT_CHARACTERISTICS

NmrClientAttachProvider

NmrClientDetachProviderComplete

NmrDeregisterClient

NmrDeregisterProvider

ProviderCleanupBindingContext