Condividi tramite


Metodo IWDFIoTargetStateManagement::Start (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedi Introduzione a UMDF.]

Il metodo Start avvia l'invio di richieste in coda a una destinazione di I/O locale.

Sintassi

HRESULT Start();

Valore restituito

start restituisce S_OK se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei codici di errore:

Codice restituito Descrizione
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
Il dispositivo è stato rimosso.
 

Questo metodo potrebbe restituire uno degli altri codici di errore definiti da Winerror.h.

Osservazioni

Se il driver è in grado di rilevare errori di dispositivo ripristinabili, è possibile che il driver chiami IWDFIoTargetStateManagement::Stop per interrompere temporaneamente l'invio di richieste alla destinazione di I/O locale, quindi chiamare successivamente Avvia per riprendere l'invio delle richieste.

Inoltre, se un driver chiama IWDFUsbTargetPipe2::ConfigureContinuousReader per configurare un lettore continuo per una pipe USB, il driver IPnpCallback::OnD0Entry funzione di callback deve chiamare Start per avviare il lettore.

Il driver deve chiamare Start e IWDFIoTargetStateManagement::Stop in modo sincrono. Dopo che il driver chiama una di queste funzioni, non deve chiamare l'altra funzione prima che venga restituita la prima.

Per altre informazioni su Start, vedere Controllo dello stato di una destinazione di I/O generale in UMDF.

Per altre informazioni sulle destinazioni di I/O, vedere Using I/O Targets in UMDF.

Esempi

L'esempio di codice seguente illustra innanzitutto come un driver può ottenere l'interfaccia IWDFIoTargetStateManagement per un oggetto pipe USB. L'esempio di codice mostra quindi come un IPnpCallback::OnD0Entry funzione di callback può chiamare Start, se il driver usa un lettore continuo per la 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;
}

Fabbisogno

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
piattaforma di destinazione Desktop
versione minima di UMDF 1.5
intestazione wudfddi.h (include Wudfddi.h)
dll WUDFx.dll

Vedere anche

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop