WskCaptureProviderNPI 函数 (wsk.h)

WskCaptureProviderNPI 函数捕获提供程序网络编程接口 (NPI) 从 WSK 子系统可用时。

语法

NTSTATUS WskCaptureProviderNPI(
  [in]  PWSK_REGISTRATION WskRegistration,
  [in]  ULONG             WaitTimeout,
  [out] PWSK_PROVIDER_NPI WskProviderNpi
);

参数

[in] WskRegistration

指向由 WskRegister 初始化的内存位置的指针,用于标识 WSK 应用程序的注册实例。 有关详细信息,请参阅 WSK_REGISTRATION

[in] WaitTimeout

WskCaptureProviderNPI 函数可以等待的时间(以毫秒为单位),直到 WSK 提供程序 NPI 可用。 或者,可以指定以下内容:

WSK_NO_WAIT

如果提供程序 NPI 不可用,请立即从此函数返回 。

WSK_INFINITE_WAIT

等到提供程序 NPI 可从 WSK 子系统获取。

有关如何使用此参数的详细信息,请参阅 注册 Winsock 内核应用程序

[out] WskProviderNpi

指向 WSK 提供程序返回的 NPI 的指针。 此 WSK_PROVIDER_NPI 结构包含指向 WSK 应用程序可以调用的 WSK 函数的 WSK 提供程序调度表的指针。

返回值

WskCaptureProviderNPI 返回以下 NTSTATUS 代码之一:

返回代码 说明
STATUS_SUCCESS
提供程序 NPI 捕获已成功完成。
STATUS_DEVICE_NOT_READY
提供程序 NPI 尚不可用。
STATUS_NOINTERFACE
WSK 子系统不支持 WSK 客户端请求的版本。
其他状态代码
提供程序 NPI 捕获失败。

注解

对于每次调用返回成功代码的 WskCaptureProviderNPI,必须恰好有一个对应的 WskReleaseProviderNPI 调用使用传递给 WskCaptureProviderNPI 的相同 WskRegistration 参数。

只有在 WskRegistration 块未释放或覆盖的情况下,才能在调用 WskDeregister 后调用 WskCaptureProviderNPI。 调用 WskDeregister 后,对 WskCaptureProviderNPI 的任何进一步调用都将失败,状态代码STATUS_DEVICE_NOT_READY,并且,除非提供程序 NPI 同时可用,否则在等待 WSK 提供程序 NPI 变为可用的其他线程中阻止的任何现有 WskCaptureProviderNPI 调用也将立即返回,状态代码STATUS_DEVICE_NOT_READY。

有关将 WSK 应用程序附加到 WSK 子系统的详细信息,请参阅 注册 Winsock 内核应用程序

如果 WaitTimeout 未设置为 WSK_NO_WAIT,WskCaptureProviderNPI 函数的调用方必须在 IRQL = PASSIVE_LEVEL 运行;否则,调用方必须在 IRQL <= DISPATCH_LEVEL 运行。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 wsk.h (包括 Wsk.h)
Library Netio.lib
IRQL PASSIVE_LEVEL (请参阅备注部分)

另请参阅

WskDeregister

WskRegister

WskReleaseProviderNPI