Power Management in WDM Kernel Streaming Mini Driver

Hi All:

I have to write a kernel streaming mini driver for my pc camera on
USB1.1 without USBCAMD. Beside, I want to add “Remote-Wakeup”
functionality in my pc-camera solution.

Hardware:

  1. Enable “Remote-Wakeup” in the configuration descriptor.
    (bmAttributes:D5 == 1)
  2. Put a button on my device for triggering wakeup event.
  3. My device can pass the HCT11.2 device framework(CV) test,
    supposedly, my device is OK to support “Remote-Wakeup”.

Software:

  1. Now, I don’t issue “IRP_MN_WAIT_WAKE” in my mini driver,
    therefor, our driver doesn’t support “Remote-Wakeup”.
  2. My mini driver can run perfectly on WindowsXP.
    (pass HCT11.2 Video Capture Device)
  3. On Windows2000 with SP3:
    (1)Plug device.
    (2)Run AmCap.
    (3)Preview smooth video from my device.
    (4)Close AmCap.
    (5)Suspend system to “Standby:S3”(or “Hibernate:S4”)
    Mini driver receives “SRB_CHANGE_POWER_STATE” with
    pSrb->Command.DeviceState==PowerDeviceD3.
    (6)Wake up the system.(move PS2 mouse)
    (7)The system wakes.(S0)
    Then mini driver receives “SRB_CHANGE_POWER_STATE” with
    pSrb->Command.DeviceState==PowerDeviceD2
    (8)From now on, I can’t preview video from our device
    unless I unplug the device and plug it again.
    (9)If I disable “Remote-Wakeup” in configuration descriptor
    (bmAttributes:D5 == 0), then everything will be OK.
  4. My questions are:
    (1)if I enable “Remote-Wakeup” in configuration descriptor, how
    can I make my device to wake up correctly when system wakes
    from S3 and S4?
    (2)What should I do to make my mini driver to support "Remote-
    Wakeup?
    (3)There is no related information in DDK(s). Where can I get
    related documents?

Chih-Hsiung Shih