INFO: WSA_FLAG_OVERLAPPED Is Needed for Non-Blocking Sockets

Last reviewed: January 28, 1998
Article ID: Q179942
The information in this article applies to:
  • Microsoft Windows Software Development Kit (SDK) on the following platforms:

        - Windows NT
        - Windows 95
    

SUMMARY

The Winsock 2 socket flag WSA_FLAG_OVERLAPPED needs to be set if the socket will be used in non-blocking mode when running on Windows NT 4.0. Failure to set this flag can result in subsequent Winsock API failure. For example, on Windows NT 4.0, WSAConnect fails with error code 10022, WSAEINVAL if the socket was created without this flag and the socket is placed into non- blocking mode prior to it being called.

MORE INFORMATION

A socket must be created with its overlapped I/O attribute set if overlapped I/O is to be performed using the socket. This can be done either by creating the socket with the WSASocket API with the WSA_FLAG_OVERLAPPED, or by creating the socket via the socket API. However, if the socket will be set to non-blocking mode (on Windows NT 4.0), the socket must also be created with its overlapped attribute set, even if no overlapped I/O will be performed with the socket. A socket is placed into non-blocking mode when either the WSAEventSelect or WSAAsyncSelect APIs are called or if the FIONBIO command is used in the ioctlsocket API.

This behavior differs from Windows 95 with Winsock 2 installed, where the WSA_FLAG_OVERLAPPED flag does not need to be set if the socket will be placed into non-blocking mode. Additionally, on both Windows NT 4.0 and Windows 95 with Winsock 2, if the socket is not set to non-blocking the WSA_FLAG_OVERLAPPED does not need to be set.

To achieve cross-platform portability between Windows 95 and Windows NT 4.0, you are strongly encouraged to employ the WSA_FLAG_OVERLAPPED flag when using the WSASocket API, even if no overlapped I/O operations are to be performed with the socket.

Keywords          : NtwkWinsock
Version           : WIN95; WINNT;
Platform          : Win95 winnt
Issue type        : kbinfo


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: January 28, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.