Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод StopIdle сообщает платформе, что устройство должно быть помещено в рабочее состояние питания (D0).
Синтаксис
HRESULT StopIdle(
[in] BOOL WaitForD0
);
Параметры
[in] WaitForD0
Логическое значение, указывающее, когда StopIdle возвращается. Если TRUE, он возвращается только после того, как указанное устройство входит в состояние питания устройства D0. Если FALSE, метод возвращается немедленно.
Возвращаемое значение
StopIdle возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Вызывающий драйвер не является владельцем политики питания устройства. |
|
Устройство уже возвращалось в рабочее состояние. |
|
Произошел сбой устройства, и устройство не может ввести состояние питания D0. |
Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.
Замечания
Если устройство может ввести состояние низкой мощности при его простое, драйвер может иногда вызывать StopIdle, чтобы вернуть устройство к рабочему состоянию (D0) или запретить ему вводить низкое питание.
Драйверу не нужно вызывать StopIdle, если устройство неактивно, а платформа помещает запрос ввода-вывода в очередь ввода-вывода устройства, управляемого питанием. Кроме того, драйверу не нужно вызывать StopIdle, когда устройство неактивно и обнаруживает сигнал пробуждения. В обоих случаях платформа запрашивает драйвер шины восстановить состояние питания устройства до D0.
Хотя драйверам обычно не нужно вызывать StopIdle при обработке запросов ввода-вывода, получаемых из очереди ввода-вывода, управляемой питанием, разрешен вызов. Однако драйверы не должны задавать параметру WaitForD0 значение TRUE при обработке запросов ввода-вывода из очереди ввода-вывода, управляемого питанием.
Драйвер должен вызывать StopIdle, если он должен получить доступ к устройству из-за запроса, полученного драйвером за пределами очереди ввода-вывода, управляемого питанием. Например, драйвер может поддерживать определяемый драйвером интерфейс или запрос WMI, требующий доступа к устройству. В этом случае необходимо убедиться, что устройство находится в рабочем состоянии, прежде чем драйвер обращается к устройству, и что устройство остается в рабочем состоянии, пока драйвер не завершит доступ к устройству.
Вызов StopIdle заставляет устройство работать (D0), если система находится в состоянии работы (S0). Устройство остается в рабочем состоянии, пока драйвер не вызовет IWDFDevice2::ResumeIdle, в котором платформа может поместить устройство в состояние низкой мощности, если оно остается бездействующей.
Не вызывайте StopIdle, прежде чем платформа впервые вызвала метод обратного вызова IPnpCallback::OnD0Entry обратного вызова.
Вызов StopIdle может восстановить неактивное устройство в рабочее состояние, только если система находится в состоянии работы (S0). Если система вводит состояние низкой мощности, когда драйвер вызывает StopIdle с параметром WaitForD0 значение TRUE, функция не возвращается до тех пор, пока система не возвращается в его состояние S0.
Каждый вызов StopIdle должен в конечном итоге следовать вызову ResumeIdle, или другое устройство никогда не вернется в состояние низкой мощности, если он снова становится бездействуемым. Вызовы StopIdle можно вложить, поэтому количество вызовов ResumeIdle должно быть равно количеству вызовов StopIdle.
Дополнительные сведения о StopIdle и ResumeIdleсм. в поддержке Power-Down драйверовна основе UMDF.
Примеры
Следующий пример кода получает интерфейс IWDFDevice2, а затем вызывает StopIdle. StopIdle возвращается после ввода устройства в состояние питания устройства D0.
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);
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.9 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |