Поделиться через


Метод 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. Например, драйвер может выполнить следующее:

  1. Вызов остановить и укажите значение действияWdfIoTargetLeaveSentIoPending.
  2. Определите, должен ли целевой объект возобновлять обработку запросов ввода-вывода.
  3. Если целевой объект должен возобновиться, вызовите 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

См. также

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop