Arbeiten mit USB-Geräten in UMDF 1.x-Treibern
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 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden.
Die archivierten UMDF 1-Beispiele finden Sie im Windows 11, Version 22H2 – Mai 2022 Treiberbeispiele Update.
Weitere Informationen finden Sie unter Erste Schritte mit UMDF.
Das Framework stellt jedes USB-Gerät als Framework-USB-Geräteobjekt dar. Ein UMDF-Treiber muss ein Framework-USB-Geräteobjekt erstellen, bevor der Treiber auf die Unterstützung für USB-E/A-Ziele des Frameworks zugreifen kann. UMDF stellt USB-Geräteobjektmethoden bereit, mit denen ein UMDF-Treiber Folgendes ermöglicht:
Erstellen eines UMDF-USB-Geräteobjekts
Um die USB-E/A-Zielfunktionen des Frameworks nutzen zu können, muss ein UMDF-Treiber zuerst einen Zeiger auf die IWDFUsbTargetFactory-Schnittstelle abrufen. Um den Zeiger abzurufen, muss der Treiber die QueryInterface-Methode der IWDFDevice-Schnittstelle des Geräts aufrufen. Im folgenden Codebeispiel wird veranschaulicht, wie QueryInterface aufgerufen wird, um den Zeiger abzurufen:
hr = pdevice->QueryInterface(IID_IWDFUsbTargetFactory, (LPVOID*)&ppUsbTargetFactory);
Der Treiber muss als Nächstes die IWDFUsbTargetFactory::CreateUsbTargetDevice-Methode aufrufen, um ein USB-E/A-Zielobjekt für das Gerät zu erstellen. Nachdem der Treiber das USB-E/A-Ziel erstellt hat, kann der Treiber Anforderungen an das E/A-Ziel senden. In der Regel rufen Treiber IWDFUsbTargetFactory::CreateUsbTargetDevice aus einer IPnpCallbackHardware::OnPrepareHardware-Rückruffunktion auf.
Nachdem der Treiber IWDFUsbTargetFactory::CreateUsbTargetDevice aufgerufen hat, kann der Treiber USB-Geräteinformationen abrufen (z. B. USB-Deskriptoren für das Gerät, USB-Schnittstellen und Schnittstellenendpunkte). Die USB-Deskriptoren werden in der USB-Spezifikation beschrieben.
Abrufen von UMDF-USB-Geräteinformationen
Nachdem ein UMDF-Treiber die IWDFUsbTargetFactory::CreateUsbTargetDevice-Methode aufgerufen hat , um ein UMDF-USB-Zielgeräteobjekt zu erstellen, kann der Treiber die folgenden Methoden aufrufen, die das USB-Zielgeräteobjekt zum Abrufen von Informationen zu einem USB-Gerät definiert:
IWDFUsbTargetDevice::RetrieveDescriptor
Ruft den USB-Gerätedeskriptor eines Geräts ab.
IWDFUsbTargetDevice::GetNumInterfaces
Ruft die Anzahl der USB-Schnittstellen ab, die das Gerät unterstützt.
IWDFUsbTargetDevice::RetrieveUsbInterface
Ruft einen Zeiger auf eine IWDFUsbInterface-Schnittstelle ab, die eine der vom Gerät unterstützten USB-Schnittstellen verfügbar macht.
IWDFUsbTargetDevice::RetrieveDeviceInformation
Ruft Funktionsinformationen ab, die einem USB-Gerät zugeordnet sind.
IWDFUsbTargetDevice::RetrievePowerPolicy
Ruft eine WinUsb-Energierichtlinie ab.
IWDFUsbTargetDevice::GetWinUsbHandle
Ruft das WinUsb-Schnittstellenhandle ab, das dem E/A-Zielgeräteobjekt zugeordnet ist.
Senden einer Steuerelementübertragung an ein UMDF-USB-Geräteobjekt
Ein UMDF-Treiber kann die IWDFUsbTargetDevice::FormatRequestForControlTransfer-Methode aufrufen, um eine E/A-Anforderung zu formatieren, die eine standard-, geräteklassenspezifische oder herstellerspezifische USB-Steuerungsübertragung beschreibt. Der Treiber kann dann die IWDFIoRequest::Send-Methode aufrufen, um die Anforderung synchron oder asynchron zu senden.
Festlegen der Energierichtlinie für ein UMDF-USB-Gerät
Ein UMDF-Treiber kann die IWDFUsbTargetDevice::SetPowerPolicy-Methode aufrufen, um die Energierichtlinie festzulegen, die von WinUsb für ein USB-Gerät verwendet wird. Die Energierichtlinie für ein USB-Gerät wirkt sich auf die Energieverwaltungszustände für das Gerät aus.