]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[WINVERBS/WINMAD] incorporate trunk commit 2928.
authorStan Smith <stan.smith@intel.com>
Wed, 15 Sep 2010 16:53:01 +0000 (16:53 +0000)
committerStan Smith <stan.smith@intel.com>
Wed, 15 Sep 2010 16:53:01 +0000 (16:53 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@2930 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/WOF2-3/core/winmad/user/wm_provider.cpp
branches/WOF2-3/core/winverbs/user/wv_base.cpp

index 7b026eabf4c2ce3c763670e0d5eb8d82644e9fcd..064b0982530e4e5740ec91833d02694ed29eb88c 100644 (file)
@@ -134,11 +134,14 @@ WmDeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode,
 \r
        if (lpOverlapped == NULL) {\r
                EnterCriticalSection(&m_CritSecWrite);\r
-               DeviceIoControl(hDevice, dwIoControlCode,\r
-                                               lpInBuffer, nInBufferSize,\r
-                                               lpOutBuffer, nOutBufferSize,\r
-                                               lpBytesReturned, &m_OverlapWrite);\r
-               ret = ::GetOverlappedResult(m_hFile, &m_OverlapWrite, lpBytesReturned, TRUE);\r
+               ret = DeviceIoControl(hDevice, dwIoControlCode,\r
+                                                         lpInBuffer, nInBufferSize,\r
+                                                         lpOutBuffer, nOutBufferSize,\r
+                                                         lpBytesReturned, &m_OverlapWrite);\r
+               if (!ret && GetLastError() == ERROR_IO_PENDING) {\r
+                       ret = ::GetOverlappedResult(m_hFile, &m_OverlapWrite,\r
+                                                                               lpBytesReturned, TRUE);\r
+               }\r
                LeaveCriticalSection(&m_CritSecWrite);\r
        } else {\r
                ret = DeviceIoControl(hDevice, dwIoControlCode,\r
index 5ed4e9f7f33846ebb7d6217e4181cdde5a571c9b..e231ec38022f2388aacac15b433acca52a9b6ec6 100644 (file)
@@ -89,12 +89,13 @@ WvDeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode,
 \r
        if (lpOverlapped == NULL) {\r
                EnterCriticalSection(&m_CritSec);\r
-               DeviceIoControl(hDevice, dwIoControlCode,\r
-                                               lpInBuffer, nInBufferSize,\r
-                                               lpOutBuffer, nOutBufferSize,\r
-                                               lpBytesReturned, &m_Overlap);\r
-\r
-               ret = GetOverlappedResult(hDevice, &m_Overlap, lpBytesReturned, TRUE);\r
+               ret = DeviceIoControl(hDevice, dwIoControlCode,\r
+                                                         lpInBuffer, nInBufferSize,\r
+                                                         lpOutBuffer, nOutBufferSize,\r
+                                                         lpBytesReturned, &m_Overlap);\r
+               if (!ret && GetLastError() == ERROR_IO_PENDING) {\r
+                       ret = GetOverlappedResult(hDevice, &m_Overlap, lpBytesReturned, TRUE);\r
+               }\r
                LeaveCriticalSection(&m_CritSec);\r
        } else {\r
                ret = DeviceIoControl(hDevice, dwIoControlCode,\r