From 3c58b1a6f699f308780900223a841df84da5dcad Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Thu, 24 Jun 2010 10:17:22 +0200 Subject: [PATCH] usbd.sys: Fix the test for type control endpoints. The value of USB_ENDPOINT_TYPE_CONTROL is 0 so and-ing with it makes no sense. --- dlls/usbd.sys/usbd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dlls/usbd.sys/usbd.c b/dlls/usbd.sys/usbd.c index 4727512be97..80fd02e0868 100644 --- a/dlls/usbd.sys/usbd.c +++ b/dlls/usbd.sys/usbd.c @@ -125,14 +125,21 @@ PURB WINAPI USBD_CreateConfigurationRequestEx( interfaceInfo->Pipes[i].MaximumPacketSize = endpointDescriptor->wMaxPacketSize; interfaceInfo->Pipes[i].EndpointAddress = endpointDescriptor->bEndpointAddress; interfaceInfo->Pipes[i].Interval = endpointDescriptor->bInterval; - if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_CONTROL) + switch (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_MASK) + { + case USB_ENDPOINT_TYPE_CONTROL: interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeControl; - else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_BULK) + break; + case USB_ENDPOINT_TYPE_BULK: interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeBulk; - else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_INTERRUPT) + break; + case USB_ENDPOINT_TYPE_INTERRUPT: interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeInterrupt; - else if (endpointDescriptor->bmAttributes & USB_ENDPOINT_TYPE_ISOCHRONOUS) + break; + case USB_ENDPOINT_TYPE_ISOCHRONOUS: interfaceInfo->Pipes[i].PipeType = UsbdPipeTypeIsochronous; + break; + } endpointDescriptor = (PUSB_ENDPOINT_DESCRIPTOR) USBD_ParseDescriptors( ConfigurationDescriptor, ConfigurationDescriptor->wTotalLength, endpointDescriptor + 1, USB_ENDPOINT_DESCRIPTOR_TYPE );