Compartilhar via


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
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.

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

Consulte também

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop