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