IOCTL_SCSI_PASS_THROUGH times out before specified time-out value in Windows


When you request IOCTL_SCSI_PASS_THROUGH to StorPort.sys by using the DeviceIoControl function, the function may time out in less than 1 second if you specify the TimeOutValue in the SCSI_PASS_THROUGH function as 2 seconds.

Additionally, the following symptoms are observed when the issue occurs:
  • The following error message may be displayed:
    The request could not be performed because of an I/O device error.
  • If you call the GetLastError function immediately after DeviceIoControl with IOCTL_SCSI_PASS_THROUGH function returns zero, the GetLastError function returns ERROR_IO_DEVICE.


In Windows 8, Windows 8.1, Windows Server 2012, and Windows Server 2012 R2, the Timer process monitoring the time-out is moving in 2-second intervals. Therefore, a time-out may occur before the value that you specify in TimeOutValue.


This issue can be avoided by specifying TimeOutValue as more than 3 seconds, because this value is larger than 2-second interval timer of StorPort.sys.

More information


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Article ID: 2988429 - Last Review: 14 Feb 2017 - Revision: 1

Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows Server 2012 R2 Standard, Windows 8, Windows 8 Enterprise, Windows 8 Pro, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2012 Standard