NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION Rückruffunktion (ndkpi.h)
Die Funktion NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) steuert die Unterbrechungsmoderation für eine NDK-Vervollständigungswarteschlange (CQ).
Weitere Informationen zur Interruptmoderation finden Sie unter InterruptModeration.
Syntax
NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;
NTSTATUS NdkFnControlCqInterruptModeration(
[in] NDK_CQ *pNdkCq,
[in] ULONG ModerationInterval,
[in] ULONG ModerationCount
)
{...}
Parameter
[in] pNdkCq
Ein Zeiger auf ein NDK-Vervollständigungswarteschlangenobjekt (NDK_CQ).
[in] ModerationInterval
Die maximale Anzahl von Mikrosekunden, die ein Anbieter die Unterbrechung der Host-CPU nach einer im CQ platzierten Vervollständigung zurückstellen kann, erfüllt eine Armanforderung. Wenn ModerationInterval 0 ist, führt der Anbieter keine Unterbrechungsmoderation für den CQ aus, unabhängig vom Wert des ModerationCount-Parameters . Wenn ModerationInterval MAXULONG ist, steuert ModerationCount die Interruptmoderation für den CQ. Wenn ModerationInterval größer als das vom Adapter unterstützte maximale Moderationsintervall ist oder die Timergranularität des Adapters größer ist, kann der Anbieter den Intervallwert abrunden.
[in] ModerationCount
Die maximale Anzahl von Vervollständigungen, die ein Anbieter im CQ akkumulieren kann, bevor die Host-CPU unterbrochen wird, um eine CQ-Armanforderung zu erfüllen. Wenn ModerationInterval null oder 1 ist, führt der Anbieter keine Unterbrechungsmoderation für den CQ aus, unabhängig vom Wert des ModerationInterval-Parameters . Wenn ModerationCount MAXULONG oder größer als die Tiefe des CQ ist, steuert ModerationInterval die Interruptmoderation für das CQ.
Rückgabewert
Die NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Der Vorgang wurde erfolgreich abgeschlossen. |
|
Fehler bei der Anforderung aufgrund unzureichender Ressourcen. |
|
Der NDK-Anbieter unterstützt keine CQ-Unterbrechungsmoderationssteuerung mit NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Ein Anbieter, der das NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT-Flag im AdapterFlags-Member der NDK_ADAPTER_INFO-Struktur festlegt, darf diesen status Code nicht zurückgeben. |
|
Der NDK-Consumer hat einen MAXULONG für ModerationInterval und MAXULONG oder einen Wert bereitgestellt, der größer als die Anzahl der Vervollständigungseinträge ist, die der CQ gleichzeitig für ModerationCount enthalten kann. |
|
Ein Fehler ist aufgetreten. |
Hinweise
NDK-Consumer dürfen NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION nicht aufrufen, es sei denn, der Anbieter legt das NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED-Flag im AdapterFlags-Member der NDK_ADAPTER_INFO-Struktur fest. Bei einem Anbieter, der das NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED-Flag festlegt, kann der NDK-Consumer diese Funktion jederzeit aufrufen, nachdem ein CQ erstellt wurde. Das Standardverhalten für einen CQ ist keine Unterbrechungsmoderation. Der NDK-Consumer darf diese Funktion nicht gleichzeitig für dieselbe CQ aufrufen.
Der NDK-Consumer darf keinen MAXULONG für ModerationInterval und MAXULONG oder einen Wert angeben, der größer als die Anzahl der Vervollständigungseinträge ist, die der CQ (CqDepth) für ModerationCount gleichzeitig enthalten kann. Andernfalls gibt der Anbieter STATUS_INVALID_PARAMETER_MIX zurück.
Der NDK-Consumer kann NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION mehrmals aufrufen. Möglicherweise wendet ein Anbieter die Einstellungen nicht an, bevor er von dieser Funktion zurückgibt. Der Anbieter darf die Anwendung der Einstellungen jedoch nicht auf unbestimmte Zeit verzögern. Wenn der Consumer einen weiteren Aufruf dieser Funktion ausgibt, während der Anbieter die Einstellungen aus einem vorherigen Aufruf der Funktion noch nicht angewendet hat, muss der Anbieter die zuletzt bereitgestellten Einstellungen so schnell wie möglich wirksam machen. Das heißt, entweder muss der Anbieter die Anwendung der vorherigen Einstellungen abbrechen und die neuen Einstellungen anwenden, oder warten, bis die Anwendung der vorherigen Einstellungen abgeschlossen und die neuen Einstellungen angewendet wird.
Anbieter, die die Unterstützung für die Unterbrechungsmoderation mit dem NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED-Flag angeben, müssen normalerweise NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION erfolgreich verarbeiten und STATUS_SUCCESS zurückgeben. Ein Anbieter kann die Anforderung jedoch aufgrund eines Ressourcenmangels, z. B. eines Fehlers bei der Speicherzuordnung, fehlschlagen. In diesem Fall muss der Anbieter STATUS_INSUFFICIENT_RESOURCES zurückgeben. Anbieter können von dieser Funktion keine STATUS_PENDING zurückgeben. Anbieter, die die Unterstützung für diese Funktion nicht mit dem NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED-Flag angeben, müssen diese Funktion weiterhin implementieren. In diesem Fall muss diese Funktion STATUS_NOT_SUPPORTED zurückgeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Keine unterstützt, wird in NDIS 6.30 und höher unterstützt. |
Unterstützte Mindestversion (Server) | Windows Server 2012 |
Zielplattform | Windows |
Kopfzeile | ndkpi.h (include Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |