Hi everybody,

I'm developing a application to run over Windows XP embedded and have some
troubles with
the usb flash memory handling.

My application needs to do some job when a USB flash memory is
Removed/Inserted in any

available USB port.

I am using the Windows Messages WM_DEVICECHANGE with the flags
DBT_DEVICEARRIVAL and

DBT_DEVICEREMOVECOMPLETE. It works very well after the the usb flash memory
has been used in

the computer where the application run.

But, When the application is running and a flash memory is inserted by first
time in the

computer, Windows sends the WM_DEVICECHANGE-DBT_DEVICEARRIVAL followed by a
WM_DEVICECHANGE

-DBT_DEVICEREMOVECOMPLETE and other WM_DEVICECHANGE-DBT_DEVICEARRIVAL. In
this case, the

behavior of the application is apparently wrong because it process the
Device Remove message

and the flash memory is still inserted in the USB Port.

Is there any diference between the WM_DEVICECHANGE-DBT_DEVICEARRIVAL message
sent by Windows

the first time that a flash memory is inserted in a computer?

Does anyone know how to identify this first WM_DEVICECHANGE-DBT_DEVICEARRIVAL?

I have another issue, sometimes take few seconds to detect the
WM_DEVICECHANGE-

DBT_DEVICEARRIVAL or WM_DEVICECHANGE-DBT_DEVICEREMOVECOMPLETE. is this a
isolated issue or

any of you have seen something like that?

Thanks for any help

RE: USB Flash memory Arrive/remove notification by pavel_a

pavel_a
Wed Feb 08 16:35:01 CST 2006

This 1st time sequence might be due to installation of the driver.
What you can do in this case... perhaps, add a delay after the device
arrival message to let it debounce.

--PA


"gcfreddy" wrote:
> Hi everybody,
>
> I'm developing a application to run over Windows XP embedded and have some
> troubles with
> the usb flash memory handling.
>
> My application needs to do some job when a USB flash memory is
> Removed/Inserted in any
>
> available USB port.
>
> I am using the Windows Messages WM_DEVICECHANGE with the flags
> DBT_DEVICEARRIVAL and
>
> DBT_DEVICEREMOVECOMPLETE. It works very well after the the usb flash memory
> has been used in
>
> the computer where the application run.
>
> But, When the application is running and a flash memory is inserted by first
> time in the
>
> computer, Windows sends the WM_DEVICECHANGE-DBT_DEVICEARRIVAL followed by a
> WM_DEVICECHANGE
>
> -DBT_DEVICEREMOVECOMPLETE and other WM_DEVICECHANGE-DBT_DEVICEARRIVAL. In
> this case, the
>
> behavior of the application is apparently wrong because it process the
> Device Remove message
>
> and the flash memory is still inserted in the USB Port.
>
> Is there any diference between the WM_DEVICECHANGE-DBT_DEVICEARRIVAL message
> sent by Windows
>
> the first time that a flash memory is inserted in a computer?
>
> Does anyone know how to identify this first WM_DEVICECHANGE-DBT_DEVICEARRIVAL?
>
> I have another issue, sometimes take few seconds to detect the
> WM_DEVICECHANGE-
>
> DBT_DEVICEARRIVAL or WM_DEVICECHANGE-DBT_DEVICEREMOVECOMPLETE. is this a
> isolated issue or
>
> any of you have seen something like that?
>
> Thanks for any help