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


Функция 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-ввода-вывода.

Примеры

В следующем примере кода отправляется запрос 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 (include 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