NmrRegisterProvider 函数向 NMR 注册提供程序模块。
语法
NTSTATUS NmrRegisterProvider(
[in] PNPI_PROVIDER_CHARACTERISTICS ProviderCharacteristics,
[in] __drv_aliasesMem PVOID ProviderContext,
[out] PHANDLE NmrProviderHandle
);
参数
[in] ProviderCharacteristics
指向描述提供程序模块特征的 NPI_PROVIDER_CHARACTERISTICS 结构。 只要提供程序模块注册到 NMR,提供程序模块必须确保此结构保持有效且驻留在内存中。
[in] ProviderContext
指向注册的调用方提供的上下文的指针。 提供程序模块使用此上下文跟踪提供程序注册的状态。 提供程序模块的注册上下文的内容对 NMR 不透明。 每当它调用提供程序模块的 ProviderAttachClient 回调函数时,NMR 都会将此指针传递给提供程序模块。 只要提供程序模块注册到 NMR,提供程序模块必须确保此上下文保持有效且驻留在内存中。
[out] NmrProviderHandle
指向接收 NMR 用来表示提供程序模块注册的句柄的变量的指针。 提供程序模块必须保存此句柄,并将其作为参数传递给 NmrDeregisterProvider 函数(从 NMR 取消注册)。
返回值
NmrRegisterProvider 函数返回以下 NTSTATUS 代码之一:
| 返回代码 | 描述 |
|---|---|
|
NMR 已成功注册提供程序模块。 |
|
NMR 没有足够的系统资源来注册提供程序模块。 |
|
发生错误。 |
言论
提供程序模块调用 NmrRegisterProvider 函数以注册为 NPI 提供程序,以便它可以附加到注册为同一 NPI 客户端的客户端模块。
提供程序模块通常在完成所有其他初始化任务后,从其 DriverEntry 函数调用 NmrRegisterProvider 函数。 对 NmrRegisterProvider 函数的调用向 NMR 指示提供程序模块已准备好附加到已注册的任何客户端模块,或者将注册为提供程序模块注册为提供程序模块的相同 NPI 的客户端。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
| 目标平台 | 桌面 |
| 标头 | netioddk.h (包括 Wsk.h) |
| 库 | Netio.lib |
| IRQL | PASSIVE_LEVEL |