NmrDeregisterProvider 函数 (netioddk.h)

NmrDeregisterProvider 函数从 NMR 取消注册提供程序模块。

语法

NTSTATUS NmrDeregisterProvider(
  [in] HANDLE NmrProviderHandle
);

参数

[in] NmrProviderHandle

NMR 用来表示提供程序模块注册的句柄。 当提供程序模块调用 NmrRegisterProvider 函数时,NMR 会将此句柄返回到提供程序模块。

返回值

NmrDeregisterProvider 函数返回以下 NTSTATUS 代码之一:

返回代码 描述
STATUS_PENDING
NMR 启动了提供程序模块的注销。 提供程序模块必须调用 NmrWaitForProviderDeregisterComplete 函数等待取消注册完成,然后才能卸载提供程序模块。
其他状态代码
发生错误。

言论

当提供程序模块调用 NmrDeregisterProvider 函数时,NMR 将调用提供程序模块的 ProviderDetachClient 回调函数以及客户端模块 ClientDetachProvider 提供程序模块与客户端模块之间的每个绑定的回调函数。 从 NMR 取消注册提供程序模块后,提供程序模块已成功从附加的所有客户端模块分离,并且所有这些客户端模块都已成功从提供程序模块分离。

提供程序模块通常从其 Unload 函数调用 NmrDeregisterProvider 函数,以从系统卸载提供程序模块之前将其附加到的所有客户端模块分离。 调用 NmrDeregisterProvider 函数后,提供程序模块必须调用 NmrWaitForProviderDeregisterComplete 函数等待取消注册完成,然后才能卸载提供程序模块。 在取消注册完成之前,提供程序模块不得从对其 Unload 函数的调用返回。

注意 如果提供程序模块使用 Windows 驱动程序框架,它通常会调用 NmrDeregisterProvider 从其 EvtDriverUnload 事件回调函数 函数。 在这种情况下,在取消注册完成之前,提供程序模块不得从对其 EvtDriverUnload 函数的调用返回。
 

要求

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

另请参阅

ClientDetachProvider

EvtDriverUnload

NmrRegisterProvider

NmrWaitForProviderDeregisterComplete

ProviderDetachClient

卸载