Changeset 5019 for trunk/src/kernel32/HandleManager.cpp
- Timestamp:
- Jan 23, 2001, 7:31:26 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/HandleManager.cpp
r5016 r5019 1 /* $Id: HandleManager.cpp,v 1.6 1 2001-01-23 11:59:44sandervl Exp $ */1 /* $Id: HandleManager.cpp,v 1.62 2001-01-23 18:31:25 sandervl Exp $ */ 2 2 3 3 /* … … 61 61 #include "HMThread.h" 62 62 #include "HMNPipe.h" 63 #include "HMStd.h" 63 64 #include <vmutex.h> 64 65 #include <win\thread.h> … … 129 130 /* this MUST !!! be false initially */ 130 131 131 HMDeviceHandler *pHMOpen32; /* default handle manager instance */ 132 HMDeviceHandler *pHMStandard; /* default handle manager instance */ 133 HMDeviceHandler *pHMOpen32; /* default handle manager instance */ 132 134 HMDeviceHandler *pHMEvent; /* static instances of subsystems */ 133 135 HMDeviceHandler *pHMFile; … … 253 255 /* free handle found ? */ 254 256 if (INVALID_HANDLE_VALUE == TabWin32Handles[ulLoop].hmHandleData.hHMHandle) { 255 //SvL: Mark handle as takenhere. Doing it outside of this function257 //SvL: Mark handle as allocated here. Doing it outside of this function 256 258 // isn't thread safe. (and not very smart) 257 259 TabWin32Handles[ulLoop].hmHandleData.hHMHandle = ulLoop; … … 403 405 404 406 /* copy standard handles from OS/2's Open32 Subsystem */ 407 HMGlobals.pHMStandard = new HMDeviceStandardClass("\\\\STANDARD_HANDLE\\"); 405 408 HMSetStdHandle(STD_INPUT_HANDLE, O32_GetStdHandle(STD_INPUT_HANDLE)); 406 409 HMSetStdHandle(STD_OUTPUT_HANDLE, O32_GetStdHandle(STD_OUTPUT_HANDLE)); 407 410 HMSetStdHandle(STD_ERROR_HANDLE, O32_GetStdHandle(STD_ERROR_HANDLE)); 408 411 409 412 /* create handle manager instance for Open32 handles */ 410 413 HMGlobals.pHMOpen32 = new HMDeviceOpen32Class("\\\\.\\"); 411 414 HMGlobals.pHMEvent = new HMDeviceEventClass("\\\\EVENT\\"); … … 462 465 if(HMGlobals.pHMDisk) 463 466 delete HMGlobals.pHMDisk; 467 if(HMGlobals.pHMStandard); 468 delete HMGlobals.pHMStandard; 464 469 465 470 return (NO_ERROR); … … 707 712 *****************************************************************************/ 708 713 709 HANDLE 714 HANDLE HMGetStdHandle(DWORD nStdHandle) 710 715 { 711 716 switch (nStdHandle) … … 737 742 *****************************************************************************/ 738 743 739 BOOL HMSetStdHandle(DWORD nStdHandle, 740 HANDLE hHandle) 741 { 744 BOOL HMSetStdHandle(DWORD nStdHandle, HANDLE hHandleOpen32) 745 { 746 PHMHANDLEDATA pHMHandleData; 747 HANDLE hHandle; 748 749 hHandle = _HMHandleGetFree(); /* get free handle */ 750 if (hHandle == -1) /* oops, no free handles ! */ 751 { 752 SetLastError(ERROR_NOT_ENOUGH_MEMORY); /* use this as error message */ 753 return 0; 754 } 755 756 /* initialize the complete HMHANDLEDATA structure */ 757 pHMHandleData = &TabWin32Handles[hHandle].hmHandleData; 758 pHMHandleData->dwType = FILE_TYPE_CHAR; 759 pHMHandleData->dwAccess = 0; 760 pHMHandleData->dwShare = 0; 761 pHMHandleData->dwCreation = 0; 762 pHMHandleData->dwFlags = 0; 763 pHMHandleData->dwUserData = nStdHandle; 764 pHMHandleData->hHMHandle = hHandleOpen32; 765 pHMHandleData->lpHandlerData = NULL; 766 767 TabWin32Handles[hHandle].pDeviceHandler = HMGlobals.pHMStandard; 768 742 769 switch (nStdHandle) 743 770 { … … 1377 1404 if (-1 == iIndex) /* error ? */ 1378 1405 { 1379 //Must return FILE_TYPE_CHAR here; (used to fail index check)1380 //---------->>> ASSUMES that _HMHandleQuery failes!!!!!!!!!!!!!!!!1381 if((hFile == GetStdHandle(STD_INPUT_HANDLE)) ||1382 (hFile == GetStdHandle(STD_OUTPUT_HANDLE)) ||1383 (hFile == GetStdHandle(STD_ERROR_HANDLE)))1384 {1385 return FILE_TYPE_CHAR;1386 }1387 else1388 {1389 1406 SetLastError(ERROR_INVALID_HANDLE); /* set win32 error information */ 1390 1407 return FILE_TYPE_UNKNOWN; /* signal failure */ 1391 }1392 1408 } 1393 1409
Note:
See TracChangeset
for help on using the changeset viewer.