Delen via


Werken met USB-apparaten

In dit onderwerp worden de bewerkingen beschreven die een Kernel-Mode Driver Framework (KMDF) of User-Mode Driver Framework (UMDF) vanaf versie 2 kan uitvoeren met behulp van de USB-apparaatobjectmethoden die worden geleverd door Windows Driver Frameworks (WDF).

Deze bevat de volgende secties:

Zie Hoe u uw eerste USB-clientstuurprogramma (KMDF) schrijft voor stapsgewijze instructies voor het schrijven van een eenvoudig USB-clientstuurprogramma op basis van KMDF.

Een USB-apparaatobject maken

Als u de USB I/O-doelobjecten van het framework (WDFUSBDEVICE, WDFUSBINTERFACE en WDFUSBPIPE) wilt gebruiken, moet het clientstuurprogramma eerst WdfUsbTargetDeviceCreateWithParameters aanroepen om een USB-apparaatobject te maken. Normaal gesproken roept een stuurprogramma WdfUsbTargetDeviceCreateWithParameters aan vanuit de functie EvtDevicePrepareHardware callback.

Wanneer het stuurprogramma WdfUsbTargetDeviceCreateWithParameters aanroept, maakt het framework een WDFUSBDEVICE-object en koppelt het aan de FDO die het USB-apparaat vertegenwoordigt. De methode retourneert een ingang naar het nieuwe FRAMEWORK USB-apparaatobject dat het USB-clientstuurprogramma vervolgens kan gebruiken om met het fysieke apparaat te communiceren.

Na het aanroepen van WdfUsbTargetDeviceCreateWithParameters kan het stuurprogramma WdfUsbTargetDeviceDescriptor en WdfUsbTargetDeviceRetrieveConfigDescriptor aanroepen om USB-descriptors van het apparaat te verkrijgen. Deze descriptors bevatten informatie over de eerste configuratie van het apparaat, de interface-instellingen en de gedefinieerde eindpunten. (De USB-descriptors zijn gedefinieerd in de officiƫle USB-specificatie.)

Een USB-apparaat configureren

De methode WdfUsbTargetDeviceCreateWithParameters maakt ook een framework USB-interfaceobject voor elke USB-interface die de eerste configuratie van het apparaat bevat.

Na het aanroepen van WdfUsbTargetDeviceCreateWithParameters moet het clientstuurprogramma WdfUsbTargetDeviceSelectConfig aanroepen om een configuratie te selecteren. Met deze methode worden frameworkinterfaceobjecten gemaakt voor elke alternatieve instelling van de interface in de geselecteerde configuratie.

De methode maakt ook pijpobjecten die eindpunten vertegenwoordigen die zijn gedefinieerd in elke alternatieve instelling van elke interface van de geselecteerde configuratie.

Nadat u een configuratie hebt geselecteerd, kunt u indien nodig alternatieve instellingen voor de interfaces van de configuratie wijzigen.

U kunt ook WdfUsbTargetDeviceSelectConfig aanroepen om een apparaat te deconfigureren.

Zie voor gerelateerde informatie:

Apparaatgegevens verkrijgen

Nadat u een apparaat hebt geconfigureerd, kan uw clientstuurprogramma de volgende methoden aanroepen om informatie over een USB-apparaat te verkrijgen:

WdfUsbTargetDeviceQueryUsbCapability
Bepaalt of de hostcontroller en USB-stuurprogrammastack een specifieke mogelijkheid ondersteunen. Voordat een stuurprogramma WdfUsbTargetDeviceQueryUsbCapability aanroept, moet het WdfUsbTargetDeviceCreateWithParameters aanroepen.

WdfUsbTargetDeviceGetIoTarget
Retourneert een ingang naar het I/O-doelobject dat is gekoppeld aan een USB-apparaat. Het stuurprogramma kan deze ingang doorgeven aan WdfRequestSend of WdfIoTargetStop.

WdfUsbTargetDeviceRetrieveInformation
Haalt versie- en mogelijkheidsgegevens op die zijn gekoppeld aan een USB-apparaat.

WdfUsbTargetDeviceIsConnectedSynchronous (alleen KMDF)
Bepaalt of het apparaat is verbonden.

WdfUsbTargetDeviceRetrieveCurrentFrameNumber (alleen KMDF)
Haalt het huidige USB-framenummer op.

Het verkrijgen van USB-descriptors

Om de Unicode-tekenreeksen te verkrijgen die zijn opgenomen in de descriptors van een USB-apparaat, kan het stuurprogramma een van de volgende methoden aanroepen:

WdfUsbTargetDeviceGetDeviceDescriptor
Hiermee verkrijgt u de descriptor van een USB-apparaat.

WdfUsbTargetDeviceRetrieveConfigDescriptor
Haalt de USB-configuratiedescriptor, interfacedescriptors en eindpuntdescriptors van een apparaat op.

WdfUsbTargetDeviceQueryString
Kopieert een Unicode-tekenreeks naar een door het stuurprogramma geleverde buffer.

WdfUsbTargetDeviceAllocAndQueryString
Kopieert een Unicode-tekenreeks naar een door een framework geleverde buffer.

WdfUsbTargetDeviceFormatRequestForString
Hiermee wordt een aanvraag voor een Unicode-tekenreeks opgemaakt. Het stuurprogramma kan WdfRequestSend aanroepen om de aanvraag synchroon of asynchroon te verzenden.

Een besturingsoverdracht verzenden

Uw stuurprogramma kan de volgende methoden aanroepen om een I/O-aanvraag te verzenden die een standaard, apparaatklassespecifieke of leverancierspecifieke USB-besturingsoverdracht beschrijft.

WdfUsbTargetDeviceSendControlTransferSynchronously
Verzendt synchroon een AANVRAAG voor USB-besturingsoverdracht.

WdfUsbTargetDeviceFormatRequestForControlTransfer
Hiermee wordt een aanvraag voor een USB-besturingsoverdracht opgemaakt. Het stuurprogramma kan WdfRequestSend aanroepen om de aanvraag synchroon of asynchroon te verzenden.

Zie Een USB-besturingsoverdracht verzenden voor verwante informatie.

Een apparaatpoort opnieuw instellen en Power-Cycling

Uw stuurprogramma kan de volgende methoden aanroepen om de USB-poort waarmee een apparaat is verbonden, opnieuw in of uit te schakelen:

WdfUsbTargetDeviceResetPortSynchronously
Verzendt synchroon een aanvraag om de USB-poort van een apparaat opnieuw in te stellen.

WdfUsbTargetDeviceCyclePortSynchronously (alleen KMDF)
Stuurt synchron een verzoek om een apparaat via de USB-poort in- en uit te schakelen.

WdfUsbTargetDeviceFormatRequestForCyclePort (alleen KMDF)
Formuleert een verzoek om de USB-poort van een apparaat aan- en uit te schakelen. Het stuurprogramma moet WdfRequestSend aanroepen om de aanvraag synchroon of asynchroon te verzenden.

Zie Hoe herstel je USB-pijplijnfoutenvoor verwante informatie.

Een URB verzenden naar een apparaat

Als uw KMDF-stuurprogramma communiceert met het USB-apparaat door I/O-aanvragen met URL's te verzenden, kan het stuurprogramma de volgende methoden aanroepen:

WdfUsbTargetDeviceCreateUrb (alleen KMDF)
Wijst een USB-aanvraagblok (URB) toe. Voordat u WdfUsbTargetDeviceCreateUrb aanroept, moet een stuurprogramma WdfUsbTargetDeviceCreateWithParameters aanroepen.

WdfUsbTargetDeviceCreateIsochUrb (alleen KMDF)
Wijst een isochron USB-verzoekblok (URB) toe. Voordat een stuurprogramma WdfUsbTargetDeviceCreateIsochUrb aanroept, moet het WdfUsbTargetDeviceCreateWithParameters aanroepen.

WdfUsbTargetDeviceSendUrbSynchronously (alleen KMDF)
Verzendt synchroon een I/O-aanvraag die een URB bevat.

WdfUsbTargetDeviceFormatRequestForUrb (alleen KMDF)
Hiermee wordt een I/O-verzoek geformatteerd dat een URB bevat. Het stuurprogramma moet WdfRequestSend aanroepen om de aanvraag synchroon of asynchroon te verzenden.

WdfUsbTargetDeviceWdmGetConfigurationHandle (alleen KMDF)
Retourneert de USBD-configuratiegreep van een apparaat. Voor sommige URB's is deze referentie vereist.

Zie Toewijzen en bouwen van URL's voor algemene conceptuele achtergrond van URI's.