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. Nessuna nuova funzionalità viene aggiunta 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, vedere Introduzione con UMDF.]

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

Sintassi

HRESULT Start();

Valore restituito

L'avvio 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.

Commenti

Se il driver può rilevare gli errori ripristinabili del dispositivo, è possibile che il driver chiami IWDFIoTargetStateManagement::Stop per arrestare temporaneamente l'invio delle richieste alla destinazione di I/O locale, quindi in seguito chiamare Start per riprendere l'invio delle richieste.

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

Il driver deve chiamare Start e IWDFIoTargetStateManagement::Stop 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 Uso delle destinazioni di I/O in UMDF.

Esempio

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 una funzione di callback IPnpCallback::OnD0Entry 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;
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1.5
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop