Udostępnij przez


Wprowadzenie do programowania usb

Urządzenie uniwersalnej magistrali szeregowej (USB) definiuje jego możliwości i funkcje za pośrednictwem konfiguracji, interfejsów, ustawień alternatywnych i punktów końcowych. Ten temat zawiera ogólne omówienie tych pojęć. Aby uzyskać szczegółowe informacje, zobacz specyfikacje USB w dokumentach uniwersalnej magistrali szeregowej.

W tym dziale

Temat Opis
Układ urządzenia USB Urządzenie USB definiuje jego możliwości i funkcje za pośrednictwem konfiguracji, interfejsów, ustawień alternatywnych i punktów końcowych. Ten temat zawiera ogólne omówienie tych pojęć.
Standardowe deskryptory USB Urządzenie USB zawiera informacje o sobie w strukturach danych nazywanych deskryptorami USB. Ta sekcja zawiera informacje o deskryptorach urządzeń, konfiguracji, interfejsie i punktach końcowych oraz sposobach pobierania ich z urządzenia USB.
Punkty końcowe USB i ich potoki Urządzenie USB ma punkty końcowe używane do transferu danych. Po stronie hosta punkty końcowe są reprezentowane przez rury. W tym temacie rozróżnia się te dwa terminy.
USB w systemie Windows — często zadawane pytania W tym temacie przedstawiono często zadawane pytania dotyczące deweloperów sterowników, którzy dopiero zaczynają opracowywać i integrować urządzenia USB i sterowniki z systemami operacyjnymi Windows.

Typowe scenariusze USB

1 — Pobierz uchwyt urządzenia do komunikacji i użyj pobranego uchwytu lub obiektu do przesyłania danych.

Sterownik klienta Aplikacja platformy uniwersalnej systemu Windows Aplikacja desktopowa systemu Windows
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

Jak nawiązać połączenie z urządzeniem USB
WinUsb_Initialize

Opracowanie aplikacji desktopowej systemu Windows na podstawie szablonu WinUSB

Pobieranie deskryptora USB w celu uzyskania informacji o konfiguracjach urządzenia, interfejsach, ustawieniach i ich punktach końcowych.

Sterownik klienta Aplikacja UWP Aplikacja na pulpit systemu Windows
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

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

Jak uzyskać deskryptory USB
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Zapytaj urządzenie o deskryptory USB

2 — Skonfiguruj urządzenie, aby wybrać aktywną konfigurację USB i ustawić ją dla każdego interfejsu.

Sterownik klienta Aplikacja UWP Aplikacja na pulpit systemu Windows
KMDF:
#B0 #A1 #A2 #C3 WdfUsbTargetDeviceSelectConfig
#B0 #A1 WdfUsbTargetDeviceCreateUrb #A2 #C3
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Jak wybrać konfigurację urządzenia USB.

Jak wybrać alternatywne ustawienie w interfejsie USB.

UMDF:
Wybór konfiguracji nie jest obsługiwany

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Jak wybrać ustawienie interfejsu USB
WinUsb_SetCurrentAlternateSetting

3 — Wysyłaj transfery sterujące do konfigurowania urządzenia i wykonywania poleceń dostawcy specyficznych dla urządzenia.

Sterownik klienta Aplikacja UWP Aplikacja desktopowa systemu Windows
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

Jak wysłać transfer sterowania USB
SendControlInTransferAsync
SendControlOutTransferAsync

Jak wysłać transfer sterowania USB
WinUsb_ControlTransfer

Wyślij transfer kontrolny do domyślnego punktu końcowego

4 — Wysyłaj transfery zbiorcze, zwykle używane przez urządzenia magazynu masowego, które przesyłają dużą ilość danych.

Sterownik klienta Aplikacja platformy UNIWERSALNEJ systemu Windows Aplikacja klasyczna systemu Windows
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Jak wysyłać żądania transferu zbiorczego USB

Jak używać czytnika strumieniowego do odczytywania danych z potoku USB

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Jak wysłać żądanie transferu zbiorczego USB
WinUsb_WritePipe
WinUsb_ReadPipe

Problemy z żądaniami we/wy

5 — Wysyłanie transferów typu przerwanie. Dane są odczytywane w celu pobrania danych o przerwaniach sprzętowych.

Sterownik klienta Aplikacja UWP Aplikacja komputerowa Windows
Tak samo jak transfery zbiorcze UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Jak wysłać żądanie transferu przerwań USB
Tak samo jak transfery zbiorcze

6 — wysyłaj izochroniczne transfery, głównie używane na urządzeniach przesyłania strumieniowego multimediów.

Sterownik klienta Aplikacja UWP Windowsowa aplikacja desktopowa
KMDF:
#B0 #A1 WdfUsbTargetDeviceCreateIsochUrb #A2 #C3

Jak przesyłać dane do izochronicznych punktów końcowych USB

UMDF:
Niewspierane
Niewspierane WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Wysyłanie izochronicznych transferów USB z aplikacji klasycznej WinUSB

7 — selektywne wstrzymanie USB , aby umożliwić urządzeniu wejście w stan niskiego zasilania i przywrócenie stanu pracy urządzenia.

Sterownik klienta Aplikacja UWP Aplikacja desktopowa systemu Windows
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

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

Jak wysłać urządzenie do selektywnego wstrzymania
Niewspierane WinUsb_SetPowerPolicy

Zarządzanie energią WinUSB

Zobacz też