Discussion:
WdfUsbTargetDeviceCreate creates NULL Control Pipe Handle
(too old to reply)
suresh
2010-07-20 12:30:59 UTC
Permalink
Hi,

We have a usb composite device which has one mass storage interface
and another as a network interface. We are developing a WDF driver
(NDIS-USB) for the network interface.

Immediately after WdfUsbTargetDeviceCreate if I break into the
debugger and examine the newly created device, then I see that the
Control Pipe Handle is NULL!
Here is the actual output:
--------
kd> !WDFUSBDEVICE 0x0000057f`fe5905f8

WDFUSBDEVICE 0000057ffe5905f8
=============================
Config descriptor fffffa80037216b0, device descriptor fffffa8001a6fb58
Control USBD_PIPE_HANDLE 0000000000000000
Num interfaces 1

device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000200

WDFUSBINTERFACE 0000057ffe56e8f8
Interface Number 0x01 Class 0xff, SubClass 0x00, Protocol 0x00
Alt Setting 0, Num Endpoints 2, Interface Desc fffffa80037216b9
--------

We also have another usb based ehternet device (which is not a
composite device) whose driver doesn't have this problem. Actually
this driver (WHQL certified) is only being ported for the composite
device.
The output at the same place using the working driver is:
---------
kd> !WDFUSBDEVICE 0x0000057f`fc466478

WDFUSBDEVICE 0000057ffc466478
=============================
Config descriptor fffffa80036c3790, device descriptor fffffa8003b99cd8
Control USBD_PIPE_HANDLE fffffa8001ae5060
Num interfaces 1

device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000110

WDFUSBINTERFACE 0000057ffd829558
Interface Number 0x00 Class 0xff, SubClass 0x00, Protocol 0xff
Alt Setting 0, Num Endpoints 3, Interface Desc fffffa80036c3799
---------

I am wondering if the composite device architecture has something to
do with it, and if I missed any important step in the initialization.
However this is actually just the start of device initialization.

Some pointers will be of a great help.

Regards,
Suresh
Philip Ries [MSFT]
2010-07-20 18:37:29 UTC
Permalink
What version of Windows is this? Do control transfers actually work? I
suspect there is actually nothing wrong here.
Post by suresh
Hi,
We have a usb composite device which has one mass storage interface
and another as a network interface. We are developing a WDF driver
(NDIS-USB) for the network interface.
Immediately after WdfUsbTargetDeviceCreate if I break into the
debugger and examine the newly created device, then I see that the
Control Pipe Handle is NULL!
--------
kd> !WDFUSBDEVICE 0x0000057f`fe5905f8
WDFUSBDEVICE 0000057ffe5905f8
=============================
Config descriptor fffffa80037216b0, device descriptor fffffa8001a6fb58
Control USBD_PIPE_HANDLE 0000000000000000
Num interfaces 1
device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000200
WDFUSBINTERFACE 0000057ffe56e8f8
Interface Number 0x01 Class 0xff, SubClass 0x00, Protocol 0x00
Alt Setting 0, Num Endpoints 2, Interface Desc fffffa80037216b9
--------
We also have another usb based ehternet device (which is not a
composite device) whose driver doesn't have this problem. Actually
this driver (WHQL certified) is only being ported for the composite
device.
---------
kd> !WDFUSBDEVICE 0x0000057f`fc466478
WDFUSBDEVICE 0000057ffc466478
=============================
Config descriptor fffffa80036c3790, device descriptor fffffa8003b99cd8
Control USBD_PIPE_HANDLE fffffa8001ae5060
Num interfaces 1
device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000110
WDFUSBINTERFACE 0000057ffd829558
Interface Number 0x00 Class 0xff, SubClass 0x00, Protocol 0xff
Alt Setting 0, Num Endpoints 3, Interface Desc fffffa80036c3799
---------
I am wondering if the composite device architecture has something to
do with it, and if I missed any important step in the initialization.
However this is actually just the start of device initialization.
Some pointers will be of a great help.
Regards,
Suresh
suresh
2010-07-21 05:36:04 UTC
Permalink
Thanks for the response and sorry for not mentioning the platform
earlier. It is Windows 7 64 bit with Intel 2 GHz 2 processors and 2 GB
of RAM.
Control transfers definately work because the other usb-ethernet
device is working fine in this setup.
We also have Windows XP installed in the same PC and there the WDM
version of the driver works just fine whose WDF counterpart is failing
on Windows 7.
In fact the same WDM driver works on Windows 7 too, but we need a WDF
driver for certification.

Regards,
Suresh
What version of Windows is this?  Do control transfers actually work?  I
suspect there is actually nothing wrong here.
Post by suresh
Hi,
We have a usb composite device which has one mass storage interface
and another as a network interface. We are developing a WDF driver
(NDIS-USB) for the network interface.
Immediately after WdfUsbTargetDeviceCreate if I break into the
debugger and examine the newly created device, then I see that the
Control Pipe Handle is NULL!
--------
kd> !WDFUSBDEVICE 0x0000057f`fe5905f8
WDFUSBDEVICE 0000057ffe5905f8
=============================
Config descriptor fffffa80037216b0, device descriptor fffffa8001a6fb58
Control USBD_PIPE_HANDLE 0000000000000000
Num interfaces 1
device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000200
WDFUSBINTERFACE 0000057ffe56e8f8
   Interface Number 0x01 Class 0xff, SubClass 0x00, Protocol 0x00
   Alt Setting 0, Num Endpoints 2, Interface Desc fffffa80037216b9
--------
We also have another usb based ehternet device (which is not a
composite device) whose driver doesn't have this problem. Actually
this driver (WHQL certified) is only being ported for the composite
device.
---------
kd> !WDFUSBDEVICE 0x0000057f`fc466478
WDFUSBDEVICE 0000057ffc466478
=============================
Config descriptor fffffa80036c3790, device descriptor fffffa8003b99cd8
Control USBD_PIPE_HANDLE fffffa8001ae5060
Num interfaces 1
device attached to a USBPORT serviced core stack
USBDI Version 0x00000600, Supported USB Version 0x00000110
WDFUSBINTERFACE 0000057ffd829558
   Interface Number 0x00 Class 0xff, SubClass 0x00, Protocol 0xff
   Alt Setting 0, Num Endpoints 3, Interface Desc fffffa80036c3799
---------
I am wondering if the composite device architecture has something to
do with it, and if I missed any important step in the initialization.
However this is actually just the start of device initialization.
Some pointers will be of a great help.
Regards,
Suresh- Hide quoted text -
- Show quoted text -
Tim Roberts
2010-07-21 05:48:53 UTC
Permalink
Post by suresh
We have a usb composite device which has one mass storage interface
and another as a network interface. We are developing a WDF driver
(NDIS-USB) for the network interface.
Immediately after WdfUsbTargetDeviceCreate if I break into the
debugger and examine the newly created device, then I see that the
Control Pipe Handle is NULL!
I suspect Philip is right. URBs that are destined for the default control
endpoint do not need a pipe handle, so the fact that the structure doesn't
contain one is irrelevant.
--
Tim Roberts, ***@probo.com
Providenza & Boekelheide, Inc.
Loading...