Article ID: 139801 - Last Review: July 11, 2005 - Revision: 2.2

BUG: Windows 95/98 Do Not Allow open_osfhandle on Socket Handles

This article was previously published under Q139801
Expand all | Collapse all

SYMPTOMS

The Visual C++ run-time API _open_osfhandle on Windows 95 and Windows 98 fails when called with a socket handle as the argument. The call returns -1 with errno set to EINVAL.

CAUSE

The _open_osfhandle API makes a call to GetFileType to verify the handle type. Under Windows 95 and Windows 98, GetFileType returns FILE_TYPE_UNKNOWN for a socket handle instead of FILE_TYPE_PIPE. The _open_osfhandle API does not convert handles of unknown type.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Applications on Windows NT may use _open_osfhandle to get a C run-time file descriptor from a Windows NT socket handle. This enables the application to use the descriptor in C run-time I/O operations such as _lread() and so on.

Windows 95 and Windows 98 do not allow this operation.

APPLIES TO
  • Microsoft Platform Software Development Kit-January 2000 Edition, when used with:
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbbug kbwinsock kbapi kbnetwork KB139801
 

Article Translations