From: Carl-Fredrik Neikter on
Hello

We are facing a problem with a device driver to an USB-device. The USB
device is a Cinterion EU3, which is connected to our computer. During certain
circumstances, we need to restart the USB device by the AT^SMSO (Switch Off
Mobile Station) command. We can also control the shutdown of the USB device
by certain control signals (emergency reset).

However, after a shutdown and restart, the USB device is not recognized
correctly in Windows any longer. Windows reports Code 38 ("Windows cannot
load the device driver for this hardware because a previous instance of the
device driver is still in memory"). In other words, the removal (plug off) of
the device seems to be the culprit. The driver(s) cannot unload itself
completely during removal. The driver in question is USB Composite Device
(usbccgp.sys).

The USB Composite Device is a standard Microsoft driver. We have tried to
plug-in, remove and plug-in another composite device (keyboard/mouse) with no
problem at all. So it might also be the case that the dependent Cinterion
driver eu3eusbser.sys have an inherent problem that spreads to the composite
device driver.

Please note that before shut off and removal of the device, we try to close
all possible handles to the device. So this should not be a problem. Also
note that just trying do disable/enable the composite device in Device
Manager also gives the same driver loading problem, i.e. Code 38.

How should we continue the error tracing to pinpoint the problem?

--Carl-Fredrik

From: Pavel A. on
From your description, the eu3eusbser.sys seems to be the culprit.
Possibly it holds some IRP pending, or something like that.
--pa

"Carl-Fredrik Neikter" <CarlFredrikNeikter(a)discussions.microsoft.com> wrote
in message news:16C6BD99-2FAC-4FCE-99E6-DF66B7E6F0D3(a)microsoft.com...
> Hello
>
> We are facing a problem with a device driver to an USB-device. The USB
> device is a Cinterion EU3, which is connected to our computer. During
> certain
> circumstances, we need to restart the USB device by the AT^SMSO (Switch
> Off
> Mobile Station) command. We can also control the shutdown of the USB
> device
> by certain control signals (emergency reset).
>
> However, after a shutdown and restart, the USB device is not recognized
> correctly in Windows any longer. Windows reports Code 38 ("Windows cannot
> load the device driver for this hardware because a previous instance of
> the
> device driver is still in memory"). In other words, the removal (plug off)
> of
> the device seems to be the culprit. The driver(s) cannot unload itself
> completely during removal. The driver in question is USB Composite Device
> (usbccgp.sys).
>
> The USB Composite Device is a standard Microsoft driver. We have tried to
> plug-in, remove and plug-in another composite device (keyboard/mouse) with
> no
> problem at all. So it might also be the case that the dependent Cinterion
> driver eu3eusbser.sys have an inherent problem that spreads to the
> composite
> device driver.
>
> Please note that before shut off and removal of the device, we try to
> close
> all possible handles to the device. So this should not be a problem. Also
> note that just trying do disable/enable the composite device in Device
> Manager also gives the same driver loading problem, i.e. Code 38.
>
> How should we continue the error tracing to pinpoint the problem?
>
> --Carl-Fredrik
>
From: Philip Ries [MSFT] on
I've never dealt with a Code 38, but this blog post might help.

"Why doesn't my driver unload?"
http://blogs.msdn.com/b/usbcoreblog/archive/2009/10/06/why-doesn-t-my-driver-unload.aspx

Specifically you could try the debugger commands near the end.

On 10/5/2010 2:32 AM, Pavel A. wrote:
> From your description, the eu3eusbser.sys seems to be the culprit.
> Possibly it holds some IRP pending, or something like that.
> --pa
>
> "Carl-Fredrik Neikter" <CarlFredrikNeikter(a)discussions.microsoft.com>
> wrote in message news:16C6BD99-2FAC-4FCE-99E6-DF66B7E6F0D3(a)microsoft.com...
>> Hello
>>
>> We are facing a problem with a device driver to an USB-device. The USB
>> device is a Cinterion EU3, which is connected to our computer. During
>> certain
>> circumstances, we need to restart the USB device by the AT^SMSO
>> (Switch Off
>> Mobile Station) command. We can also control the shutdown of the USB
>> device
>> by certain control signals (emergency reset).
>>
>> However, after a shutdown and restart, the USB device is not recognized
>> correctly in Windows any longer. Windows reports Code 38 ("Windows cannot
>> load the device driver for this hardware because a previous instance
>> of the
>> device driver is still in memory"). In other words, the removal (plug
>> off) of
>> the device seems to be the culprit. The driver(s) cannot unload itself
>> completely during removal. The driver in question is USB Composite Device
>> (usbccgp.sys).
>>
>> The USB Composite Device is a standard Microsoft driver. We have tried to
>> plug-in, remove and plug-in another composite device (keyboard/mouse)
>> with no
>> problem at all. So it might also be the case that the dependent Cinterion
>> driver eu3eusbser.sys have an inherent problem that spreads to the
>> composite
>> device driver.
>>
>> Please note that before shut off and removal of the device, we try to
>> close
>> all possible handles to the device. So this should not be a problem. Also
>> note that just trying do disable/enable the composite device in Device
>> Manager also gives the same driver loading problem, i.e. Code 38.
>>
>> How should we continue the error tracing to pinpoint the problem?
>>
>> --Carl-Fredrik
>>
From: Asaf Shelly on
Hi,

It is possible that the device driver is keeping the usb driver open.
It is also possible that the device is not disconnecting the pull-up. This
is how the device is supposed to signal that it is no longer connected.

What happens when you physically disconnect the device and plug it in again?

Maybe you can try installing WinUSB as the device driver and see how it
behaves.

You can also write a lower filter to the device driver to listen to what it
is doing and make sure that it is really closing all of its connections.

Regards,
Asaf



"Carl-Fredrik Neikter" wrote:

> Hello
>
> We are facing a problem with a device driver to an USB-device. The USB
> device is a Cinterion EU3, which is connected to our computer. During certain
> circumstances, we need to restart the USB device by the AT^SMSO (Switch Off
> Mobile Station) command. We can also control the shutdown of the USB device
> by certain control signals (emergency reset).
>
> However, after a shutdown and restart, the USB device is not recognized
> correctly in Windows any longer. Windows reports Code 38 ("Windows cannot
> load the device driver for this hardware because a previous instance of the
> device driver is still in memory"). In other words, the removal (plug off) of
> the device seems to be the culprit. The driver(s) cannot unload itself
> completely during removal. The driver in question is USB Composite Device
> (usbccgp.sys).
>
> The USB Composite Device is a standard Microsoft driver. We have tried to
> plug-in, remove and plug-in another composite device (keyboard/mouse) with no
> problem at all. So it might also be the case that the dependent Cinterion
> driver eu3eusbser.sys have an inherent problem that spreads to the composite
> device driver.
>
> Please note that before shut off and removal of the device, we try to close
> all possible handles to the device. So this should not be a problem. Also
> note that just trying do disable/enable the composite device in Device
> Manager also gives the same driver loading problem, i.e. Code 38.
>
> How should we continue the error tracing to pinpoint the problem?
>
> --Carl-Fredrik
>
From: Asaf Shelly on
Hi,

It is possible that the device driver is keeping the usb driver open.
It is also possible that the device is not disconnecting the pull-up. This
is how the device is supposed to signal that it is no longer connected.

What happens when you physically disconnect the device and plug it in again?

Maybe you can try installing WinUSB as the device driver and see how it
behaves.

You can also write a lower filter to the device driver to listen to what it
is doing and make sure that it is really closing all of its connections.

Regards,
Asaf


"Carl-Fredrik Neikter" wrote:

> Hello
>
> We are facing a problem with a device driver to an USB-device. The USB
> device is a Cinterion EU3, which is connected to our computer. During certain
> circumstances, we need to restart the USB device by the AT^SMSO (Switch Off
> Mobile Station) command. We can also control the shutdown of the USB device
> by certain control signals (emergency reset).
>
> However, after a shutdown and restart, the USB device is not recognized
> correctly in Windows any longer. Windows reports Code 38 ("Windows cannot
> load the device driver for this hardware because a previous instance of the
> device driver is still in memory"). In other words, the removal (plug off) of
> the device seems to be the culprit. The driver(s) cannot unload itself
> completely during removal. The driver in question is USB Composite Device
> (usbccgp.sys).
>
> The USB Composite Device is a standard Microsoft driver. We have tried to
> plug-in, remove and plug-in another composite device (keyboard/mouse) with no
> problem at all. So it might also be the case that the dependent Cinterion
> driver eu3eusbser.sys have an inherent problem that spreads to the composite
> device driver.
>
> Please note that before shut off and removal of the device, we try to close
> all possible handles to the device. So this should not be a problem. Also
> note that just trying do disable/enable the composite device in Device
> Manager also gives the same driver loading problem, i.e. Code 38.
>
> How should we continue the error tracing to pinpoint the problem?
>
> --Carl-Fredrik
>