Freigeben über


PO_FX_POWER_CONTROL_CALLBACK Rückruffunktion (wdm.h)

Die PowerControlCallback Callback-Routine führt einen Stromsteuerungsvorgang aus, der vom Power Management Framework (PoFx) angefordert wird.

Syntax

PO_FX_POWER_CONTROL_CALLBACK PoFxPowerControlCallback;

NTSTATUS PoFxPowerControlCallback(
                  PVOID DeviceContext,
  [in]            LPCGUID PowerControlCode,
  [in, optional]  PVOID InBuffer,
  [in]            SIZE_T InBufferSize,
  [out, optional] PVOID OutBuffer,
  [in]            SIZE_T OutBufferSize,
  [out, optional] PSIZE_T BytesReturned
)
{...}

Parameter

DeviceContext

[in] PowerControlCode

Ein Zeiger auf den Energiesteuerungscode. Dieser Code ist ein GUID-Wert, der den angeforderten Vorgang angibt.

[in, optional] InBuffer

Ein Zeiger auf den Puffer, der die Eingabedaten für den Vorgang enthält. Das Format für die Daten in diesem Puffer hängt von dem vom PowerControlCode Parameter angegebenen Energiesteuerungscode ab. Der InBuffer Parameter ist optional und kann als NULL angegeben werden, wenn für den angegebenen Vorgang keine Eingabedaten erforderlich sind.

[in] InBufferSize

Die Größe des Eingabepuffers in Bytes, auf den der InBuffer-Parameter verweist. Wenn InBuffer- NULL ist, ist dieser Parameter null.

[out, optional] OutBuffer

Ein Zeiger auf den Puffer, in den die Rückrufroutine die Ausgabedaten aus dem Vorgang schreibt. Das Format für die Daten in diesem Puffer hängt von dem vom PowerControlCode Parameter angegebenen Energiesteuerungscode ab. Der OutBuffer Parameter ist optional und kann als NULL angegeben werden, wenn der angegebene Vorgang keine Ausgabedaten erzeugt.

[in] OutBufferSize

Die Größe des Ausgabepuffers in Bytes, auf den der OutBuffer-Parameter verweist. Wenn OutBuffer- NULL ist, ist dieser Parameter null.

[out, optional] BytesReturned

Ein Zeiger auf eine Position, in die die Routine die Anzahl der Daten schreibt, die in den Puffer geschrieben wurden, auf den OutBuffer-verweist. Die Anzahl der geschriebenen Bytes muss kleiner oder gleich OutBufferSizesein. Dieser Parameter ist optional und kann als NULL angegeben werden, wenn der Aufrufer nicht wissen muss, wie viele Bytes in den Ausgabepuffer geschrieben wurden.

Rückgabewert

Die PowerControlCallback Routine gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.

Bemerkungen

PoFx ruft diese Routine auf, um eine Energiesteuerungsanforderung direkt an den Gerätetreiber zu senden. Eine Energiesteuerungsanforderung ähnelt einer E/A-Steuerungsanforderung (IOCTL). Im Gegensatz zu einer IOCTL wird jedoch eine Leistungssteuerungsanforderung direkt an den Treiber gesendet und wird von anderen Gerätetreibern im Gerätestapel nicht beobachtet. Während eines PowerControlCallback- Aufrufs führt der Treiber synchron den angeforderten Vorgang aus.

Diese Routine ist optional. Ein Gerätetreiber, der keine Energiesteuerungsvorgänge unterstützt, ist nicht erforderlich, um eine PowerControlCallback Routine zu implementieren.

Der Gerätetreiber kann die PoFxPowerControl Routine aufrufen, um eine Energiesteuerungsanforderung an PoFx zu senden.

Weitere Informationen zu Leistungssteuerungsanforderungen finden Sie unter PoFxPowerControl.

Beispiele

Um eine PowerControlCallback- Rückrufroutine zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine PowerControlCallback- Rückrufroutine zu definieren, die MyPowerControlCallbackbenannt ist, verwenden Sie den PO_FX_POWER_CONTROL_CALLBACK Typ, wie in diesem Codebeispiel gezeigt:

PO_FX_POWER_CONTROL_CALLBACK MyPowerControlCallback;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
NTSTATUS
  MyPowerControlCallback(
    PVOID Context,
    LPCGUID PowerControlCode,
    PVOID InBuffer,
    SIZE_T InBufferSize,
    PVOID OutBuffer,
    SIZE_T OutBufferSize,
    PSIZE_T BytesReturned
    )
  {
      // Function body
  }

Der PO_FX_POWER_CONTROL_CALLBACK Funktionstyp wird in der Wdm.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die _Use_decl_annotations_ Anmerkung hinzufügen. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen, die auf den PO_FX_POWER_CONTROL_CALLBACK Funktionstyp in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber. Informationen zu _Use_decl_annotations_finden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 8 unterstützt.
Zielplattform- Desktop
Header- wdm.h (include Wudfwdm.h)
IRQL- Wird bei IRQL <= DISPATCH_LEVEL aufgerufen.

Siehe auch

PO_FX_DEVICE

PoFxPowerControl-