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


Структура 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