From: PRANAV KANT GAUR on
Given below are descriptors for my mass storage device obtained using USBVIEW
application:

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: High
Device Address: 0x03
Open Pipes: 3

Endpoint Descriptor:
bEndpointAddress: 0x01 OUT
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x01

Endpoint Descriptor:
bEndpointAddress: 0x82 IN
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x01

Endpoint Descriptor:
bEndpointAddress: 0x83 IN
Transfer Type: Interrupt
wMaxPacketSize: 0x0040 (64)
bInterval: 0x08


It indicates that device has one 'interrupt' type endpoint,is it the control
endpoint used for responding to IOCTL requests ?
If yes,then why it is not bi-directional as a control endpoint is always
bidirectional ?
If no,then why USB view has not given information regarding control endpoint ?
From: Tim Roberts on
PRANAV KANT GAUR <PRANAVKANTGAUR(a)discussions.microsoft.com> wrote:
>
>Given below are descriptors for my mass storage device obtained using USBVIEW
>application:
>...
>
>It indicates that device has one 'interrupt' type endpoint,is it the control
>endpoint used for responding to IOCTL requests ?

No, it is an "interrupt" endpoint.

There's no relationship between endpoints and ioctl requests. Many URBs do
go through the control endpoint (like descriptor requests and such), but
there are URBs for every endpoint type.

>If no,then why USB view has not given information regarding control endpoint ?

Every device has a control endpoint, with address 0. It's required, so
it's not shown in USBVIEW.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: Philip Ries [MSFT] on
The default control endpoint is described in the Device Descriptor,
rather than in an Endpoint Descriptor. Some Endpoint Descriptor fields
aren't described for endpoint 0 since they're the same for all devices'
endpoint 0.

I suspect the interrupt endpoint is in a different interface and isn't
used by the mass storage driver. Check in Device Manager -> View
devices by connection. Also USBView -> Options -> Config Descriptors
will show the interfaces.

PRANAV KANT GAUR wrote:
> Given below are descriptors for my mass storage device obtained using USBVIEW
> application:
>
> ConnectionStatus: DeviceConnected
> Current Config Value: 0x01
> Device Bus Speed: High
> Device Address: 0x03
> Open Pipes: 3
>
> Endpoint Descriptor:
> bEndpointAddress: 0x01 OUT
> Transfer Type: Bulk
> wMaxPacketSize: 0x0200 (512)
> bInterval: 0x01
>
> Endpoint Descriptor:
> bEndpointAddress: 0x82 IN
> Transfer Type: Bulk
> wMaxPacketSize: 0x0200 (512)
> bInterval: 0x01
>
> Endpoint Descriptor:
> bEndpointAddress: 0x83 IN
> Transfer Type: Interrupt
> wMaxPacketSize: 0x0040 (64)
> bInterval: 0x08
>
>
> It indicates that device has one 'interrupt' type endpoint,is it the control
> endpoint used for responding to IOCTL requests ?
> If yes,then why it is not bi-directional as a control endpoint is always
> bidirectional ?
> If no,then why USB view has not given information regarding control endpoint ?
From: PRANAV KANT GAUR on


"Philip Ries [MSFT]" wrote:

> The default control endpoint is described in the Device Descriptor,
> rather than in an Endpoint Descriptor. Some Endpoint Descriptor fields
> aren't described for endpoint 0 since they're the same for all devices'
> endpoint 0.
>
> I suspect the interrupt endpoint is in a different interface and isn't
> used by the mass storage driver. Check in Device Manager -> View
> devices by connection. Also USBView -> Options -> Config Descriptors
> will show the interfaces.
>
> PRANAV KANT GAUR wrote:
> > Given below are descriptors for my mass storage device obtained using USBVIEW
> > application:
> >
> > ConnectionStatus: DeviceConnected
> > Current Config Value: 0x01
> > Device Bus Speed: High
> > Device Address: 0x03
> > Open Pipes: 3
> >
> > Endpoint Descriptor:
> > bEndpointAddress: 0x01 OUT
> > Transfer Type: Bulk
> > wMaxPacketSize: 0x0200 (512)
> > bInterval: 0x01
> >
> > Endpoint Descriptor:
> > bEndpointAddress: 0x82 IN
> > Transfer Type: Bulk
> > wMaxPacketSize: 0x0200 (512)
> > bInterval: 0x01
> >
> > Endpoint Descriptor:
> > bEndpointAddress: 0x83 IN
> > Transfer Type: Interrupt
> > wMaxPacketSize: 0x0040 (64)
> > bInterval: 0x08
> >
> >
> > It indicates that device has one 'interrupt' type endpoint,is it the control
> > endpoint used for responding to IOCTL requests ?
> > If yes,then why it is not bi-directional as a control endpoint is always
> > bidirectional ?
> > If no,then why USB view has not given information regarding control endpoint ?
> .

Here is the configuration descriptor for my device,it shows only one
interface,what is the role of interrupt endpoint here(is it for interrupting
CPU for start of I/O etc. ?) ?

Configuration Descriptor:
wTotalLength: 0x0027
bNumInterfaces: 0x01
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0x80 (Bus Powered )
MaxPower: 0x31 (98 Ma)

Interface Descriptor:
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x03
bInterfaceClass: 0x08
bInterfaceSubClass: 0x06
bInterfaceProtocol: 0x50
iInterface: 0x00

Endpoint Descriptor:
bEndpointAddress: 0x01 OUT
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x01

Endpoint Descriptor:
bEndpointAddress: 0x82 IN
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x01

Endpoint Descriptor:
bEndpointAddress: 0x83 IN
Transfer Type: Interrupt
wMaxPacketSize: 0x0040 (64)
bInterval: 0x08

 | 
Pages: 1
Prev: USB device name
Next: Error code:0xc00000bb