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 に配置された完了後にプロバイダーがホスト CPU の中断を延期できる最大マイクロ秒数は、arm 要求を満たします。 ModerationInterval が 0 の場合、ModerationCount パラメーターの値に関係なく、プロバイダーは CQ に割り込みモデレーションを実行しません。 ModerationInterval が MAXULONG の場合、ModerationCount は CQ の割り込みモデレーションを制御します。 ModerationInterval がアダプターでサポートされている最大モデレーション間隔より大きい場合、またはアダプターのタイマーの粒度が大きい場合、プロバイダーは間隔の値を切り捨てることができます。

[in] ModerationCount

プロバイダーが CQ arm 要求を満たすためにホスト CPU を中断する前に CQ に蓄積できる完了の最大数。 ModerationInterval が 0 または 1 の場合、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