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


функция WinUsb_QueryPipe (winusb.h)

Функция WinUsb_QueryPipe извлекает сведения об указанной конечной точке и связанном канале для интерфейса.

Синтаксис

BOOL WinUsb_QueryPipe(
  [in]  WINUSB_INTERFACE_HANDLE  InterfaceHandle,
  [in]  UCHAR                    AlternateInterfaceNumber,
  [in]  UCHAR                    PipeIndex,
  [out] PWINUSB_PIPE_INFORMATION PipeInformation
);

Параметры

[in] InterfaceHandle

Непрозрачный дескриптор интерфейса, который содержит конечную точку, с которой связан канал.

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

[in] AlternateInterfaceNumber

Значение типа , указывающее альтернативный интерфейс для возврата сведений.

[in] PipeIndex

Значение типа , указывающее канал для возврата сведений. Это значение не совпадает с полем bEndpointAddress в дескрипторе конечной точки. Значение PipeIndex , равное 0, означает первую конечную точку, связанную с интерфейсом, значение 1 означает вторую конечную точку и т. д. Значение PipeIndex должно быть меньше значения в поле bNumEndpoints дескриптора интерфейса.

[out] PipeInformation

Указатель на выходе на структуру, выделенную вызывающим объектом WINUSB_PIPE_INFORMATION , содержащую сведения о канале.

Возвращаемое значение

WinUsb_QueryPipe возвращает значение TRUE , если операция выполнена успешно. В противном случае эта функция возвращает значение FALSE, и вызывающий объект может получить зарегистрированную ошибку, вызвав Метод GetLastError.

GetLastError может вернуть следующий код ошибки.

Код возврата Описание
ERROR_INVALID_HANDLE
Вызывающий объект передал значение NULL в параметре InterfaceHandle .
ERROR_INVALID_PARAMETER
Вызывающий объект передал значение NULL в параметре PipeInformation ; Не удалось найти дескриптор интерфейса для дескриптора, указанного в InterfaceHandle.
ERROR_NO_MORE_ITEMS
Значение, переданное в параметре PipeIndex , больше значения bNumEndpoints дескриптора интерфейса; Не удалось найти дескриптор конечной точки для указанного интерфейса.

Комментарии

Функция WinUsb_QueryPipe не получает сведения о канале управления.

Каждый интерфейс на USB-устройстве может иметь несколько конечных точек. Для взаимодействия с каждой из этих конечных точек драйвер шины создает каналы для каждой конечной точки в интерфейсе. Индексы канала отсчитываются от нуля. Таким образом, для n числа конечных точек индексы каналов задаются из n–1. WinUsb_QueryPipe анализирует дескриптор конфигурации, чтобы получить интерфейс, заданный вызывающим объектом. Он выполняет поиск дескриптора интерфейса для дескриптора конечной точки, связанного с каналом, указанным вызывающим объектом. Если конечная точка найдена, функция заполняет структуру, выделенную вызывающим объектом, WINUSB_PIPE_INFORMATION сведениями из дескриптора конечной точки.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть winusb.h (включая Winusb.h)
Библиотека Winusb.lib
DLL Winusb.dll

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

WINUSB_PIPE_INFORMATION

WinUSB

Функции WinUSB

WinUsb_Initialize