Compartir a través de


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

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.

El método Start comienza a enviar solicitudes en cola a un destino de E/S local.

Sintaxis

HRESULT Start();

Valor devuelto

Start devuelve S_OK si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los códigos de error:

Código devuelto Descripción
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
Se ha quitado el dispositivo.
 

Este método puede devolver uno de los otros códigos de error que define Winerror.h.

Comentarios

Si el controlador puede detectar errores de dispositivo recuperables, es posible que quiera que el controlador llame a IWDFIoTargetStateManagement::Stop para detener temporalmente el envío de solicitudes al destino de E/S local y, después, llame a Iniciar para reanudar el envío de solicitudes.

Además, si un controlador llama a IWDFUsbTargetPipe2::ConfigureContinuousReader para configurar un lector continuo para una canalización USB, la función de devolución de llamada IPnpCallback::OnD0Entry del controlador debe llamar a Start para iniciar el lector.

El controlador debe llamar a Start e IWDFIoTargetStateManagement::Stop de forma sincrónica. Después de que el controlador llame a una de estas funciones, no debe llamar a la otra función antes de que vuelva la primera.

Para obtener más información sobre Start, vea Controlar el estado de un destino de E/S general en UMDF.

Para obtener más información sobre los destinos de E/S, consulte Uso de destinos de E/S en UMDF.

Ejemplos

En el ejemplo de código siguiente se muestra primero cómo un controlador puede obtener la interfaz IWDFIoTargetStateManagement para un objeto de canalización USB. A continuación, el ejemplo de código muestra cómo una función de devolución de llamada IPnpCallback::OnD0Entry puede llamar a Start, si el controlador usa un lector continuo para la canalización 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 Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1.5
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop