Método IWDFIoTargetStateManagement::Start (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda UMDF .]
O método Iniciar começa a enviar solicitações na fila para um de destino de E/S local.
Sintaxe
HRESULT Start();
Valor de retorno
Iniciar retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos códigos de erro:
Código de retorno | Descrição |
---|---|
|
O dispositivo foi removido. |
Esse método pode retornar um dos outros códigos de erro definidos por Winerror.h.
Observações
Se o driver puder detectar erros de dispositivo recuperáveis, talvez você queira que o driver chame IWDFIoTargetStateManagement::Parar parar temporariamente de enviar solicitações para o destino de E/S local e, em seguida, chamar Iniciar para retomar o envio de solicitações.
Além disso, se um driver chamar IWDFUsbTargetPipe2::ConfigureContinuousReader para configurar um leitor contínuo para um pipe USB, a função de retorno de chamada IPnpCallback::OnD0Entry deve chamar Iniciar para iniciar o leitor.
O driver deve chamar Iniciar e IWDFIoTargetStateManagement::Parar de forma síncrona. Depois que o driver chama uma dessas funções, ele não deve chamar a outra função antes que a primeira retorne.
Para obter mais informações sobre iniciar, consulte Controlando o estado de um destino de E/S geral noumdf .
Para obter mais informações sobre destinos de E/S, consulte Usando destinos de E/S noumDF.
Exemplos
O exemplo de código a seguir mostra primeiro como um driver pode obter a interface IWDFIoTargetStateManagement para um objeto de pipe USB. O exemplo de código mostra como uma função de retorno de chamada IPnpCallback::OnD0Entry pode chamar Iniciar, se o driver usar um leitor contínuo para o pipe 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;
}
Requisitos
Requisito | Valor |
---|---|
fim do suporte | Indisponível no UMDF 2.0 e posterior. |
da Plataforma de Destino | Área de trabalho |
versão mínima do UMDF | 1.5 |
cabeçalho | wudfddi.h (inclua Wudfddi.h) |
de DLL | WUDFx.dll |