AnsweredAssumed Answered

vrf Direct I/O memory leaks

Question asked by VRFuser on Apr 3, 2003
Paul...

1) Not 4K, it's more like 16 bytes. That's why it doesn't matter 'til
hundreds of thousands of errors have occurred. Um, actually you *should* be
seeing an 8K drop (unless you're running on an Alpha? But no, this is
Windows 2000...hmmm...).

2 & 3) Never knew that simple transactions of any kind had problems. Might
want to check that again (see below - Methinks you been misled).

> watching the Windows Task Manager.

Ahh, that explains it. Pay no attention at all to the Windows task manager.
Start up a decent debugger (wndbug will do it, but you'll be happier using
Soft-ICE) and run your tests again under your debug session. Then you'll get
a much clearer idea of what you're facing.

> Does anybody know how to trap
> IO errors without causing a
> memory leak please?

Nope. Can't be done, and won't be fixed. Unless VEE gets rewritten that is.
At any rate it's NBD (no big deal). Find out how many errors you can
tolerate and simply count them. Have your VEE application reboot the
computer *before* memory loss becomes a problem. Yes, you probably can get
away with simply restarting VEE but believe it or not that's more of a pain
than auto-rebooting).

You'll need the following (registry stuff):

Key:
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

Values:
AutoAdminLogon =  [REG_SZ] 1
DefaultDomain =   [REG_SZ] <DomainName> (or just don't use it)
DefaultUserName = [REG_SZ] <UserName>
DefaultPassword = [REG_SZ] <Password>

Write these values in the registry. Then shutdown & reboot Windows. You can
use ExitWindowsEx(EWX_REBOOT | EWX_FORCE) or call InitiateSystemShutdown if
you want to be nice about it and let the operator know what's happening. At
any rate, when Windows starts up and logs on your app will start (it is set
up to start your app isn't it? That's in
HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun) and all you have to do
is check to see if AutoAdminLogon is set to "1". If so, reverse the changes
in the registry and continue with your data acq.

And see, that's the majik. Don't go initializing anything until you know if
you're returning from a maintenance reboot or actually starting a session.
If you're starting a session, init hardware & software as necessary. If
maintenance, then reload your state info from disk and continue. You are
saving state info periodically, yes?

If your hardware can buffer about a minute's worth of data then nobody even
has to know it ever happened.
-SHAWN-


---
You are currently subscribed to vrf as: rsb@soco.agilent.com
To subscribe send a blank email to "join-vrf@it.lists.it.agilent.com".
To unsubscribe send a blank email to "leave-vrf@it.lists.it.agilent.com".
To send messages to this mailing list,  email "vrf@it.lists.it.agilent.com". 
If you need help with the mailing list send a message to "owner-vrf@it.lists.it.agilent.com".

Outcomes