PRB: File Handles Cannot Be Shared Between Programs or DLLs (46524)



The information in this article applies to:

  • Microsoft Windows Software Development Kit (SDK) 3.0
  • Microsoft Windows Software Development Kit (SDK) 3.1

This article was previously published under Q46524

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 fopen() 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 fopen() call, file I/O calls, and fclose() call.

Modification Type:MajorLast Reviewed:10/30/2003
Keywords:kb16bitonly KB46524