Partager via


Prise en main du développement USB

Un appareil USB (Universal Serial Bus) définit ses fonctionnalités par le biais de configurations, d’interfaces, de paramètres alternatifs et de points de terminaison. Cette rubrique fournit une vue d’ensemble générale de ces concepts. Pour plus d’informations, consultez les spécifications USB dans Universal Serial Bus Documents.

Contenu de cette section

Rubrique Description
Disposition des périphériques USB Un périphérique USB définit ses fonctionnalités par le biais de configurations, d’interfaces, de paramètres alternatifs et de points de terminaison. Cette rubrique fournit une vue d’ensemble générale de ces concepts.
Descripteurs USB standard Un périphérique USB fournit des informations sur lui-même dans des structures de données appelées descripteurs USB. Cette section fournit des informations sur les descripteurs d’appareil, de configuration, d’interface et de point de terminaison et les moyens de les récupérer à partir d’un périphérique USB.
Points de terminaison USB et leurs canaux Un périphérique USB a des points de terminaison utilisés pour les transferts de données. Côté hôte, les points de terminaison sont représentés par des canaux. Cette rubrique fait la distinction entre ces deux termes.
USB dans Windows - FAQ Cette rubrique présente les questions fréquemment posées aux développeurs de pilotes qui débutent dans le développement et l’intégration de périphériques et de pilotes USB avec les systèmes d’exploitation Windows.

Scénarios USB courants

1 : obtenez le handle d’appareil pour la communication et utilisez le handle ou l’objet récupéré pour envoyer des transferts de données.

Pilote client Application UWP Application de bureau Windows
KMDF :
WdfUsbTargetDeviceCreateWithParameters

UMDF :
IWDFUsbTargetDevice
UsbDevice

Comment se connecter à un périphérique USB
WinUsb_Initialize

Écrire une application de bureau Windows basée sur le modèle WinUSB

Récupération du descripteur USB pour obtenir des informations sur la ou les configurations de l’appareil, les interfaces, les paramètres et leurs points de terminaison.

Pilote client Application UWP Application de bureau Windows
KMDF :

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF :

IWDFUsbTargetDevice ::RetrieveDescriptor

Descripteurs USB
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbInterfaceSetting.Descriptors

Comment obtenir des descripteurs USB
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Interroger le périphérique pour les descripteurs USB

2 — Configurez l’appareil pour sélectionner une configuration et un paramètre USB actifs par interface.

Pilote client Application UWP Application de bureau Windows
KMDF :
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Comment sélectionner une configuration pour un périphérique USB.

Comment sélectionner un autre paramètre dans une interface USB.

UMDF :
La sélection de la configuration n’est pas prise en charge

IWDFUsbInterface ::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Comment sélectionner un paramètre d’interface USB
WinUsb_SetCurrentAlternateSetting

3 — Envoyer des transferts de contrôle pour la configuration de l’appareil et l’exécution des commandes du fournisseur qui sont spécifiques à un appareil particulier.

Pilote client Application UWP Application de bureau Windows
KMDF :
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF :
IWDFUsbTargetDevice ::FormatRequestForControlTransfer

Comment envoyer un transfert de contrôle USB
SendControlInTransferAsync
SendControlOutTransferAsync

Comment envoyer un transfert de contrôle USB
WinUsb_ControlTransfer

Envoyer le transfert de contrôle au point de terminaison par défaut

4 — Envoyer des transferts en bloc, généralement utilisés par les appareils de stockage de masse qui transfèrent une grande quantité de données.

Pilote client Application UWP Application de bureau Windows
KMDF :
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Comment envoyer des demandes de transfert en bloc USB

Comment utiliser le lecteur continu pour lire des données à partir d’un canal USB

UMDF :
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Comment envoyer une demande de transfert USB en bloc
WinUsb_WritePipe
WinUsb_ReadPipe

Émettre des demandes d’E/S

5 — Envoyer des transferts d’interruption. Les données sont lues pour récupérer les données d’interruption matérielle.

Pilote client Application UWP Application de bureau Windows
Identique aux transferts en bloc UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Comment envoyer une demande de transfert d’interruption USB
Identique aux transferts en bloc

6 — Envoyer des transferts isochronaux, principalement utilisés pour les appareils de streaming multimédia.

Pilote client Application UWP Application de bureau Windows
KMDF :
WdfUsbTargetDeviceCreateIsochUrb

Comment transférer des données vers des points de terminaison isochroniques USB

UMDF :
Non prise en charge
Non prise en charge WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Envoi de transferts isochronieux USB à partir d’une application de bureau WinUSB

7 : interruption sélective USB pour permettre à l’appareil d’entrer dans un état d’alimentation faible et de ramener l’appareil à l’état de fonctionnement.

Pilote client Application UWP Application de bureau Windows
KMDF :
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

UMDF :
IWDFUsbTargetDevice ::SetPowerPolicy
IWDFDevice2 ::AssignS0IdleSettings
IWDFDevice3 ::AssignS0IdleSettingsEx

Comment envoyer un appareil à une interruption sélective
Non prise en charge WinUsb_SetPowerPolicy

Gestion de l’alimentation WinUSB

Voir aussi