USB Bulk transfer prevents system to enter standby

device driver

    Sponsored Links

    Next

  • 1. Changing report descriptor in HID filter driver. How??
    I have a USB device that Vista refuses to put on a gaming devices list due to some problems with its report descriptor. It works fine on any other Windows and non-Windows OSes. I am trying to write a filter driver to alter (=fix) report descriptor but I can't start... I have looked at kernel mode HID\firefly filter driver example but I cannot figure out how can I get access to HID device details during the IRP_MN_START_DEVICE processing. All I wanted to do is something along the lines of... deviceHIDInfo->ReportDescriptor = NewReportDescriptor; deviceHIDInfo->HidDescriptor.DescriptorList[0].wReportLength = ...; But how do I drill to this structure? Is it available at all during servicing IRP_MJ_PNP? I am a bit lost... Any help is greatly appreciated.
  • 2. USB to RS232C driver topic
    I ma making USB-RS232C device driver. When IOCTL_SERIAL_GET_COMMSTATUS requested, my driver have to return a SERIAL_STATUS structure. But, I can't search informations about SERIAL_STATUS structure. Would you give me any documents about this structure ? Second problem is about Hyper Terminal close timing. When Hyper Terminal closed,
  • 3. Calling OutputCharStr method
    Hi, OutputCharStr (Oemuni DDK sample) is not getting called while printing TrueType font text. Only for device fonts printing its getting called. Even I have returned S_OK for OutputCharStr in GetImplementedMethod. I would like to know is there any way to call this method when printing TrueType fonts? Shankar B.
  • 4. Why NDIS Specific Memory Functions
    Why would you need NdisAllocateMemory and NdisFreeMemory etc when you can use the generic non-paged memory?

USB Bulk transfer prevents system to enter standby

Postby Christoph Diener » Thu, 14 May 2009 16:33:47 GMT

Hi,
with the energy options under Windows XP it is possible to set the system to 
standby after a predefinied time.

But unfortunately Windows XP does not send PowerBroadcast Messages as long 
as my application receives image-data over an USB-Bulk pipe from our device 
and it does not enter the standby mode either. I am not able to recognize 
that I must cancel my image-transfers so the system can go sleeping, because 
I just do not get Power messages at all.

My bulk transfers are seamlessly overlapped, so there is never a gap. Maybe 
that is a problem for Windows?
i figured out, that I get power messages and the system enters the 
standby-mode when I transfer images in non overlapped mode.

I observed the same behaviour, when I copy files to or from an USB-memory 
drive. Then the system goes to standby after the file transfer is done and 
the standby time is over.

What can I do to let windows go into the standby automatically while having 
overlapped usb-bulk transfers?

Thanks in advance,
Christoph 



Re: USB Bulk transfer prevents system to enter standby

Postby Doron Holan [MSFT] » Fri, 15 May 2009 08:24:09 GMT

are you using an inbox driver or your own?  if your own, are you sure your 
driver does not get a query Sx power irp?  perhaps your driver is failing 
this irp while io is outstanding.  by predefined time, do you mean time that 
the machine is idle? does your driver call PoSetSystemState 
(ES_USER_PRESENT);?

-- 

This posting is provided "AS IS" with no warranties, and confers no rights.







Re: USB Bulk transfer prevents system to enter standby

Postby Christoph Diener » Sat, 16 May 2009 20:47:00 GMT

Thanks you for the answer!
Yes, it is my own driver, based on bulkusb sample of WinDDK\6000, but I 
modified the
data-transfer function, so that large requests are splitted into smaller 
requests, all send down at the same time.

I do not call PoSetSystemState (ES_USER_PRESENT).

No query Sx power irp is arriving, i.e. the DispatchPower routine is not 
called, as long as the overlapped bulk transfers are running.

I figured out that, when the sustem enters standby the application first 
gets a WM_POWERBROADCAST Message and after that, the driver receives a power 
irp. But in my case during overlapped requests even the application never 
gets a WM_POWERBROADCAST Message, so the systems idle timer was not expired 
or maybe not even running.

When I permanentely send overlapped requests down from applications site, 
the systems does not go to standby.
But if I send those requests permanentely, but not overlapped, the system 
enters standby after the defined standby idle time - as expected.

So I assume that the idle timer does not run as long as overlapped bulk 
transfers are running.
Any clue what I can do to make the system feel like being idle?













Similar Threads:

1.File Transfer stopped while system entered standby in Windows XP

H
    I have a question, is it normal for File Transfer stopped while system entered standby mode in WinXP or Win2K
if it is abnormal, does Microsoft has any document described related to this 

Benajmi

2.Floppy driver preventing machine form entering standby

This message has been appearing after the commputer trys to
enter standby mode while idle:

"The device driver for the "Floppy disk drive" is
preventing the machine from entering standby."

The OS is Windows 2000, computer is a Dell 8200.  I've
checked for driver updates, and windows updates.  All are
current.  Any have an idea what is going on and how to
correct it?

3.Modem driver prevents system Standby?

Wife's PC with XP Media center edition will not go into a "standby" mode 
shutdown.  It always comes up w/ the following kind of  message:
"System Standby failed
 The device driver for the "Conexant D850 data/fax/voice modem" device is 
preventing the machine from entering standby. Please close all applications 
and try again. 
If the problem persists, you may need  to update the driver. "

However,  it appears that the driver that's installed is at least as  recent 
as the one that Dell provides as an update (citing a different problem fix -- 
conflict with Power DVD software).   Conexant does not offer a clearly later 
one either.   

I don't get why a driver would prevent the PC from using Standby.  Is there 
some setting to turn off that will pacify the driver?   (Otherwise I can't 
find info on whether any other driver for sale is any better than what it 
has.  Actually, we don't use the 56K modem but I'm not keen about taking it 
out just because of this. )   

Any useful ideas, please?


4.Driver prevent S1 standby but aloow S3 standby ?

Hi,

Our device driver is a USB port driver sitting below a mouse class
driver.
I found if I set the BIOS option "Suspend to RAM enabled (S3)".. WinXP
is able to go to standby with our deivce attached.
While if BIOS option "Suspend to RAM disabled(S1)".. system would claim
that our driver prevent the system going to standby..
The following is a bit of debug info...

I found our driver return success for Query Power,, but system just set
the device to D0..when S1 .. ,, (while it would set device to D3 when
S3 Query..)
Any hint for that ?

Thanks.
-chueh8


TSC(IRQL 00): TSCPowerDispatch++. IRP 8273AE48
TSC(IRQL 00):     IRP 8273AE48 IRP_MJ_POWER
TSC(IRQL 00):     IRP_MN_QUERY_POWER
TSC(IRQL 00):     PowerSystemSleeping1
TSC(IRQL 00): ............Query Power  8273ae48....

TSC(IRQL 00): query system power

TSC(IRQL 00): TSCSystemPowerDispatch++. IRP 8273AE48
TSC(IRQL 00): TSCSystemPowerCompletionRoutine++. IRP 8273AE48 STATUS 0
TSC(IRQL 00): KKK1

TSC(IRQL 00): TSCGetDevicePowerState++. PowerSystemSleeping1
TSC(IRQL 00): System State =2

TSC(IRQL 00): DeviceExtension->DeviceCaps.SystemWake =4

TSC(IRQL 00): DeviceExtension->DeviceCaps.DeviceState[SystemState] =3

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD3 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD2 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD1 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD0 =1

TSC(IRQL 00): 333

TSC(IRQL 00): TSCGetDevicePowerState--. PowerDeviceD3 STATUS 0
TSC(IRQL 00): Get Device Power state  status=0

TSC(IRQL 00): KKK2

TSC(IRQL 00): TSCDevicePowerCompleteCallback++. IRP 8273AE48
TSC(IRQL 00): TSCDevicePowerCompleteCallback--
TSC(IRQL 00): KKK4

TSC(IRQL 00): TSCSystemPowerCompletionRoutine--. Irp 8273AE48 STATUS
103
TSC(IRQL 00): TSCSystemPowerDispatch--. IRP 8273AE48
TSC(IRQL 00): TSCPowerDispatch--. IRP 8273AE48 STATUS 103
TSC(IRQL 00): TSCPowerDispatch++. IRP 8273A008
TSC(IRQL 00):     IRP 8273A008 IRP_MJ_POWER
TSC(IRQL 00):     IRP_MN_SET_POWER
TSC(IRQL 00):     PowerSystemWorking
TSC(IRQL 00): ............PDO set power 1 ....

TSC(IRQL 00): set sys power

TSC(IRQL 00): TSCSystemPowerDispatch++. IRP 8273A008
TSC(IRQL 00): TSCSystemPowerCompletionRoutine++. IRP 8273A008 STATUS 0
TSC(IRQL 00): KKK1

TSC(IRQL 00): TSCGetDevicePowerState++. PowerSystemWorking
TSC(IRQL 00): System State =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.SystemWake =4

TSC(IRQL 00): DeviceExtension->DeviceCaps.DeviceState[SystemState] =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD3 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD2 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD1 =1

TSC(IRQL 00): DeviceExtension->DeviceCaps.WakeFromD0 =1

TSC(IRQL 00): 111

TSC(IRQL 00): TSCGetDevicePowerState--. PowerDeviceD0 STATUS 0
TSC(IRQL 00): Get Device Power state  status=0

TSC(IRQL 00): KKK2

TSC(IRQL 00): TSCPowerDispatch++. IRP 82440430
TSC(IRQL 00):     IRP 82440430 IRP_MJ_POWER
TSC(IRQL 00):     IRP_MN_SET_POWER
TSC(IRQL 00):     PowerDeviceD0
TSC(IRQL 00): ............PDO set power 1 ....

TSC(IRQL 00): set device power

TSC(IRQL 00): device same power

TSC(IRQL 00): device same power 2

TSC(IRQL 00): TSCPowerD0PrepCallback++. IRP 82440430
TSC(IRQL 00): TSCDevicePowerCompleteCallback++. IRP 8273A008
TSC(IRQL 00): TSCDevicePowerCompleteCallback--
TSC(IRQL 00): TSCPowerD0PrepCallback--
TSC(IRQL 00): TSCPowerDispatch--. IRP 82440430 STATUS 103
TSC(IRQL 00): KKK4

TSC(IRQL 00): TSCSystemPowerCompletionRoutine--. Irp 8273A008 STATUS
103
TSC(IRQL 00): TSCSystemPowerDispatch--. IRP 8273A008
TSC(IRQL 00): TSCPowerDispatch--. IRP 8273A008 STATUS 103
Abort: \Driver\Mouclass \Device\PointerClass1 irp (8273ae48)
QueryPower-Sleeping1 status c00002d3

5.WDM USB Bulk Transfer problems

Whilst using the DDK, I've had problems with USB bulk 
transfers.  Small transfers work fine, but larger 
transfers (around 57000 bytes broken down into 256 byte 
packets) cause the driver to fail.

I know for a fact that the device is fine, and my 
investigations seem to point to the WDM drivers.

Has anyone else had a similar problem, and if this was 
resolved, how was this achieved?

Cheers

6. usb bulk transfer driver crash

7. XP USB driver stack/lost bytes on bulk transfer

8. Bulk USB transfer fails to trigger IRP completion routine



Return to device driver

 

Who is online

Users browsing this forum: No registered users and 83 guest