Microsoft KB Archive/139801

{|
 * width="100%"|

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

 * }

Q139801

-

The information in this article applies to:


 * Microsoft Win32 Software Development Kit (SDK), on platform(s):
 * the operating system: Microsoft Windows 95
 * the operating system: Microsoft Windows 98
 * Microsoft Visual C++, 32-bit Editions, version 4.0
 * Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
 * Microsoft Visual C++, 32-bit Professional Edition, version 5.0

-

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 this to be 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.

Additional query words:

Keywords : kbnetwork kbAPI kbSDKPlatform kbVC400bug kbVC500bug kbOSWin95bug kbWinsock kbGrpDSNet

Issue type : kbbug

Technology : kbWin32SDKSearch kbAudDeveloper kbSDKSearch kbWin32sSearch