NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION回调函数 (ndkpi.h)

NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) 函数控制 NDK 完成队列 (CQ) 的中断审查。

有关中断审查的详细信息,请参阅 中断审查

语法

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;

NTSTATUS NdkFnControlCqInterruptModeration(
  [in] NDK_CQ *pNdkCq,
  [in] ULONG ModerationInterval,
  [in] ULONG ModerationCount
)
{...}

参数

[in] pNdkCq

指向 NDK 完成队列对象的指针 (NDK_CQ) 。

[in] ModerationInterval

在 CQ 中的完成满足 arm 请求后,提供程序可以延迟中断主机 CPU 的最大微秒数。 如果 ModerationInterval 为零,则无论 ModerationCount 参数的值如何,提供程序都不对 CQ 执行中断审查。 如果 ModerationInterval 为 MAXULONG,则 ModerationCount 控制 CQ 上的中断审查。 如果 ModerationInterval 大于适配器支持的最大审查间隔,或者适配器的计时器粒度更大,则提供程序可以向下舍入间隔值。

[in] ModerationCount

在中断主机 CPU 以满足 CQ arm 请求之前,提供程序可以在 CQ 中累积的最大完成次数。 如果 ModerationInterval 为零或一,则无论 ModerationInterval 参数的值如何,提供程序都不对 CQ 执行中断审查。 如果 ModerationCount 是 MAXULONG 或大于 CQ 的深度, 则 ModerationInterval 控制 CQ 上的中断审查。

返回值

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION 函数返回以下 NTSTATUS 代码之一。

返回代码 说明
STATUS_SUCCESS
操作已成功完成。
STATUS_INSUFFICIENT_RESOURCES
由于资源不足,请求失败。
STATUS_NOT_SUPPORTED
NDK 提供程序不支持使用 NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION 进行 CQ 中断审查控制。 在 NDK_ADAPTER_INFO 结构的 AdapterFlags 成员中设置NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT标志的提供程序不得返回此状态代码。
STATUS_INVALID_PARAMETER_MIX
NDK 使用者为 ModerationInterval 和 MAXULONG 提供了 MAXULONG 或大于 CQ 可以同时为 ModerationCount 保留的完成项数的值。
其他状态代码
出现了错误。

注解

除非提供程序在 NDK_ADAPTER_INFO 结构的 AdapterFlags 成员中设置NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED标志,否则 NDK 使用者不得调用 NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION。 对于设置NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED标志的提供程序,NDK 使用者可以在创建 CQ 后随时调用此函数。 CQ 的默认行为不是中断审查。 NDK 使用者不得在同一 CQ 上同时调用此函数。

NDK 使用者不得为 ModerationInterval 和 MAXULONG 指定 MAXULONG,也不能指定大于 CQ 可以同时为 ModerationCount 保留 (CqDepth) 完成项数的值。 否则,提供程序将返回STATUS_INVALID_PARAMETER_MIX。

NDK 使用者可以多次调用 NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION 。 提供程序在从此函数返回之前可能不会应用设置。 但是,提供程序不得无限期延迟设置的应用。 如果使用者在提供程序尚未应用以前调用函数的设置时发出对此函数的另一次调用,则提供程序必须尽快使最近提供的设置生效。 也就是说,提供程序必须取消以前设置的应用程序并应用新设置,或者等待以前设置的应用程序完成并应用新设置。

指示支持使用NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED标志进行中断审查的提供程序通常必须成功处理 NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION 并返回STATUS_SUCCESS。 但是,由于资源短缺(例如内存分配失败),提供程序可能会使请求失败。 在这种情况下,提供程序必须返回STATUS_INSUFFICIENT_RESOURCES。 提供程序无法从此函数返回STATUS_PENDING。 不表示支持具有 NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED 标志的此函数的提供程序仍必须实现此函数。 在这种情况下,此函数必须返回STATUS_NOT_SUPPORTED。

要求

要求
最低受支持的客户端 不支持,NDIS 6.30 及更高版本支持。
最低受支持的服务器 Windows Server 2012
目标平台 Windows
标头 ndkpi.h (包括 Ndkpi.h)
IRQL <=DISPATCH_LEVEL

另请参阅

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH