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


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

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

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

Синтаксис

HRESULT Start();

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

Запуск возвращает S_OK, если операция выполнена успешно. В противном случае этот метод может вернуть один из кодов ошибок:

Возвращаемый код Описание
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
Устройство было удалено.
 

Этот метод может возвращать один из других кодов ошибок, которые определяет Winerror.h.

Замечания

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

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

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

Дополнительные сведения о запускесм. в управлении состоянием общего объекта ввода-вывода вUMDF.

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

Примеры

В следующем примере кода показано, как драйвер может получить интерфейс IWDFIoTargetStateManagement для объекта USB-канала. В примере кода показано, как функция обратного вызова IPnpCallback::OnD0Entry обратного вызова может вызывать start, если драйвер использует непрерывное средство чтения для USB-канала.


    IWDFIoTargetStateManagement * m_pIoTargetInterruptPipeStateMgmt = NULL;

    IWDFUsbTargetFactory *  pIUsbTargetFactory = NULL;
    IWDFUsbTargetDevice *   pIUsbTargetDevice = NULL;
    IWDFUsbInterface *      pIUsbInterface = NULL;
    IWDFUsbTargetPipe *     pIUsbPipe = NULL;

    hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pIUsbTargetFactory));
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetFactory->CreateUsbTargetDevice(&pIUsbTargetDevice);
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetDevice->RetrieveUsbInterface(0, &pIUsbInterface);
    if (FAILED(hr))
    {...}
    NumEndPoints = pIUsbInterface->GetNumEndPoints();
    for (UCHAR PipeIndex = 0; PipeIndex < NumEndPoints; PipeIndex++)
    {
        hr = pIUsbInterface->RetrieveUsbPipeObject(PipeIndex, &pIUsbPipe);
        if (FAILED(hr))
        {...}
        else
        {
            if (pIUsbPipe->IsInEndPoint())
            {
                if (UsbdPipeTypeInterrupt == pIUsbPipe->GetType())
                {
                    m_pIUsbInterruptPipe = pIUsbPipe;
                    hr = m_pIUsbInterruptPipe->QueryInterface(IID_PPV_ARGS(&m_pIoTargetInterruptPipeStateMgmt));
                    if (FAILED(hr))
                    {...}
                }
            }
        }
    } 

HRESULT
CMyDevice::OnD0Entry(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
...
    m_pIoTargetInterruptPipeStateMgmt->Start();
...
    return S_OK;
}

Требования

Требование Ценность
завершение поддержки Недоступно в UMDF 2.0 и более поздних версиях.
целевая платформа Настольный
минимальная версия UMDF 1.5
заголовка wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

См. также

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop