Freigeben über


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.