Changeset 1652 in vbox
- Timestamp:
- Mar 23, 2007 9:59:03 AM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 19785
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Serial/DrvNamedPipe.cpp
r1651 r1652 79 79 /* File handle of the named pipe. */ 80 80 RTFILE NamedPipe; 81 /* Dummy overlapped structure. */ 82 OVERLAPPED Overlapped; 81 83 #else /* !__WIN__ */ 82 84 /** Socket handle of the local socket for server. */ … … 113 115 if (VBOX_FAILURE(rc)) 114 116 { 117 Log(("drvNamedPipeRead: RTFileRead returned Vrc\n", rc)); 115 118 if (rc == VERR_EOF) 116 119 { 117 120 RTFILE tmp = pData->NamedPipe; 118 pData->NamedPipe = NIL_RTFILE;119 #if 0120 121 FlushFileBuffers((HANDLE)tmp); 121 #endif 122 DisconnectNamedPipe((HANDLE)tmp); 123 RTFileClose(tmp); 122 if (!pData->fIsServer) 123 { 124 pData->NamedPipe = NIL_RTFILE; 125 DisconnectNamedPipe((HANDLE)tmp); 126 RTFileClose(tmp); 127 } 124 128 } 125 129 cbReallyRead = 0; … … 170 174 { 171 175 unsigned cbWritten; 172 #if 0 173 rc = RTFileWrite(pData->NamedPipe, pvBuf, *cbWrite, &cbWritten); 174 #else 175 cbWritten = *cbWrite; 176 #endif 176 pData->Overlapped.Offset = 0; 177 pData->Overlapped.OffsetHigh = 0; 178 if (!WriteFile((HANDLE)pData->NamedPipe, pvBuf, *cbWrite, NULL, &pData->Overlapped)) 179 { 180 DWORD uError = GetLastError(); 181 182 if (uError != ERROR_IO_PENDING) 183 rc = RTErrConvertFromWin32(uError); 184 185 Log(("drvNamedPipeWrite: WriteFile returned %d (%Vrc)\n", uError, rc)); 186 } 187 177 188 if (VBOX_FAILURE(rc)) 178 189 { … … 180 191 { 181 192 RTFILE tmp = pData->NamedPipe; 182 pData->NamedPipe = NIL_RTFILE;183 #if 0184 193 FlushFileBuffers((HANDLE)tmp); 185 #endif 186 DisconnectNamedPipe((HANDLE)tmp); 187 RTFileClose(tmp); 194 if (!pData->fIsServer) 195 { 196 pData->NamedPipe = NIL_RTFILE; 197 DisconnectNamedPipe((HANDLE)tmp); 198 RTFileClose(tmp); 199 } 188 200 } 189 201 cbWritten = 0; … … 362 374 if (fIsServer) 363 375 { 364 HANDLE hPipe = CreateNamedPipe(pData->pszLocation, PIPE_ACCESS_DUPLEX , PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL);376 HANDLE hPipe = CreateNamedPipe(pData->pszLocation, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL); 365 377 if (hPipe == INVALID_HANDLE_VALUE) 366 378 { … … 382 394 return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NamedPipe#%d failed to connect to named pipe %s"), pDrvIns->iInstance, pszLocation); 383 395 } 396 397 memset(&pData->Overlapped, 0, sizeof(pData->Overlapped)); 398 pData->Overlapped.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); 399 384 400 #else /* !__WIN__ */ 385 401 int s; … … 444 460 if (pData->NamedPipe != NIL_RTFILE) 445 461 { 446 #if 0447 462 FlushFileBuffers((HANDLE)pData->NamedPipe); 448 DisconnectNamedPipe((HANDLE)pData->NamedPipe); 449 #endif 463 if (!pData->fIsServer) 464 DisconnectNamedPipe((HANDLE)pData->NamedPipe); 465 450 466 RTFileClose(pData->NamedPipe); 467 CloseHandle(pData->Overlapped.hEvent); 451 468 } 452 469 #else /* !__WIN__ */
Note:
See TracChangeset
for help on using the changeset viewer.