Método IWDFIoTargetStateManagement::Start (wudfddi.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método Start começa a enviar solicitações enfileiradas para um destino de E/S local.

Sintaxe

HRESULT Start();

Retornar valor

Start retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos códigos de erro:

Código de retorno Descrição
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
O dispositivo foi removido.
 

Esse método pode retornar um dos outros códigos de erro definidos por Winerror.h.

Comentários

Se o driver puder detectar erros de dispositivo recuperáveis, talvez você queira que o driver chame IWDFIoTargetStateManagement::Stop para interromper temporariamente o envio de solicitações para o destino de E/S local e, em seguida, chame 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 do driver deverá chamar Iniciar para iniciar o leitor.

Seu driver deve chamar Start e IWDFIoTargetStateManagement::Stop 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 no UMDF.

Para obter mais informações sobre destinos de E/S, consulte Usando destinos de E/S no UMDF.

Exemplos

O exemplo de código a seguir mostra primeiro como um driver pode obter a interface IWDFIoTargetStateManagement para um objeto de pipe USB. Em seguida, o exemplo de código mostra como uma função de retorno de chamada IPnpCallback::OnD0Entry pode chamar Start, 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.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1.5
Cabeçalho wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Confira também

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop