INFO: Canceling Overlapped I/O

ID: Q90368


The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API), used with:
    • Microsoft Windows NT versions 3.1, 3.5, 3.51, 4.0
    • Microsoft Windows 95
    • Microsoft Windows 2000


SUMMARY

You can use the CancelIo() API function to cancel overlapped I/O. This function is available on Microsoft Windows NT 4.0. Previous versions of Windows NT and Windows 95 do not have CancelIo(), but there are alternative methods to cancel an asychronous I/O operation.


MORE INFORMATION

Windows NT 4.0 introduces a new API function to cancel overlapped I/O. Please see the Win32 SDK Function Reference for CancelIo() for more information.

Prior to Windows NT 4.0, and with Windows 95, there is no routine in the Win32 API to cancel an asynchronous request once it has been issued. When a thread does an overlapped I/O, the system starts up another thread to do the I/O and leaves your thread free to do other work. Once it is started, there is no way to stop it. If it necessary to interrupt the I/O, you can either:

  • Split the writes into batches and check for interruptions. For example, you could break a 20 megabyte (MB) write into 20, 1 MB writes.

    -or-


  • Create another thread yourself to handle the I/O. By terminating the thread, you cancel the I/O. You should have a thread in the process that explicitly closes the handle to the device.

    -or-


  • Close the handle to the device with the pending I/O. The close has the net effect of canceling the I/O.


Additional query words:

Keywords : kbprg kbAPI kbFileIO kbKernBase kbNTOS310 kbNTOS350 kbNTOS351 kbNTOS400 kbWinOS2000 kbWinOS95 kbDSupport kbGrpKernBase
Version : winnt:3.1,3.5,3.51,4.0
Platform : winnt
Issue type : kbinfo


Last Reviewed: January 11, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.