Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die StopIdle--Methode informiert das Framework darüber, dass das Gerät in den Betriebszustand (D0) versetzt werden muss.
Syntax
HRESULT StopIdle(
[in] BOOL WaitForD0
);
Parameter
[in] WaitForD0
Ein boolescher Wert, der angibt, wann StopIdle- zurückgegeben wird. Wenn TRUE-, wird sie erst zurückgegeben, nachdem das angegebene Gerät den D0-Gerätestromzustand eingibt. Wenn FALSE-, wird die Methode sofort zurückgegeben.
Rückgabewert
StopIdle- gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der aufrufende Treiber ist nicht der Besitzer der Energierichtlinie. |
|
Das Gerät kehrte bereits in den Arbeitszustand zurück. |
|
Ein Geräteausfall ist aufgetreten, und das Gerät kann seinen D0-Energiezustand nicht eingeben. |
Diese Methode gibt möglicherweise einen der anderen Werte zurück, die Winerror.h enthält.
Bemerkungen
Wenn Ihr Gerät in den Leerlaufmodus wechselt, muss Ihr Treiber gelegentlich StopIdle- aufrufen, um das Gerät wieder in den Arbeitszustand (D0) zu bringen oder zu verhindern, dass es in einen Energiesparmodus wechselt.
Ihr Treiber muss nicht StopIdle- aufrufen, wenn ein Gerät im Leerlauf ist und das Framework eine E/A-Anforderung in der E/A-Warteschlange des Geräts platziert. Darüber hinaus muss Ihr Treiber nicht StopIdle- aufrufen, wenn ein Gerät im Leerlauf ist und ein Wakesignal erkennt. In beiden Fällen fordert das Framework den Bustreiber auf, den Energiezustand des Geräts auf D0 wiederherzustellen.
Obwohl Treiber in der Regel keine StopIdle- beim Behandeln von E/A-Anforderungen aufrufen müssen, die sie aus einer vom Strom verwalteten E/A-Warteschlange erhalten, ist der Anruf zulässig. Treiber dürfen jedoch nicht den WaitForD0 Parameter auf TRUE- festlegen, wenn E/A-Anforderungen aus einer powerverwalteten E/A-Warteschlange verarbeitet werden.
Ihr Treiber muss StopIdle- aufrufen, wenn er aufgrund einer Anforderung, dass der Treiber außerhalb einer stromverwalteten E/A-Warteschlange auf das Gerät zugreifen muss. Ihr Treiber unterstützt z. B. eine treiberdefinierte Schnittstelle oder eine WMI-Anforderung, die auf das Gerät zugreifen muss. In diesem Fall müssen Sie sicherstellen, dass sich das Gerät in seinem Arbeitszustand befindet, bevor der Treiber auf das Gerät zugreift, und dass das Gerät in seinem Arbeitszustand bleibt, bis der Treiber den Zugriff auf das Gerät abgeschlossen hat.
Durch aufrufen StopIdle erzwingt das Gerät in den Arbeitszustand (D0), wenn sich das System im Arbeitszustand (S0) befindet. Das Gerät verbleibt in seinem Arbeitszustand, bis der Treiber IWDFDevice2::ResumeIdleaufruft. An diesem Punkt kann das Framework das Gerät in einen Energiesparzustand versetzen, wenn es im Leerlauf bleibt.
Rufen Sie StopIdle- nicht auf, bevor das Framework die IPnpCallback::OnD0Entry Callbackmethode zum ersten Mal aufgerufen hat.
Ein Aufruf von StopIdle- kann ein Leerlaufgerät nur dann in seinem Arbeitszustand wiederherstellen, wenn sich das System im Arbeitszustand (S0) befindet. Wenn das System einen Energiesparzustand eingibt, wenn ein Treiber StopIdle- aufruft, wobei der parameter WaitForD 0 auf TRUEfestgelegt ist, wird die Funktion erst zurückgegeben, wenn das System zum S0-Zustand zurückkehrt.
Jedem Aufruf von StopIdle- muss schließlich ein Aufruf von ResumeIdlefolgen, andernfalls kehrt das Gerät nie in einen Energiesparzustand zurück, wenn es erneut im Leerlauf ist. Aufrufe an StopIdle- können geschachtelt werden, sodass die Anzahl der Aufrufe an ResumeIdle- der Anzahl der Aufrufe StopIdle-entsprechen muss.
Weitere Informationen zu StopIdle- und ResumeIdle-finden Sie unter Unterstützenden Leerlauf-Power-Down in UMDF-basierten Treibern.
Beispiele
Im folgenden Codebeispiel wird die IWDFDevice2-schnittstelle und anschließend StopIdle-aufgerufen. StopIdle- wird zurückgegeben, nachdem das Gerät in den D0-Gerätestromzustand wechselt.
IWDFDevice2 *pIWDFDevice2 = NULL;
HRESULT hr;
//
// Get a pointer to the IWDFDevice2 interface.
//
hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
(void**) &pIWDFDevice2);
if (SUCCEEDED(hr))
{
hr = pIWDFDevice2->StopIdle(TRUE);
}
...
SAFE_RELEASE(pIWDFDevice2);
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.9 |
Header- | wudfddi.h (include Wudfddi.h) |
DLL- | WUDFx.dll |