Changeset 21302 for trunk/src/kernel32/hmnpipe.cpp
- Timestamp:
- Jun 18, 2009, 11:53:26 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/hmnpipe.cpp
r10132 r21302 181 181 BOOL HMDeviceNamedPipeClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 182 182 { 183 BOOL dwFlags = 0; 184 183 185 dprintf(("KERNEL32: HMDeviceNamedPipeClass::CloseHandle(%08x)", pHMHandleData->hHMHandle)); 184 186 187 GetHandleInformation(pHMHandleData->hWin32Handle, &dwFlags); 188 //Only disconnect if this handle can't be inherited. A child proces can 189 //still be using it 190 if(!(dwFlags & HANDLE_FLAG_INHERIT)) { 185 191 OSLibDosDisconnectNamedPipe(pHMHandleData->hHMHandle); 192 } 186 193 return OSLibDosClose(pHMHandleData->hHMHandle); 187 194 } … … 430 437 return bRC; 431 438 } 432 //****************************************************************************** 433 //****************************************************************************** 439 /***************************************************************************** 440 * Name : HMDeviceNamedPipeClass::DuplicateHandle 441 * Purpose : 442 * Parameters: 443 * various parameters as required 444 * Variables : 445 * Result : 446 * Remark : DUPLICATE_CLOSE_SOURCE flag handled in HMDuplicateHandle 447 * 448 * Status : partially implemented 449 * 450 * Author : SvL 451 *****************************************************************************/ 452 BOOL HMDeviceNamedPipeClass::DuplicateHandle(HANDLE srchandle, PHMHANDLEDATA pHMHandleData, HANDLE srcprocess, 453 PHMHANDLEDATA pHMSrcHandle, 454 HANDLE destprocess, 455 DWORD fdwAccess, 456 BOOL fInherit, 457 DWORD fdwOptions, 458 DWORD fdwOdinOptions) 459 { 460 DWORD rc; 461 462 dprintf(("KERNEL32:HMDeviceNamedPipeClass::DuplicateHandle (%08x,%08x,%08x,%08x)", 463 pHMHandleData, srcprocess, pHMSrcHandle->hHMHandle, destprocess)); 464 465 if(destprocess != srcprocess) 466 { 467 //TODO:!!!! 468 dprintf(("ERROR: DuplicateHandle; different processes not yet supported!!")); 469 return FALSE; 470 } 471 472 if(!(fdwOptions & DUPLICATE_SAME_ACCESS) && fdwAccess != pHMSrcHandle->dwAccess) { 473 dprintf(("WARNING: DuplicateHandle; app wants different access permission; Not supported!! (%x, %x)", fdwAccess, pHMSrcHandle->dwAccess)); 474 } 475 476 pHMHandleData->hHMHandle = 0; 477 rc = OSLibDosDupHandle(pHMSrcHandle->hHMHandle, &pHMHandleData->hHMHandle); 478 if (rc) 479 { 480 dprintf(("ERROR: DuplicateHandle: OSLibDosDupHandle(%x) failed = %u", 481 pHMSrcHandle->hHMHandle, rc)); 482 SetLastError(rc); 483 return FALSE; // ERROR 484 } 485 else { 486 SetHandleInformation(pHMHandleData, HANDLE_FLAG_INHERIT, (fInherit) ? HANDLE_FLAG_INHERIT : 0); 487 488 SetLastError(ERROR_SUCCESS); 489 return TRUE; // OK 490 } 491 } 492 //****************************************************************************** 493 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.