Problem

System crashes or NotEnoughResources error when running cameras on 64-bit machines with more than 4GB of RAM.


Solution

The following problem affects 64bit versions of both Windows Vista and Windows 7.

One of the primary reasons for moving towards 64bit operating systems is to increase the maximum amount of memory that can be installed on a system beyond the 4GB limit of 32bit machines. Experimentation has revealed that, despite the ability to install and configure much larger amounts of memory on these machines, attempting to use devices that perform large DMA transfers will cause undesirable behavior - primarily system crashes (BSOD, or blue screen of death).


The issue is that machines with at least 4GB of RAM have access to 256 or fewer memory map registers. Map registers are required for DMA'ing data into the main memory of the computer. One register is required for each memory page. Each memory page is 4096 bytes. Thus, in order to DMA a 4096000 byte image, 1000 memory map registers would be required.


Each map register consumes 4K from non-paged memory. The OS will allocate no more than a hard coded 256K to a device.


This problem does not happen on 64bit systems with less than 4GB of RAM because the OS can address the memory with 32 bit DMAs via a set of "virtual" map registers.

There are two resolutions to this issue:

  • Reduce your memory to less then 4 Gigs(physically or using MAXMEM)
  • Download and install our latest release that fixes this issue, from our download section.

Please note: If you own our SDK and wish to use the new version, please contact support or log into the SDK Knowledge Base.