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