Ddraw.dll Dynamic Load May Not Work in Some Cases (257655)



The information in this article applies to:

  • Microsoft DirectX Software Development Kit 2.0
  • Microsoft DirectX Software Development Kit 3.0

This article was previously published under Q257655

SYMPTOMS

Ddraw needs access to a certain virtual memory address to use as a global heap space. If this address is already occupied , Ddraw.dll does not load and the following error message occurs:
Initialization of the dynamic link library C:\Winnt\System32\Ddraw.dll failed. The process is terminating abnormally.

CAUSE

When Ddraw.dll is loaded, a file-mapped memory block is allocated. This block is required to be at the same virtual address for all processes so that it can be shared cross-process. Ddraw.dll owns management of video adapter video memory and needs it to be the same for all processes that attach to this dynamic-link library (DLL). The block is of size 0x100008 and starts at 0x43000000 in Microsoft Windows NT 4.0. If this block is occupied, the DLL initialization does not succeed.

WORKAROUND

Developers should avoid using that address range. A workaround for existing programs using Ddraw is to load Ddraw first and let it use that address so that conflicting dynamic-link libraries (DLLs) can dynamically relocate.

STATUS

This behavior is by design.

Modification Type:MajorLast Reviewed:9/24/2003
Keywords:kberrmsg kbprb KB257655