Метод IWDFIoTargetStateManagement::Stop (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод остановки остановки останавливает отправку очередных запросов в локальный целевой объект ввода-вывода.
Синтаксис
HRESULT Stop(
[in] WDF_IO_TARGET_SENT_IO_ACTION Action
);
Параметры
[in] Action
Значение WDF_IO_TARGET_SENT_IO_ACTIONтипа, определяющее способ обработки отправленных операций ввода-вывода при остановке целевого объекта ввода-вывода.
Возвращаемое значение
Остановка всегда возвращает S_OK.
Замечания
Если драйвер может обнаружить ошибки устройства, которые можно восстановить, может потребоваться, чтобы драйвер вызвал остановить временно прекратить отправку запросов в локальный целевой объект ввода-вывода, а затем вызвать IWDFIoTargetStateManagement::Start для возобновления отправки запросов.
Кроме того, если драйвер вызывает IWDFUsbTargetPipe2::ConfigureContinuousReader для настройки непрерывного средства чтения для USB-канала, функция обратного вызова драйвера IPnpCallback::OnD0Exit обратного вызова должна вызывать остановить, чтобы остановить средство чтения.
Если драйвер вызвал остановить, он по-прежнему может отправить запрос в целевой объект, задав флаг WDF_REQUEST_OPTION_IGNORE_TARGET_STATE при вызове IWDFIoRequest::Send. Если драйвер задает этот флаг, драйвер может отправить запрос, например запрос на сброс USB-канала (см. IWDFUsbTargetPipe::Reset), после вызова драйвера остановить.
Драйвер должен вызывать IWDFIoTargetStateManagement::Start и остановить синхронно. После вызова одной из этих функций драйвер не должен вызывать любую функцию перед первым вызовом.
Драйвер может вызывать остановить несколько раз, не вызывая IWDFIoTargetStateManagement::Start. Например, драйвер может выполнить следующее:
- Вызов остановить и укажите значение действияWdfIoTargetLeaveSentIoPending.
- Определите, должен ли целевой объект возобновлять обработку запросов ввода-вывода.
- Если целевой объект должен возобновиться, вызовите IWDFIoTargetStateManagement::Start. В противном случае вызовите остановить снова с значениемWdfIoTargetCancelSentIo.
Дополнительные сведения о целевых объектах ввода-вывода см. в разделе Использование целевых объектов ввода-вывода.
Примеры
В следующем примере кода показано, как функция обратного вызова IPnpCallback::OnD0Exit обратного вызова может вызывать Остановить, если драйвер использует непрерывное средство чтения для USB-канала. (Чтобы узнать, как получить интерфейс IWDFIoTargetStateManagement, ознакомьтесь с примером кода IWDFIoTargetStateManagement::Start.)
HRESULT
CMyDevice::OnD0Exit(
__in IWDFDevice* pWdfDevice,
__in WDF_POWER_DEVICE_STATE previousState
)
{
HRESULT hr;
hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
return hr;
}
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.5 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |