Поделиться через


Структура URB (usb.h)

Структура URB используется драйверами USB-клиента для описания блоков запросов USB (URB), которые отправляют запросы в стек драйверов USB. Структура URB определяет формат для всех возможных команд, которые можно отправить на USB-устройство.

Синтаксис

typedef struct _URB {
  union {
#if ...
    _URB_HEADER                                     UrbHeader;
#else
    struct _URB_HEADER                              UrbHeader;
#endif
#if ...
    _URB_SELECT_INTERFACE                           UrbSelectInterface;
#else
    struct _URB_SELECT_INTERFACE                    UrbSelectInterface;
#endif
#if ...
    _URB_SELECT_CONFIGURATION                       UrbSelectConfiguration;
#else
    struct _URB_SELECT_CONFIGURATION                UrbSelectConfiguration;
#endif
#if ...
    _URB_PIPE_REQUEST                               UrbPipeRequest;
#else
    struct _URB_PIPE_REQUEST                        UrbPipeRequest;
#endif
#if ...
    _URB_FRAME_LENGTH_CONTROL                       UrbFrameLengthControl;
#else
    struct _URB_FRAME_LENGTH_CONTROL                UrbFrameLengthControl;
#endif
#if ...
    _URB_GET_FRAME_LENGTH                           UrbGetFrameLength;
#else
    struct _URB_GET_FRAME_LENGTH                    UrbGetFrameLength;
#endif
#if ...
    _URB_SET_FRAME_LENGTH                           UrbSetFrameLength;
#else
    struct _URB_SET_FRAME_LENGTH                    UrbSetFrameLength;
#endif
#if ...
    _URB_GET_CURRENT_FRAME_NUMBER                   UrbGetCurrentFrameNumber;
#else
    struct _URB_GET_CURRENT_FRAME_NUMBER            UrbGetCurrentFrameNumber;
#endif
#if ...
    _URB_CONTROL_TRANSFER                           UrbControlTransfer;
#else
    struct _URB_CONTROL_TRANSFER                    UrbControlTransfer;
#endif
#if ...
    _URB_CONTROL_TRANSFER_EX                        UrbControlTransferEx;
#else
    struct _URB_CONTROL_TRANSFER_EX                 UrbControlTransferEx;
#endif
#if ...
    _URB_BULK_OR_INTERRUPT_TRANSFER                 UrbBulkOrInterruptTransfer;
#else
    struct _URB_BULK_OR_INTERRUPT_TRANSFER          UrbBulkOrInterruptTransfer;
#endif
#if ...
    _URB_ISOCH_TRANSFER                             UrbIsochronousTransfer;
#else
    struct _URB_ISOCH_TRANSFER                      UrbIsochronousTransfer;
#endif
#if ...
    _URB_CONTROL_DESCRIPTOR_REQUEST                 UrbControlDescriptorRequest;
#else
    struct _URB_CONTROL_DESCRIPTOR_REQUEST          UrbControlDescriptorRequest;
#endif
#if ...
    _URB_CONTROL_GET_STATUS_REQUEST                 UrbControlGetStatusRequest;
#else
    struct _URB_CONTROL_GET_STATUS_REQUEST          UrbControlGetStatusRequest;
#endif
#if ...
    _URB_CONTROL_FEATURE_REQUEST                    UrbControlFeatureRequest;
#else
    struct _URB_CONTROL_FEATURE_REQUEST             UrbControlFeatureRequest;
#endif
#if ...
    _URB_CONTROL_VENDOR_OR_CLASS_REQUEST            UrbControlVendorClassRequest;
#else
    struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST     UrbControlVendorClassRequest;
#endif
#if ...
    _URB_CONTROL_GET_INTERFACE_REQUEST              UrbControlGetInterfaceRequest;
#else
    struct _URB_CONTROL_GET_INTERFACE_REQUEST       UrbControlGetInterfaceRequest;
#endif
#if ...
    _URB_CONTROL_GET_CONFIGURATION_REQUEST          UrbControlGetConfigurationRequest;
#else
    struct _URB_CONTROL_GET_CONFIGURATION_REQUEST   UrbControlGetConfigurationRequest;
#endif
#if ...
    _URB_OS_FEATURE_DESCRIPTOR_REQUEST              UrbOSFeatureDescriptorRequest;
#else
    struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST       UrbOSFeatureDescriptorRequest;
#endif
#if ...
    _URB_OPEN_STATIC_STREAMS                        UrbOpenStaticStreams;
#else
    struct _URB_OPEN_STATIC_STREAMS                 UrbOpenStaticStreams;
#endif
#if ...
    _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS        UrbGetIsochPipeTransferPathDelays;
#else
    struct _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS UrbGetIsochPipeTransferPathDelays;
#endif
  };
} URB, *PURB;

Члены

UrbHeader

Предоставляет основные сведения о запросе, отправляемом драйверу контроллера узла. Дополнительные сведения см. в разделе _URB_HEADER.

UrbSelectInterface

Определяет формат команды интерфейса выбора для USB-устройства. Дополнительные сведения см. в разделе _URB_SELECT_INTERFACE.

UrbSelectConfiguration

Определяет формат команды выбора конфигурации для USB-устройства. Дополнительные сведения см. в разделе _URB_SELECT_CONFIGURATION.

UrbPipeRequest

Определяет формат команды для канала в конечной точке USB. Дополнительные сведения см. в разделе _URB_PIPE_REQUEST.

UrbFrameLengthControl

Не рекомендуется в операционных системах Windows 2000 и более поздних версий и не поддерживается корпорацией Майкрософт. Не используйте.

UrbGetFrameLength

Не рекомендуется в операционных системах Windows 2000 и более поздних версий и не поддерживается корпорацией Майкрософт. Не используйте.

UrbSetFrameLength

Не рекомендуется в операционных системах Windows 2000 и более поздних версий и не поддерживается корпорацией Майкрософт. Не используйте.

UrbGetCurrentFrameNumber

Определяет формат команды для получения текущего номера кадра на USB-шине. Дополнительные сведения см . в разделе _URB_GET_CURRENT_FRAME_NUMBER.

UrbControlTransfer

Определяет формат для команды для передачи или получения данных по каналу управления. Дополнительные сведения см. в разделе _URB_CONTROL_TRANSFER.

UrbControlTransferEx

Определяет формат для команды для передачи или получения данных по каналу управления. Дополнительные сведения см. в разделе _URB_CONTROL_TRANSFER_EX.

Определяет формат для команды для передачи или получения данных по каналу управления.

UrbBulkOrInterruptTransfer

Определяет формат для команды для передачи или получения данных по массовому каналу или для получения данных из канала прерывания. Дополнительные сведения см. в разделе _URB_BULK_OR_INTERRUPT_TRANSFER.

UrbIsochronousTransfer

Определяет формат изохронной передачи на USB-устройство. Дополнительные сведения см. в разделе _URB_ISOCH_TRANSFER.

UrbControlDescriptorRequest

Определяет формат команды для извлечения или задания дескрипторов на USB-устройстве. Дополнительные сведения см. в разделе _URB_CONTROL_DESCRIPTOR_REQUEST.

UrbControlGetStatusRequest

Определяет формат для команды для получения состояния с устройства, интерфейса или конечной точки. Дополнительные сведения см. в разделе _URB_CONTROL_GET_STATUS_REQUEST.

UrbControlFeatureRequest

Определяет формат команды для задания или очистки функций, определяемых USB, на устройстве, интерфейсе или конечной точке. Дополнительные сведения см. в разделе _URB_CONTROL_FEATURE_REQUEST.

UrbControlVendorClassRequest

Определяет формат для команды для отправки или получения запроса поставщика или класса на устройстве, интерфейсе, конечной точке или другом целевом объекте, определяемом устройством. Дополнительные сведения см. в разделе _URB_CONTROL_VENDOR_OR_CLASS_REQUEST.

UrbControlGetInterfaceRequest

Определяет формат команды для получения текущего альтернативного параметра интерфейса для выбранного интерфейса. Дополнительные сведения см. в разделе _URB_CONTROL_GET_INTERFACE_REQUEST.

UrbControlGetConfigurationRequest

Определяет формат команды для получения текущей конфигурации устройства. Дополнительные сведения см. в разделе _URB_CONTROL_GET_CONFIGURATION_REQUEST.

UrbOSFeatureDescriptorRequest

Определяет формат команды для запроса дескриптора ОС Майкрософт. Дополнительные сведения см. в разделе _URB_OS_FEATURE_DESCRIPTOR_REQUEST.

UrbOpenStaticStreams

Определяет формат команды для открытия потоков в массовой конечной точке устройства USB 3.0. Дополнительные сведения см. в разделах _URB_OPEN_STATIC_STREAMS и Как открывать и закрывать статические потоки в массовой конечной точке USB.

UrbGetIsochPipeTransferPathDelays

Определяет формат для команды для получения задержек, связанных с изохронным программированием передачи в контроллере узла, и завершения передачи, чтобы драйвер клиента смог гарантировать, что устройство получает изохронные пакеты во времени. Дополнительные сведения см. в разделе _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS.

Комментарии

Сведения о кодах функций, которые необходимо задать в каждой структуре, см. в разделе _URB_HEADER.

Требования

Требование Значение
Заголовок usb.h (включая Usb.h)

См. также раздел

IOCTL_INTERNAL_USB_SUBMIT_URB

Структуры USB