INF: Failure to Load Resources When All File Handles Are Used

ID Number: Q50741

2.03 2.10 3.00

WINDOWS

Summary:

A Windows application should not use all available file handles. Doing

so may prevent Windows from being able to load the application's

resources.

When Windows has to open the application's .EXE file to retrieve a

resource (such as the icon's bitmap), it uses one of the application's

file handles. If the application has used all available file handles,

Windows cannot load the resource.

For example, suppose LoadIcon() was called previously to obtain an

icon handle successfully, and the icon is being used as a window's

icon. The rendering of the icon will fail if the application is using

all the file handles. For example, if the window is to be minimized,

the icon will be displayed as a black block on the screen.

Note: LoadIcon() loads in the logical information of the icon; the

bitmap of the icon is not loaded until it is going to be used.

In Windows 2.11 (retail and debug versions), failure to load an icon's

bitmap due to lack of available file handles will hang the system.

Under MS-DOS, an application has 20 file handles when it begins

executing. Five of these handles (that is, STDIN, STDOUT, STDPRN,

STDERR, and STDAUX) are automatically opened for use by the operating

system. This leaves a total of 15 file handles available for an

application. If a Windows application needs more file handles open at

any given time, it can use the SetHandleCount() API.