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


Функция WdfUsbInterfaceGetConfiguredPipe (wdfusb.h)

[Применимо к KMDF и UMDF]

Метод WdfUsbInterfaceGetConfiguredPipe возвращает дескриптор объекту канала платформы, связанному с указанным интерфейсом USB-устройства и индексом канала. При необходимости метод также возвращает сведения о канале.

Синтаксис

WDFUSBPIPE WdfUsbInterfaceGetConfiguredPipe(
  [in]                WDFUSBINTERFACE           UsbInterface,
  [in]                UCHAR                     PipeIndex,
  [in, out, optional] PWDF_USB_PIPE_INFORMATION PipeInfo
);

Параметры

[in] UsbInterface

Дескриптор объекта интерфейса USB, полученный путем вызова WdfUsbTargetDeviceGetInterface.

[in] PipeIndex

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

[in, out, optional] PipeInfo

Указатель на структуру, выделенную вызывающим объектом WDF_USB_PIPE_INFORMATION , заполняемую платформой. Этот параметр является необязательным и может иметь значение NULL.

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

Если операция выполнена успешно, WdfUsbInterfaceGetConfiguredPipe возвращает дескриптор для объекта канала платформы, связанного с указанным объектом интерфейса и индексом канала. Метод возвращает значение NULL , если размер структуры WDF_USB_PIPE_INFORMATION неверный или значение индекса канала слишком велико.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Драйвер может вызывать WdfUsbInterfaceGetConfiguredPipe после вызова WdfUsbTargetDeviceSelectConfig.

Дополнительные сведения о методе WdfUsbInterfaceGetConfiguredPipe и целевых объектах USB-ввода-вывода см. в разделе Usb I/O Targets.

Примеры

В следующем примере кода отправляется запрос прерывания USB в каждый настроенный канал указанного ИНТЕРФЕЙСА USB.

BYTE  count, i;
NTSTATUS  status;

count = WdfUsbInterfaceGetNumConfiguredPipes(UsbInterface);

for (i = 0; i < count; i++) {
    WDFUSBPIPE pipe;
    pipe = WdfUsbInterfaceGetConfiguredPipe(
                                            UsbInterface,
                                            i,
                                            NULL
                                            );
    status = WdfUsbTargetPipeAbortSynchronously(
                                            pipe,
                                            WDF_NO_HANDLE,
                                            NULL
                                            );

    if (!NT_SUCCESS(status)) {
        break;
    }
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfusb.h (включая Wdfusb.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf)

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

WDF_USB_PIPE_INFORMATION

WdfUsbInterfaceGetNumConfiguredPipes

WdfUsbTargetDeviceGetInterface

WdfUsbTargetDeviceSelectConfig