IWDFIoTargetStateManagement::Start-Methode (wudfddi.h)

[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]

Die Start-Methode beginnt mit dem Senden von Anforderungen in die Warteschlange an ein lokales E/A-Ziel.

Syntax

HRESULT Start();

Rückgabewert

Start gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der Fehlercodes zurück:

Rückgabecode Beschreibung
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
Das Gerät wurde entfernt.
 

Diese Methode gibt möglicherweise einen der anderen Fehlercodes zurück, die Winerror.h definiert.

Hinweise

Wenn Ihr Treiber wiederherstellbare Gerätefehler erkennen kann, möchten Sie möglicherweise, dass Ihr Treiber IWDFIoTargetStateManagement::Stop aufruft, um das Senden von Anforderungen an das lokale E/A-Ziel vorübergehend zu beenden. Rufen Sie später Start auf, um das Senden von Anforderungen fortzusetzen.

Wenn ein Treiber IWDFUsbTargetPipe2::ConfigureContinuousReader aufruft, um einen fortlaufenden Reader für eine USB-Pipe zu konfigurieren, muss außerdem die IPnpCallback::OnD0Entry-Rückruffunktion des Treibers Start aufrufen, um den Reader zu starten.

Ihr Treiber muss Start und IWDFIoTargetStateManagement::Stop synchron aufrufen. Nachdem der Treiber eine dieser Funktionen aufgerufen hat, darf er die andere Funktion nicht aufrufen, bevor die erste funktion zurückgegeben wird.

Weitere Informationen zum Start finden Sie unter Steuern des Status eines allgemeinen E/A-Ziels in UMDF.

Weitere Informationen zu E/A-Zielen finden Sie unter Verwenden von E/A-Zielen in UMDF.

Beispiele

Das folgende Codebeispiel zeigt zunächst, wie ein Treiber die IWDFIoTargetStateManagement-Schnittstelle für ein USB-Pipeobjekt abrufen kann. Das Codebeispiel zeigt dann, wie eine IPnpCallback::OnD0Entry-RückruffunktionStart aufrufen kann, wenn der Treiber einen fortlaufenden Reader für die USB-Pipe verwendet.


    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;
}

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform Desktop
UMDF-Mindestversion 1.5
Kopfzeile wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Weitere Informationen

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop