AnsweredAssumed Answered

vrf HELP !!!! HELP!! Win2k Conversion

Question asked by VRFuser on Apr 3, 2003
Mark (and all)...

> I've also had a lot of trouble
> with the 811 error code when
> using Direct I/O objects to
> communicate over serial ports.

I saw that and I too used to get this a lot (where further information
specifies that the receive buffer couldn't be set). Now, if this error
message actually communicates any information (they frequently are
misleading or downright wrong) I have a theory about what causes it.

When writing Windows drivers, one of the first things one is made aware of
is that there's a resource called "non-paged pool" that is relatively
scarce. This is basically just memory that never gets swapped out to disk
and is guaranteed to be always available to your driver. This resource is
allocated, used and (sometimes) released by drivers loaded into the system.

Now, the idea is to use as little of this as possible because it can be used
up. More importantly, it's possible to *fragment* it if frequent allocations
& deallocations are made, and there is no compaction - defragmentation -
because this memory is guaranteed to be always available and guaranteed not
to move around. Anybody who's done any memory management of their own is
aware of this problem. You may have a total of 10M of memory available, but
it's all in little chunks and you have to fail a request to allocate a
contiguous chunk of 4K.

I *think* this is what might be happening to I/O Libs when it tries to setup
buffers, though normally this allocation/deallocation is only done at driver
startup/shutdown. Not to mention the fact that I/O Libs isn't a driver at
all, but an interface to the driver (in this case serial.sys or serial.vxd
[for 9x]). I don't know for sure, but I used to be able to get this message
to go away by changing the buffer size to 256 bytes or less, unloading
unnecessary drivers and rebooting or starting VEE immediately after starting
Windows.
-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