Метод IWDFIoTargetStateManagement::Stop (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]

Метод Stop прекращает отправку очередных запросов в локальный целевой объект ввода-вывода.

Синтаксис

HRESULT Stop(
  [in] WDF_IO_TARGET_SENT_IO_ACTION Action
);

Параметры

[in] Action

WDF_IO_TARGET_SENT_IO_ACTION типизированное значение, определяющее способ обработки отправленных операций ввода-вывода при остановке целевого объекта ввода-вывода.

Возвращаемое значение

Stop всегда возвращает S_OK.

Комментарии

Если драйвер может обнаружить ошибки устройства, которые можно восстановить, может потребоваться вызвать метод Stop , чтобы временно остановить отправку запросов к локальному целевому объекту ввода-вывода, а затем вызвать IWDFIoTargetStateManagement::Start , чтобы возобновить отправку запросов.

Кроме того, если драйвер вызывает IWDFUsbTargetPipe2::ConfigureContinuousReader для настройки непрерывного чтения для USB-канала, функция обратного вызова IPnpCallback::OnD0Exit драйвера должна вызвать Stop , чтобы остановить средство чтения.

Если драйвер вызвал stop, он по-прежнему может отправить запрос к целевому объекту, установив флаг WDF_REQUEST_OPTION_IGNORE_TARGET_STATE при вызове IWDFIoRequest::Send. Если драйвер устанавливает этот флаг, драйвер может отправить запрос, например запрос на сброс USB-канала (см. раздел IWDFUsbTargetPipe::Reset) на устройство после вызова драйвера Stop.

Драйвер должен вызывать IWDFIoTargetStateManagement::Start и Stop синхронно. После того как драйвер вызывает одну из этих функций, он не должен вызывать ни одну из функций до возврата первого вызова.

Драйвер может вызывать stop несколько раз, не вызывая IWDFIoTargetStateManagement::Start. Например, драйвер может выполнять следующие действия:

  1. Вызовите Stop и укажите значение действияWdfIoTargetLeaveSentIoPending.
  2. Определите, должен ли целевой объект возобновлять обработку запросов ввода-вывода.
  3. Если целевой объект должен возобновиться, вызовите IWDFIoTargetStateManagement::Start. В противном случае снова вызовите команду Stop со значением действияWdfIoTargetCancelSentIo.
Дополнительные сведения о остановке см. в разделе Управление состоянием общего целевого объекта ввода-вывода.

Дополнительные сведения о целевых объектах ввода-вывода см. в разделе Использование целевых объектов ввода-вывода.

Примеры

В следующем примере кода показано, как функция обратного вызова IPnpCallback::OnD0Exit может вызывать Stop, если драйвер использует непрерывное средство чтения для 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 (включая Wudfddi.h)
DLL WUDFx.dll

См. также раздел

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop