Strange behaviour with USB Memory Stick

M

Martin Dowie

We have a custom shell that litrally does nothing (just a Win32 app that
returns 0).

Using Scheduled Tasks we start our actual application "When I log on". This
seemed to be fine - ethernet/display/keyboard/mouse/opengl all working [we
had tried making the application the shell but it always just raised a memory
access violation error].

When we power up with a USB Memory Stick inserted (if present our app should
read data files from it, not from the local hard disk). We can see the light
on the stick flash (app accessing it) but the app fails to use the files on
it.

If we close the app and re-run it (via opening an Explorer window, then
double-clicking on the app's .exe file), the app reads and uses the USB-based
files, as required!

Does anyone have any idea what could be happening???

TIA, Martin
 
S

Sean Liming \(MVP\)

The USB flash disk when first inserted may take a few second to be mounted
in the system. Does you application account for that time?

Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
Book Author - XP Embedded Advanced, XP Embedded Supplemental Toolkit
 
M

Martin Dowie

That's what I'm wondering...

....I've been hunting high and low (well mostly Google-ing!) for anything
that might give us some clues as to how long the USB device is likely to take
to be "installed" into the System.

I don't know the source code of the application at all, but from what I've
seen of it so far it looks like it might try to copy the files across once
(and only once) and fairly early on in it's initialisation.

I guess I'm relieved that you haven't come back saying "Ah, you need an
Explorer shell because X, Y and Z will be missing if you don't". There isn't
anything *that* special about the Explorer shell/.exe is there?!?!

Cheers
-- Martin


Sean Liming (MVP) said:
The USB flash disk when first inserted may take a few second to be mounted
in the system. Does you application account for that time?

Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
Book Author - XP Embedded Advanced, XP Embedded Supplemental Toolkit

Martin Dowie said:
We have a custom shell that litrally does nothing (just a Win32 app that
returns 0).

Using Scheduled Tasks we start our actual application "When I log on".
This
seemed to be fine - ethernet/display/keyboard/mouse/opengl all working [we
had tried making the application the shell but it always just raised a
memory
access violation error].

When we power up with a USB Memory Stick inserted (if present our app
should
read data files from it, not from the local hard disk). We can see the
light
on the stick flash (app accessing it) but the app fails to use the files
on
it.

If we close the app and re-run it (via opening an Explorer window, then
double-clicking on the app's .exe file), the app reads and uses the
USB-based
files, as required!

Does anyone have any idea what could be happening???

TIA, Martin
 
M

Martin Dowie

Hmmm, given the USB is in from the very start and that to get from 'switching
power on' to 'application starting' takes about 50 seconds...shouldn't the
USB drive not be available by the point the application tries to copy from it?

Can it really take /that/ long for the OS to spot / mount the disk?

There is a light that is flashing as if being accessed by the application (2
times, perhaps once for each file it is trying to read?)...

Cheers
-- Martin


Sean Liming (MVP) said:
The USB flash disk when first inserted may take a few second to be mounted
in the system. Does you application account for that time?

Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
Book Author - XP Embedded Advanced, XP Embedded Supplemental Toolkit

Martin Dowie said:
We have a custom shell that litrally does nothing (just a Win32 app that
returns 0).

Using Scheduled Tasks we start our actual application "When I log on".
This
seemed to be fine - ethernet/display/keyboard/mouse/opengl all working [we
had tried making the application the shell but it always just raised a
memory
access violation error].

When we power up with a USB Memory Stick inserted (if present our app
should
read data files from it, not from the local hard disk). We can see the
light
on the stick flash (app accessing it) but the app fails to use the files
on
it.

If we close the app and re-run it (via opening an Explorer window, then
double-clicking on the app's .exe file), the app reads and uses the
USB-based
files, as required!

Does anyone have any idea what could be happening???

TIA, Martin
 
M

Martin Dowie

Hmmm, that's very interesting...but I'm not sure it's a solution we can use
as there isn't a notion of a 'proper' drive.

I think we may need to take a hit, make a mod to the application and 'poll'
for the drive, say, every 10 seconds until files are found (or not). Once
they are found we can stop polling but we have no way of knowing if there
isn't a drive there or just one with no files (the copy's are done using the
"system" function call with a DOS-like COPY command in it - not via some
file/directory library). Keeps it simple but perhaps too simple! ;-)

Thanks for all the replies.

Martin
 
A

Ashok

Hi Martin,

We have a requirement which matches with yours. We have an Applicaiton as
custom shell. when the machine is started, if a USB mem stick is connected it
has to launch a FTP application. Here are the possible steps which can be
used in the logic. I am not sure whether i will be able to solve your problem
with this but you can look into it.

1) In OnitinDialog or the main function of the Application, call a routine
which checks for the USB mem stick on the system. You can wait for 10 secs
for the USB mem stick to be recognized (Normally it is recognized immediately
as soon as the boot process is complete). Use a wait with a message loop so
that you are not blocking any messages.

2) If Mem stick is present, then you can read the files from the thumb drive.

If you need the logic for USB detection, do let me know.

Thanks,
Ashok
 
M

Martin Dowie

Hi Ashok,
It wouldn't do any harm - email me offline (martin dot dowie at selexgalileo
dot com).
Cheers
-- Martin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top