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 为零,则提供程序不会对 CQ 执行中断审查,而不考虑 ModerationCount 参数的值。 如果 ModerationInterval 为 MAXULONG,则 ModerationCount 控制 CQ 上的中断审查。 如果 ModerationInterval 大于适配器支持的最大审查间隔,或者适配器的计时器粒度较大,则提供程序可以向下舍入间隔值。
[in] ModerationCount
提供程序在中断主机 CPU 以满足 CQ arm 请求之前,可以在 CQ 中累积的最大完成次数。 如果 ModerationInterval 为零或 1,则提供程序不会对 CQ 执行中断审查,而不考虑 ModerationInterval 参数的值。 如果 ModerationCount 大于 CQ 的深度,ModerationInterval 控制 CQ 上的中断审查。
返回值
NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION 函数返回以下 NTSTATUS 代码之一。
返回代码 | 描述 |
---|---|
|
作已成功完成。 |
|
请求由于资源不足而失败。 |
|
NDK 提供程序不支持使用 NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION进行 CQ 中断审查控制。 在 NDK_ADAPTER_INFO 结构的 AdapterFlags 成员中设置NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT标志的提供程序不得返回此状态代码。 |
|
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 |
目标平台 | 窗户 |
标头 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |