PRB: File Handles Cannot Be Shared Between Programs or DLLs

ID Number: Q46524

2.03 2.10 3.00 3.10

WINDOWS

Summary:

SYMPTOMS

Assume that there are two applications, A and B. Application A

calls a Dynamic-Link Library (DLL) to open a file. The file pointer

(FILE * pFIle ) is stored on the data segment of the DLL.

Application A then calls a function in the DLL to read the record

"n" of this file properly. However, if Application B calls the same

function in the DLL to read the same record, the record appears as

random characters.

RESOLUTION

File handles cannot be shared between applications or DLLs. Each

application has its own file handle table. When an OpenFile call

is made, a file is taken out of the application's program segment

prefix (PSP). For two separate applications to use the same file,

each application must make its own OpenFile call, file I/O calls,

and close.

Additional reference words: 2.03 2.10 2.x 3.00 3.10 3.x