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 が 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 コードのいずれかを返します。
リターン コード | 形容 |
---|---|
|
操作が正常に完了しました。 |
|
リソースが不足しているため、要求が失敗しました。 |
|
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、または ModerationCount に対して CQ が保持できる完了エントリの数 (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 |