Метод 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();
Возвращаемое значение
Функция Start возвращает S_OK, если операция выполнена успешно. В противном случае этот метод может вернуть один из кодов ошибок:
Код возврата | Описание |
---|---|
|
Устройство удалено. |
Этот метод может возвращать один из других кодов ошибок, определяемых Winerror.h.
Комментарии
Если драйвер может обнаруживать ошибки устройства, которые можно восстановить, может потребоваться, чтобы драйвер вызвал IWDFIoTargetStateManagement::Stop , чтобы временно прекратить отправку запросов в локальный целевой объект ввода-вывода, а затем вызвать метод Start , чтобы возобновить отправку запросов.
Кроме того, если драйвер вызывает 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 (включая Wudfddi.h) |
DLL | WUDFx.dll |