Changeset 16148
- Timestamp:
- Apr 26, 2001, 3:22:49 PM (24 years ago)
- Location:
- tags/trunk/src/kernel32
- Files:
-
- 3 added
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified tags/trunk/src/kernel32/Fileio.cpp ¶
r16122 r16148 1 /* $Id: Fileio.cpp,v 1.4 8 2001-04-21 11:33:40sandervl Exp $ */1 /* $Id: Fileio.cpp,v 1.49 2001-04-26 13:22:42 sandervl Exp $ */ 2 2 3 3 /* … … 565 565 ODINFUNCTION5(BOOL, WriteFileEx, 566 566 HANDLE, hFile, 567 LP VOID,lpBuffer,567 LPCVOID, lpBuffer, 568 568 DWORD, nNumberOfBytesToWrite, 569 569 LPOVERLAPPED, lpOverlapped, … … 571 571 { 572 572 return (HMWriteFileEx(hFile, 573 lpBuffer,573 (LPVOID)lpBuffer, 574 574 nNumberOfBytesToWrite, 575 575 lpOverlapped, lpCompletionRoutine)); -
TabularUnified tags/trunk/src/kernel32/HMObjects.cpp ¶
r13382 r16148 1 /* $Id: HMObjects.cpp,v 1. 2 2000-02-16 14:24:00sandervl Exp $ */1 /* $Id: HMObjects.cpp,v 1.3 2001-04-26 13:22:42 sandervl Exp $ */ 2 2 3 3 /* … … 60 60 *****************************************************************************/ 61 61 62 DWORDHMDeviceKernelObjectClass::CloseHandle(PHMHANDLEDATA pHMHandleData)62 BOOL HMDeviceKernelObjectClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 63 63 { 64 64 BOOL bRC; … … 72 72 bRC)); 73 73 74 return (DWORD)bRC;74 return bRC; 75 75 } 76 76 -
TabularUnified tags/trunk/src/kernel32/HandleManager.cpp ¶
r15582 r16148 1 /* $Id: HandleManager.cpp,v 1.6 2 2001-01-23 18:31:25sandervl Exp $ */1 /* $Id: HandleManager.cpp,v 1.63 2001-04-26 13:22:42 sandervl Exp $ */ 2 2 3 3 /* … … 62 62 #include "HMNPipe.h" 63 63 #include "HMStd.h" 64 #include "HMMailslot.h" 65 64 66 #include <vmutex.h> 65 67 #include <win\thread.h> … … 142 144 HMDeviceHandler *pHMThread; 143 145 HMDeviceHandler *pHMNamedPipe; 146 HMDeviceHandler *pHMMailslot; 144 147 145 148 ULONG ulHandleLast; /* index of last used handle */ … … 422 425 HMGlobals.pHMThread = new HMDeviceThreadClass("\\\\THREAD\\"); 423 426 HMGlobals.pHMNamedPipe = new HMDeviceNamedPipeClass("\\\\PIPE\\"); 427 HMGlobals.pHMMailslot = new HMMailslotClass("\\MAILSLOT\\"); 424 428 } 425 429 return (NO_ERROR); … … 463 467 if(HMGlobals.pHMNamedPipe) 464 468 delete HMGlobals.pHMNamedPipe; 469 if(HMGlobals.pHMMailslot) 470 delete HMGlobals.pHMMailslot; 465 471 if(HMGlobals.pHMDisk) 466 472 delete HMGlobals.pHMDisk; … … 4198 4204 nDefaultTimeOut,lpSecurityAttributes); 4199 4205 4200 if (rc == 0) /* oops, creation failed within the device handler */4206 if (rc == -1) /* oops, creation failed within the device handler */ 4201 4207 { 4202 4208 TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = INVALID_HANDLE_VALUE; 4203 return 0; /* signal error */4209 return 0; /* signal error */ 4204 4210 } 4205 4211 … … 4534 4540 return TRUE; 4535 4541 } 4542 4543 /***************************************************************************** 4544 * Name : HMCreateMailslotA 4545 * Purpose : 4546 * Parameters: 4547 * Variables : 4548 * Result : 4549 * Remark : 4550 * Status : 4551 * 4552 * Author : SvL 4553 *****************************************************************************/ 4554 HANDLE HMCreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize, 4555 DWORD lReadTimeout, 4556 LPSECURITY_ATTRIBUTES lpSecurityAttributes) 4557 { 4558 int iIndex; /* index into the handle table */ 4559 int iIndexNew; /* index into the handle table */ 4560 HMMailslotClass *pDeviceHandler; /* device handler for this handle */ 4561 PHMHANDLEDATA pHMHandleData; 4562 BOOL rc; /* API return code */ 4563 4564 SetLastError(ERROR_SUCCESS); 4565 4566 pDeviceHandler = (HMMailslotClass *)HMGlobals.pHMMailslot; /* device is predefined */ 4567 4568 iIndexNew = _HMHandleGetFree(); /* get free handle */ 4569 if (-1 == iIndexNew) /* oops, no free handles ! */ 4570 { 4571 SetLastError(ERROR_NOT_ENOUGH_MEMORY); /* use this as error message */ 4572 return 0; 4573 } 4574 4575 /* initialize the complete HMHANDLEDATA structure */ 4576 pHMHandleData = &TabWin32Handles[iIndexNew].hmHandleData; 4577 pHMHandleData->dwType = FILE_TYPE_UNKNOWN; 4578 pHMHandleData->dwAccess = 0; 4579 pHMHandleData->dwShare = 0; 4580 pHMHandleData->dwCreation = 0; 4581 pHMHandleData->dwFlags = 0; 4582 pHMHandleData->lpHandlerData = NULL; 4583 4584 /* we've got to mark the handle as occupied here, since another device */ 4585 /* could be created within the device handler -> deadlock */ 4586 4587 /* write appropriate entry into the handle table if open succeeded */ 4588 TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = iIndexNew; 4589 TabWin32Handles[iIndexNew].pDeviceHandler = pDeviceHandler; 4590 4591 /* call the device handler */ 4592 4593 rc = pDeviceHandler->CreateMailslotA(&TabWin32Handles[iIndexNew].hmHandleData, 4594 lpName, nMaxMessageSize, 4595 lReadTimeout, lpSecurityAttributes); 4596 4597 if (rc == FALSE) /* oops, creation failed within the device handler */ 4598 { 4599 TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = INVALID_HANDLE_VALUE; 4600 return 0; /* signal error */ 4601 } 4602 4603 return iIndexNew; 4604 } 4605 /***************************************************************************** 4606 * Name : HMGetMailslotInfo 4607 * Purpose : 4608 * Parameters: 4609 * Variables : 4610 * Result : 4611 * Remark : 4612 * Status : 4613 * 4614 * Author : SvL 4615 *****************************************************************************/ 4616 BOOL HMGetMailslotInfo(HANDLE hMailslot, 4617 LPDWORD lpMaxMessageSize, 4618 LPDWORD lpNextSize, 4619 LPDWORD lpMessageCount, 4620 LPDWORD lpReadTimeout) 4621 { 4622 int iIndex; /* index into the handle table */ 4623 BOOL lpResult; /* result from the device handler's API */ 4624 PHMHANDLE pHMHandle; /* pointer to the handle structure in the table */ 4625 4626 SetLastError(ERROR_SUCCESS); 4627 /* validate handle */ 4628 iIndex = _HMHandleQuery(hMailslot); /* get the index */ 4629 if (-1 == iIndex) /* error ? */ 4630 { 4631 SetLastError(ERROR_INVALID_HANDLE); /* set win32 error information */ 4632 return FALSE; /* signal failure */ 4633 } 4634 4635 pHMHandle = &TabWin32Handles[iIndex]; /* call device handler */ 4636 lpResult = pHMHandle->pDeviceHandler->GetMailslotInfo(&TabWin32Handles[iIndex].hmHandleData, 4637 lpMaxMessageSize, 4638 lpNextSize, 4639 lpMessageCount, 4640 lpReadTimeout); 4641 return (lpResult); /* deliver return code */ 4642 } 4643 /***************************************************************************** 4644 * Name : HMSetMailslotInfo 4645 * Purpose : 4646 * Parameters: 4647 * Variables : 4648 * Result : 4649 * Remark : 4650 * Status : 4651 * 4652 * Author : SvL 4653 *****************************************************************************/ 4654 BOOL HMSetMailslotInfo(HANDLE hMailslot, 4655 DWORD dwReadTimeout) 4656 { 4657 int iIndex; /* index into the handle table */ 4658 BOOL lpResult; /* result from the device handler's API */ 4659 PHMHANDLE pHMHandle; /* pointer to the handle structure in the table */ 4660 4661 SetLastError(ERROR_SUCCESS); 4662 /* validate handle */ 4663 iIndex = _HMHandleQuery(hMailslot); /* get the index */ 4664 if (-1 == iIndex) /* error ? */ 4665 { 4666 SetLastError(ERROR_INVALID_HANDLE); /* set win32 error information */ 4667 return FALSE; /* signal failure */ 4668 } 4669 4670 pHMHandle = &TabWin32Handles[iIndex]; /* call device handler */ 4671 lpResult = pHMHandle->pDeviceHandler->SetMailslotInfo(&TabWin32Handles[iIndex].hmHandleData, 4672 dwReadTimeout); 4673 4674 return (lpResult); /* deliver return code */ 4675 } -
TabularUnified tags/trunk/src/kernel32/dbglocal.cpp ¶
r16032 r16148 1 /* $Id: dbglocal.cpp,v 1.1 4 2001-04-04 09:00:57sandervl Exp $ */1 /* $Id: dbglocal.cpp,v 1.15 2001-04-26 13:22:43 sandervl Exp $ */ 2 2 3 3 /* … … 121 121 "hmdisk", 122 122 "version", 123 "hmstd" 123 "hmstd", 124 "module", 125 "mailslot", 126 "hmmailslot" 124 127 }; 125 128 //****************************************************************************** -
TabularUnified tags/trunk/src/kernel32/dbglocal.h ¶
r16032 r16148 119 119 #define DBG_version 99 120 120 #define DBG_hmstd 100 121 #define DBG_MAXFILES 101 121 #define DBG_module 101 122 #define DBG_mailslot 102 123 #define DBG_hmmailslot 103 124 #define DBG_MAXFILES 104 122 125 123 126 extern USHORT DbgEnabled[DBG_MAXFILES]; -
TabularUnified tags/trunk/src/kernel32/hmcomm.cpp ¶
r15602 r16148 1 /* $Id: hmcomm.cpp,v 1. 9 2001-01-29 23:42:25sandervl Exp $ */1 /* $Id: hmcomm.cpp,v 1.10 2001-04-26 13:22:43 sandervl Exp $ */ 2 2 3 3 /* … … 247 247 248 248 /* this is a handler method for calls to CloseHandle() */ 249 DWORDHMDeviceCommClass::CloseHandle(PHMHANDLEDATA pHMHandleData)249 BOOL HMDeviceCommClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 250 250 { 251 251 dprintf(("HMComm: Serial communication port close request\n")); -
TabularUnified tags/trunk/src/kernel32/hmcomm.h ¶
r15429 r16148 1 /* $Id: hmcomm.h,v 1. 7 2000-12-31 12:28:54 sandervl Exp $ */1 /* $Id: hmcomm.h,v 1.8 2001-04-26 13:22:44 sandervl Exp $ */ 2 2 3 3 /* … … 34 34 35 35 /* this is the handler method for calls to CloseHandle() */ 36 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);36 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 37 37 38 38 /* this is the handler method for SetComm() */ -
TabularUnified tags/trunk/src/kernel32/hmdevice.cpp ¶
r15575 r16148 1 /* $Id: hmdevice.cpp,v 1.2 5 2001-01-22 18:26:50sandervl Exp $ */1 /* $Id: hmdevice.cpp,v 1.26 2001-04-26 13:22:44 sandervl Exp $ */ 2 2 3 3 /* … … 197 197 *****************************************************************************/ 198 198 199 DWORDHMDeviceHandler::CloseHandle(PHMHANDLEDATA pHMHandleData)199 BOOL HMDeviceHandler::CloseHandle(PHMHANDLEDATA pHMHandleData) 200 200 { 201 201 dprintf(("KERNEL32:HandleManager::CloseHandle %s(%08x) - stub?\n", … … 1853 1853 return(FALSE); 1854 1854 } 1855 /***************************************************************************** 1856 * Name : BOOL HMDeviceHandler::GetMailslotInfo 1857 * Purpose : 1858 * Variables : 1859 * Result : 1860 * Remark : 1861 * Status : 1862 * 1863 * Author : SvL 1864 *****************************************************************************/ 1865 BOOL HMDeviceHandler::GetMailslotInfo(PHMHANDLEDATA pHMHandleData, 1866 LPDWORD lpMaxMessageSize, 1867 LPDWORD lpNextSize, 1868 LPDWORD lpMessageCount, 1869 LPDWORD lpReadTimeout) 1870 { 1871 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::GetMailslotInfo %08x", 1872 pHMHandleData->hHMHandle)); 1873 1874 return(FALSE); 1875 } 1876 /***************************************************************************** 1877 * Name : BOOL HMDeviceHandler::SetMailslotInfo 1878 * Purpose : 1879 * Variables : 1880 * Result : 1881 * Remark : 1882 * Status : 1883 * 1884 * Author : SvL 1885 *****************************************************************************/ 1886 BOOL HMDeviceHandler::SetMailslotInfo(PHMHANDLEDATA pHMHandleData, 1887 DWORD dwReadTimeout) 1888 { 1889 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::SetMailslotInfo %08x %x", 1890 pHMHandleData->hHMHandle, dwReadTimeout)); 1891 1892 return(FALSE); 1893 } -
TabularUnified tags/trunk/src/kernel32/hmdevice.h ¶
r15575 r16148 1 /* $Id: hmdevice.h,v 1.2 5 2001-01-22 18:26:50sandervl Exp $ */1 /* $Id: hmdevice.h,v 1.26 2001-04-26 13:22:44 sandervl Exp $ */ 2 2 3 3 /* … … 108 108 109 109 /* this is a handler method for calls to CloseHandle() */ 110 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);110 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 111 111 112 112 /* this is a handler method for calls to ReadFile() */ … … 442 442 DWORD cbPipe); 443 443 444 virtual BOOL GetMailslotInfo(PHMHANDLEDATA pHMHandleData, 445 LPDWORD lpMaxMessageSize, 446 LPDWORD lpNextSize, 447 LPDWORD lpMessageCount, 448 LPDWORD lpReadTimeout); 449 450 virtual BOOL SetMailslotInfo(PHMHANDLEDATA pHMHandleData, 451 DWORD dwReadTimeout); 444 452 }; 445 453 -
TabularUnified tags/trunk/src/kernel32/hmdevio.cpp ¶
r15598 r16148 1 /* $Id: hmdevio.cpp,v 1. 8 2001-01-29 00:47:55 birdExp $ */1 /* $Id: hmdevio.cpp,v 1.9 2001-04-26 13:22:44 sandervl Exp $ */ 2 2 3 3 /* … … 147 147 //****************************************************************************** 148 148 //****************************************************************************** 149 DWORDHMDeviceDriver::CloseHandle(PHMHANDLEDATA pHMHandleData)149 BOOL HMDeviceDriver::CloseHandle(PHMHANDLEDATA pHMHandleData) 150 150 { 151 151 DWORD rc = 0; -
TabularUnified tags/trunk/src/kernel32/hmdevio.h ¶
r12299 r16148 1 /* $Id: hmdevio.h,v 1. 1 1999-11-12 14:57:15sandervl Exp $ */1 /* $Id: hmdevio.h,v 1.2 2001-04-26 13:22:44 sandervl Exp $ */ 2 2 3 3 #ifndef __DEVIO_H__ … … 126 126 PHMHANDLEDATA pHMHandleDataTemplate); 127 127 128 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);128 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 129 129 130 130 /* this is a handler method for calls to DeviceIoControl() */ -
TabularUnified tags/trunk/src/kernel32/hmdisk.cpp ¶
r15959 r16148 1 /* $Id: hmdisk.cpp,v 1. 5 2001-03-29 17:39:51sandervl Exp $ */1 /* $Id: hmdisk.cpp,v 1.6 2001-04-26 13:22:45 sandervl Exp $ */ 2 2 3 3 /* … … 119 119 //****************************************************************************** 120 120 //****************************************************************************** 121 DWORDHMDeviceDiskClass::CloseHandle(PHMHANDLEDATA pHMHandleData)121 BOOL HMDeviceDiskClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 122 122 { 123 123 if(pHMHandleData->hHMHandle) { -
TabularUnified tags/trunk/src/kernel32/hmdisk.h ¶
r15155 r16148 1 /* $Id: hmdisk.h,v 1. 2 2000-11-14 14:27:04sandervl Exp $ */1 /* $Id: hmdisk.h,v 1.3 2001-04-26 13:22:45 sandervl Exp $ */ 2 2 3 3 #ifndef __HMDISK_H__ … … 30 30 PHMHANDLEDATA pHMHandleDataTemplate); 31 31 32 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);32 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 33 33 34 34 /* this is a handler method for calls to DeviceIoControl() */ -
TabularUnified tags/trunk/src/kernel32/hmfile.cpp ¶
r15250 r16148 1 /* $Id: hmfile.cpp,v 1.2 5 2000-11-23 19:39:51sandervl Exp $ */1 /* $Id: hmfile.cpp,v 1.26 2001-04-26 13:22:45 sandervl Exp $ */ 2 2 3 3 /* … … 394 394 395 395 /***************************************************************************** 396 * Name : DWORDHMDeviceFileClass::CloseHandle396 * Name : BOOL HMDeviceFileClass::CloseHandle 397 397 * Purpose : close the handle 398 398 * Parameters: PHMHANDLEDATA pHMHandleData … … 405 405 *****************************************************************************/ 406 406 407 DWORDHMDeviceFileClass::CloseHandle(PHMHANDLEDATA pHMHandleData)407 BOOL HMDeviceFileClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 408 408 { 409 409 HMFileInfo *fileInfo = (HMFileInfo *)pHMHandleData->dwUserData; -
TabularUnified tags/trunk/src/kernel32/hmfile.h ¶
r15249 r16148 1 /* $Id: hmfile.h,v 1. 4 2000-11-23 19:23:50sandervl Exp $ */1 /* $Id: hmfile.h,v 1.5 2001-04-26 13:22:45 sandervl Exp $ */ 2 2 3 3 /* … … 66 66 67 67 /* this is a handler method for calls to CloseHandle() */ 68 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);68 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 69 69 70 70 /* this is a handler method for calls to ReadFile() */ -
TabularUnified tags/trunk/src/kernel32/hmmmap.cpp ¶
r15575 r16148 1 /* $Id: hmmmap.cpp,v 1.1 6 2001-01-22 18:26:51sandervl Exp $ */1 /* $Id: hmmmap.cpp,v 1.17 2001-04-26 13:22:46 sandervl Exp $ */ 2 2 3 3 /* … … 207 207 //****************************************************************************** 208 208 //****************************************************************************** 209 DWORDHMDeviceMemMapClass::CloseHandle(PHMHANDLEDATA pHMHandleData)209 BOOL HMDeviceMemMapClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 210 210 { 211 211 Win32MemMap *map; … … 214 214 if(pHMHandleData->dwUserData == NULL || pHMHandleData->dwInternalType != HMTYPE_MEMMAP) { 215 215 dprintf(("MapViewOfFileEx: invalid handle data!")); 216 return ERROR_INVALID_HANDLE;216 return FALSE; 217 217 } 218 218 //Although an application may close the file handle used to create a file … … 222 222 map->Release(); 223 223 224 return NO_ERROR;225 } 226 //****************************************************************************** 227 //****************************************************************************** 224 return TRUE; 225 } 226 //****************************************************************************** 227 //****************************************************************************** -
TabularUnified tags/trunk/src/kernel32/hmmmap.h ¶
r15575 r16148 1 /* $Id: hmmmap.h,v 1. 5 2001-01-22 18:26:51sandervl Exp $ */1 /* $Id: hmmmap.h,v 1.6 2001-04-26 13:22:46 sandervl Exp $ */ 2 2 3 3 /* … … 57 57 LPVOID lpBaseAddress); 58 58 59 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);59 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 60 60 }; 61 61 -
TabularUnified tags/trunk/src/kernel32/hmnpipe.cpp ¶
r14390 r16148 1 /* $Id: hmnpipe.cpp,v 1. 1 2000-07-12 18:21:43sandervl Exp $ */1 /* $Id: hmnpipe.cpp,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */ 2 2 /* 3 3 * Project Odin Software License can be found in LICENSE.TXT … … 84 84 return (pHMHandleData->hHMHandle); 85 85 } 86 86 /***************************************************************************** 87 * Name : DWORD HMDeviceNamedPipeClass::CreateFile 88 * Purpose : this is called from the handle manager if a CreateFile() is 89 * performed on a handle 90 * Parameters: LPCSTR lpFileName name of the file / device 91 * PHMHANDLEDATA pHMHandleData data of the NEW handle 92 * PVOID lpSecurityAttributes ignored 93 * PHMHANDLEDATA pHMHandleDataTemplate data of the template handle 94 * Variables : 95 * Result : 96 * Remark : 97 * Status : NO_ERROR - API succeeded 98 * other - what is to be set in SetLastError 99 * 100 * Author : SvL 101 *****************************************************************************/ 102 103 DWORD HMDeviceNamedPipeClass::CreateFile (LPCSTR lpFileName, 104 PHMHANDLEDATA pHMHandleData, 105 PVOID lpSecurityAttributes, 106 PHMHANDLEDATA pHMHandleDataTemplate) 107 { 108 pHMHandleData->hHMHandle = OSLibDosOpenPipe(lpFileName, 109 pHMHandleData->dwAccess, 110 pHMHandleData->dwShare, 111 (LPSECURITY_ATTRIBUTES)lpSecurityAttributes, 112 pHMHandleData->dwCreation, 113 pHMHandleData->dwFlags); 114 if(pHMHandleData->hHMHandle == -1) { 115 return GetLastError(); 116 } 117 return ERROR_SUCCESS; 118 } 119 120 /***************************************************************************** 121 * Name : DWORD HMDeviceNamedPipeClass::CloseHandle 122 * Purpose : close the handle 123 * Parameters: PHMHANDLEDATA pHMHandleData 124 * Variables : 125 * Result : API returncode 126 * Remark : 127 * Status : 128 * 129 * Author : SvL 130 *****************************************************************************/ 131 132 BOOL HMDeviceNamedPipeClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 133 { 134 dprintf(("KERNEL32: HMDeviceNamedPipeClass::CloseHandle(%08x)", pHMHandleData->hHMHandle)); 135 136 return OSLibDosClose(pHMHandleData->hHMHandle); 137 } 87 138 //****************************************************************************** 88 139 //****************************************************************************** … … 197 248 LPDWORD lpdwCollectDataTimeout) 198 249 { 199 dprintf(("KERNEL32: HMDeviceNamedPipeClass::SetNamedPipeInfo (%s) (%08xh,%08xh,%08xh) NIY\n", 250 BOOL ret; 251 252 dprintf(("KERNEL32: HMDeviceNamedPipeClass::SetNamedPipeInfo (%s) (%08xh,%08xh,%08xh)", 200 253 lpdwMode,lpcbMaxCollect,lpdwCollectDataTimeout)); 201 254 202 return (FALSE); 255 if(lpdwMode) { 256 ret = OSLibSetNamedPipeState(pHMHandleData->hHMHandle, *lpdwMode); 257 } 258 if(lpcbMaxCollect || lpdwCollectDataTimeout) { 259 dprintf(("WARNING: Not supported -> lpcbMaxCollect & lpdwCollectDataTimeout")); 260 } 261 return ret; 203 262 } 204 263 -
TabularUnified tags/trunk/src/kernel32/hmnpipe.h ¶
r14390 r16148 1 /* $Id: hmnpipe.h,v 1. 1 2000-07-12 18:21:44sandervl Exp $ */1 /* $Id: hmnpipe.h,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */ 2 2 /* 3 3 * Project Odin Software License can be found in LICENSE.TXT … … 28 28 DWORD nInBufferSize, DWORD nDefaultTimeOut, 29 29 LPSECURITY_ATTRIBUTES lpSecurityAttributes); 30 31 /* this is a handler method for calls to CreateFile() */ 32 virtual DWORD CreateFile (LPCSTR lpFileName, 33 PHMHANDLEDATA pHMHandleData, 34 PVOID lpSecurityAttributes, 35 PHMHANDLEDATA pHMHandleDataTemplate); 36 37 /* this is a handler method for calls to CloseHandle() */ 38 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 30 39 31 40 virtual BOOL ConnectNamedPipe(PHMHANDLEDATA pHMHandleData, LPOVERLAPPED lpOverlapped); -
TabularUnified tags/trunk/src/kernel32/hmobjects.h ¶
r10902 r16148 1 /* $Id: hmobjects.h,v 1. 1 1999-07-06 15:48:47 phallerExp $ */1 /* $Id: hmobjects.h,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */ 2 2 3 3 /* … … 34 34 35 35 /* this is a handler method for calls to CloseHandle() */ 36 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);36 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 37 37 }; 38 38 -
TabularUnified tags/trunk/src/kernel32/hmopen32.cpp ¶
r15893 r16148 1 /* $Id: hmopen32.cpp,v 1.2 8 2001-03-19 19:27:13sandervl Exp $ */1 /* $Id: hmopen32.cpp,v 1.29 2001-04-26 13:22:47 sandervl Exp $ */ 2 2 3 3 /* … … 83 83 *****************************************************************************/ 84 84 85 DWORDHMDeviceOpen32Class::CloseHandle(PHMHANDLEDATA pHMHandleData)85 BOOL HMDeviceOpen32Class::CloseHandle(PHMHANDLEDATA pHMHandleData) 86 86 { 87 87 BOOL bRC; … … 95 95 bRC)); 96 96 97 return (DWORD)bRC;97 return bRC; 98 98 } 99 99 -
TabularUnified tags/trunk/src/kernel32/hmopen32.h ¶
r14519 r16148 1 /* $Id: hmopen32.h,v 1. 7 2000-08-04 21:12:08sandervl Exp $ */1 /* $Id: hmopen32.h,v 1.8 2001-04-26 13:22:47 sandervl Exp $ */ 2 2 3 3 /* … … 52 52 53 53 /* this is a handler method for calls to CloseHandle() */ 54 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);54 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 55 55 56 56 /* this is a handler method for calls to GetFileType() */ -
TabularUnified tags/trunk/src/kernel32/hmthread.cpp ¶
r15893 r16148 1 /* $Id: hmthread.cpp,v 1. 6 2001-03-19 19:27:13sandervl Exp $ */1 /* $Id: hmthread.cpp,v 1.7 2001-04-26 13:22:47 sandervl Exp $ */ 2 2 3 3 /* … … 178 178 //****************************************************************************** 179 179 //****************************************************************************** 180 DWORDHMDeviceThreadClass::CloseHandle(PHMHANDLEDATA pHMHandleData)181 { 182 return STATUS_SUCCESS;180 BOOL HMDeviceThreadClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 181 { 182 return TRUE; 183 183 } 184 184 //****************************************************************************** -
TabularUnified tags/trunk/src/kernel32/hmthread.h ¶
r13719 r16148 1 /* $Id: hmthread.h,v 1. 2 2000-03-17 16:08:40sandervl Exp $ */1 /* $Id: hmthread.h,v 1.3 2001-04-26 13:22:47 sandervl Exp $ */ 2 2 3 3 /* … … 54 54 virtual BOOL SetThreadTerminated(PHMHANDLEDATA pHMHandleData); 55 55 56 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);56 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 57 57 }; 58 58 -
TabularUnified tags/trunk/src/kernel32/hmtoken.cpp ¶
r15225 r16148 1 /* $Id: hmtoken.cpp,v 1. 4 2000-11-21 11:35:08sandervl Exp $ */1 /* $Id: hmtoken.cpp,v 1.5 2001-04-26 13:22:47 sandervl Exp $ */ 2 2 3 3 /* … … 94 94 * Author : SvL 95 95 *****************************************************************************/ 96 DWORDHMDeviceTokenClass::CloseHandle(PHMHANDLEDATA pHMHandleData)96 BOOL HMDeviceTokenClass::CloseHandle(PHMHANDLEDATA pHMHandleData) 97 97 { 98 return STATUS_SUCCESS;98 return TRUE; 99 99 } -
TabularUnified tags/trunk/src/kernel32/hmtoken.h ¶
r12912 r16148 1 /* $Id: hmtoken.h,v 1. 2 2000-01-05 19:39:56sandervl Exp $ */1 /* $Id: hmtoken.h,v 1.3 2001-04-26 13:22:48 sandervl Exp $ */ 2 2 3 3 /* … … 42 42 HANDLE ProcessHandle); 43 43 44 virtual DWORDCloseHandle(PHMHANDLEDATA pHMHandleData);44 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData); 45 45 }; 46 46 -
TabularUnified tags/trunk/src/kernel32/kernel32.mak ¶
r16118 r16148 1 # $Id: kernel32.mak,v 1. 3 2001-04-21 09:10:14sandervl Exp $1 # $Id: kernel32.mak,v 1.4 2001-04-26 13:22:48 sandervl Exp $ 2 2 3 3 # … … 115 115 !endif 116 116 $(OBJDIR)\module.obj \ 117 $(OBJDIR)\hmmailslot.obj \ 118 $(OBJDIR)\mailslot.obj \ 117 119 $(OBJDIR)\kernelrsrc.obj 118 120 -
TabularUnified tags/trunk/src/kernel32/module.cpp ¶
r15915 r16148 12 12 #include <heapstring.h> 13 13 #include <misc.h> 14 15 #define DBG_LOCALLOG DBG_module 16 #include "dbglocal.h" 14 17 15 18 #define FILE_strcasecmp strcmpi -
TabularUnified tags/trunk/src/kernel32/oslibdos.cpp ¶
r15954 r16148 1 /* $Id: oslibdos.cpp,v 1.6 0 2001-03-28 16:21:41sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.61 2001-04-26 13:22:48 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 1479 1479 LPSTR lpOS2Name; 1480 1480 DWORD hPipe; 1481 DWORD rc ;1482 1481 DWORD rc, ulAction; 1482 1483 1483 if (dwOpenMode & PIPE_ACCESS_DUPLEX_W) 1484 1484 dwOS2Mode |= NP_ACCESS_DUPLEX; … … 1528 1528 1529 1529 dprintf(("DosCreateNPipe(%s,%x,%x,%x,%x,%x)",lpOS2Name,dwOS2Mode,dwOS2PipeMode,nInBufferSize,nOutBufferSize,nDefaultTimeOut)); 1530 1531 //if the windows app tries to open another instance of an existing pipe, then 1532 //we must use DosOpen here. So first try DosOpen, if that fails then we can 1533 //create the named pipe 1534 rc = DosOpen(lpOS2Name, &hPipe, &ulAction, 0, FILE_NORMAL, FILE_OPEN, 1535 ((dwOpenMode & PIPE_ACCESS_INBOUND_W) ? OPEN_ACCESS_READWRITE : OPEN_ACCESS_READONLY) | 1536 OPEN_SHARE_DENYNONE, NULL); 1537 1538 if(rc == NO_ERROR) { 1539 dprintf(("Opening of existing named pipe succeeded")); 1540 return hPipe; 1541 } 1542 1530 1543 rc=DosCreateNPipe(lpOS2Name, 1531 1544 &hPipe, … … 1543 1556 } 1544 1557 return hPipe; 1558 } 1559 //****************************************************************************** 1560 //****************************************************************************** 1561 BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode) 1562 { 1563 ULONG dwOS2PipeMode = 0; 1564 APIRET rc; 1565 1566 if (dwPipeMode & PIPE_WAIT_W) 1567 dwOS2PipeMode |= NP_WAIT; 1568 if (dwPipeMode & PIPE_NOWAIT_W) 1569 dwOS2PipeMode |= NP_NOWAIT; 1570 if (dwPipeMode & PIPE_READMODE_BYTE_W) 1571 dwOS2PipeMode |= NP_READMODE_BYTE; 1572 if (dwPipeMode & PIPE_READMODE_MESSAGE_W) 1573 dwOS2PipeMode |= NP_READMODE_MESSAGE; 1574 1575 rc = DosSetNPHState(hNamedPipe, dwOS2PipeMode); 1576 if(rc) { 1577 SetLastError(error2WinError(rc, ERROR_INVALID_PARAMETER_W)); 1578 return FALSE; 1579 } 1580 return TRUE; 1581 } 1582 //****************************************************************************** 1583 //****************************************************************************** 1584 DWORD OSLibDosOpenPipe(LPCTSTR lpName, 1585 DWORD fuAccess, 1586 DWORD fuShare, 1587 LPSECURITY_ATTRIBUTES lpSecurityAttributes, 1588 DWORD fuCreate, 1589 DWORD fuAttrFlags) 1590 { 1591 LPSTR lpOS2Name; 1592 ULONG hPipe; 1593 ULONG rc, ulAction; 1594 ULONG openFlag = 0; 1595 ULONG openMode = 0; 1596 1597 1598 switch(fuCreate) 1599 { 1600 case CREATE_NEW_W: 1601 openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_FAIL_IF_EXISTS; 1602 break; 1603 case CREATE_ALWAYS_W: 1604 /* kso 2000-11-26: Not sure if OPEN_ACTION_REPLACE_IF_EXISTS is correct here! It is correct according to 1605 * MSDN, but not according to "The Win32 API SuperBible". Anyway I haven't got time to check it out in 1606 * NT now. 1607 * The problem is that OPEN_ACTION_REPLACE_IF_EXISTS requires write access. It failes with 1608 * rc = ERROR_ACCESS_DENIED (5). Quick fix, use OPEN_IF_EXIST if readonly access. 1609 */ 1610 if (fuAccess & GENERIC_WRITE_W) 1611 openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS; 1612 else 1613 openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS; 1614 break; 1615 case OPEN_EXISTING_W: 1616 openFlag |= OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS; 1617 break; 1618 case OPEN_ALWAYS_W: 1619 openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS; 1620 break; 1621 case TRUNCATE_EXISTING_W: 1622 openFlag |= OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS; 1623 break; 1624 } 1625 1626 if(fuAttrFlags & FILE_FLAG_WRITE_THROUGH_W) openMode |= OPEN_FLAGS_WRITE_THROUGH; 1627 if(fuAttrFlags & FILE_FLAG_NO_BUFFERING_W) openMode |= OPEN_FLAGS_NO_CACHE; 1628 if(fuAttrFlags & FILE_FLAG_RANDOM_ACCESS_W) openMode |= OPEN_FLAGS_RANDOM; 1629 if(fuAttrFlags & FILE_FLAG_SEQUENTIAL_SCAN_W) openMode |= OPEN_FLAGS_SEQUENTIAL; 1630 // TODO: FILE_FLAG_BACKUP_SEMANTICS_W 1631 // FILE_FLAG_POSIX_SEMANTICS_W are not supported 1632 1633 //TODO: FILE_SHARE_DELETE 1634 if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == 0 ) 1635 openMode |= OPEN_SHARE_DENYREADWRITE; 1636 else 1637 if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) 1638 openMode |= OPEN_SHARE_DENYNONE; 1639 else 1640 if(fuShare & FILE_SHARE_READ_W) 1641 openMode |= OPEN_SHARE_DENYWRITE; 1642 else 1643 if(fuShare & FILE_SHARE_WRITE_W) 1644 openMode |= OPEN_SHARE_DENYREAD; 1645 1646 if(fuAccess == (GENERIC_READ_W | GENERIC_WRITE_W)) 1647 openMode |= OPEN_ACCESS_READWRITE; 1648 else 1649 if(fuAccess & GENERIC_READ_W) 1650 openMode |= OPEN_ACCESS_READONLY; 1651 else 1652 if(fuAccess & GENERIC_WRITE_W) 1653 openMode |= OPEN_ACCESS_WRITEONLY; 1654 1655 if (strstr(lpName,"\\\\.")) 1656 { 1657 // If pipe is created on the local machine 1658 // we must delete string \\. because 1659 // in Windows named pipes scheme is a \\.\PIPE\pipename 1660 // but in OS/2 only \PIPE\pipename 1661 lpOS2Name = (LPSTR)lpName + 3; 1662 } 1663 else lpOS2Name = (LPSTR)lpName; 1664 1665 rc = DosOpen(lpOS2Name, &hPipe, &ulAction, 0, 0, 1666 openFlag, openMode, NULL); 1667 1668 if(rc == NO_ERROR) { 1669 dprintf(("Opening of existing named pipe succeeded")); 1670 return hPipe; 1671 } 1672 1673 SetLastError(error2WinError(rc,ERROR_INVALID_PARAMETER_W)); 1674 return -1; // INVALID_HANDLE_VALUE 1545 1675 } 1546 1676 -
TabularUnified tags/trunk/src/kernel32/oslibdos.h ¶
r15330 r16148 1 /* $Id: oslibdos.h,v 1.2 7 2000-12-07 12:00:24sandervl Exp $ */1 /* $Id: oslibdos.h,v 1.28 2001-04-26 13:22:49 sandervl Exp $ */ 2 2 3 3 /* … … 175 175 DWORD nDefaultTimeOut, 176 176 LPSECURITY_ATTRIBUTES lpSecurityAttributes); 177 178 BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode); 179 180 DWORD OSLibDosOpenPipe(LPCTSTR lpName, 181 DWORD fuAccess, 182 DWORD fuShare, 183 LPSECURITY_ATTRIBUTES lpSecurityAttributes, 184 DWORD fuCreate, 185 DWORD fuAttrFlags); 177 186 178 187 BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName, -
TabularUnified tags/trunk/src/kernel32/stubs.cpp ¶
r16012 r16148 582 582 583 583 return (NULL); 584 }585 /*****************************************************************************586 * Name : HANDLE WIN32API CreateMailslotA587 * Purpose : The CreateMailslot function creates a mailslot with the specified588 * name and returns a handle that a mailslot server can use to589 * perform operations on the mailslot. The mailslot is local to the590 * computer that creates it. An error occurs if a mailslot with591 * the specified name already exists.592 * Parameters: LPCSTR lpName pointer to string for mailslot name593 * DWORD nMaxMessageSize maximum message size594 * DWORD lReadTimeout milliseconds before read time-out595 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security structure596 * Variables :597 * Result : If the function succeeds, the return value is a handle to598 * the mailslot, for use in server mailslot operations.599 * If the function fails, the return value is INVALID_HANDLE_VALUE.600 * Remark :601 * Status : UNTESTED STUB602 *603 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]604 *****************************************************************************/605 606 HANDLE WIN32API CreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize,607 DWORD lReadTimeout,608 LPSECURITY_ATTRIBUTES lpSecurityAttributes)609 {610 611 dprintf(("KERNEL32: CreateMailslotA(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",612 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes613 ));614 615 return (INVALID_HANDLE_VALUE);616 }617 618 /*****************************************************************************619 * Name : HANDLE WIN32API CreateMailslotW620 * Purpose : The CreateMailslot function creates a mailslot with the specified621 * name and returns a handle that a mailslot server can use to622 * perform operations on the mailslot. The mailslot is local to the623 * computer that creates it. An error occurs if a mailslot with624 * the specified name already exists.625 * Parameters: LPCWSTR lpName pointer to string for mailslot name626 * DWORD nMaxMessageSize maximum message size627 * DWORD lReadTimeout milliseconds before read time-out628 * LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security629 * structure630 * Variables :631 * Result : If the function succeeds, the return value is a handle to632 * the mailslot, for use in server mailslot operations.633 * If the function fails, the return value is INVALID_HANDLE_VALUE.634 * Remark :635 * Status : UNTESTED STUB636 *637 * Author : Markus Montkowski [Tha, 1998/05/21 17:46]638 *****************************************************************************/639 640 HANDLE WIN32API CreateMailslotW(LPCWSTR lpName, DWORD nMaxMessageSize,641 DWORD lReadTimeout,642 LPSECURITY_ATTRIBUTES lpSecurityAttributes)643 {644 645 dprintf(("KERNEL32: CreateMailslotW(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",646 lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes647 ));648 649 return (INVALID_HANDLE_VALUE);650 584 } 651 585 … … 1149 1083 1150 1084 /***************************************************************************** 1151 * Name : VOID WIN32API FreeLibraryAndExitThread1152 * Purpose : The FreeLibraryAndExitThread function decrements the reference1153 * count of a loaded dynamic-link library (DLL) by one, and then1154 * calls ExitThread to terminate the calling thread.1155 * The function does not return.1156 *1157 * The FreeLibraryAndExitThread function gives threads that are1158 * created and executed within a dynamic-link library an opportunity1159 * to safely unload the DLL and terminate themselves.1160 * Parameters:1161 * Variables :1162 * Result :1163 * Remark :1164 * Status : UNTESTED STUB1165 *1166 * Author : Markus Montkowski [Tha, 1998/05/21 20:57]1167 *****************************************************************************/1168 1169 VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode)1170 {1171 1172 dprintf(("KERNEL32: FreeLibraryAndExitThread(%08x,%08x) not implemented\n",1173 hLibModule, dwExitCode1174 ));1175 1176 }1177 1178 1179 /*****************************************************************************1180 1085 * Name : DWORD GetHandleInformation 1181 1086 * Purpose : The GetHandleInformation function obtains information about certain … … 1201 1106 } 1202 1107 1203 1204 /*****************************************************************************1205 * Name : BOOL GetMailslotInfo1206 * Purpose : The GetMailslotInfo function retrieves information about the1207 * specified mailslot.1208 * Parameters: HANDLE hMailslot mailslot handle1209 * LPDWORD lpMaxMessageSize address of maximum message size1210 * LPDWORD lpNextSize address of size of next message1211 * LPDWORD lpMessageCount address of number of messages1212 * LPDWORD lpReadTimeout address of read time-out1213 * Variables :1214 * Result : TRUE / FALSE1215 * Remark :1216 * Status : UNTESTED STUB1217 *1218 * Author : Patrick Haller [Mon, 1998/06/15 08:00]1219 *****************************************************************************/1220 1221 BOOL WIN32API GetMailslotInfo(HANDLE hMailslot,1222 LPDWORD lpMaxMessageSize,1223 LPDWORD lpNextSize,1224 LPDWORD lpMessageCount,1225 LPDWORD lpReadTimeout)1226 {1227 dprintf(("KERNEL32: GetMailslotInfo(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",1228 hMailslot,1229 lpMaxMessageSize,1230 lpNextSize,1231 lpMessageCount,1232 lpReadTimeout));1233 1234 return (FALSE);1235 }1236 1108 1237 1109 … … 1798 1670 } 1799 1671 1800 1801 /*****************************************************************************1802 * Name : BOOL SetMailslotInfo1803 * Purpose : The SetMailslotInfo function sets the time-out value used by the1804 * specified mailslot for a read operation.1805 * Parameters: HANDLE hObject handle to a mailslot object1806 * DWORD dwReadTimeout read time-out1807 * Variables :1808 * Result : TRUE / FALSE1809 * Remark :1810 * Status : UNTESTED STUB1811 *1812 * Author : Patrick Haller [Mon, 1998/06/15 08:00]1813 *****************************************************************************/1814 1815 BOOL WIN32API SetMailslotInfo(HANDLE hObject,1816 DWORD dwReadTimeout)1817 {1818 dprintf(("KERNEL32: SetMailslotInfo(%08xh,%08xh) not implemented.\n",1819 hObject,1820 dwReadTimeout));1821 1822 return (FALSE);1823 }1824 1825 1826 1672 /***************************************************************************** 1827 1673 * Name : BOOL SetSystemPowerState -
TabularUnified tags/trunk/src/kernel32/wprocess.cpp ¶
r16077 r16148 1 /* $Id: wprocess.cpp,v 1.11 8 2001-04-16 08:31:46sandervl Exp $ */1 /* $Id: wprocess.cpp,v 1.119 2001-04-26 13:22:49 sandervl Exp $ */ 2 2 3 3 /* … … 458 458 dprintf(("WARNING: KERNEL32: FreeLibrary %s %x NOT FOUND!", OSLibGetDllName(hinstance), hinstance)); 459 459 return(TRUE); 460 } 461 /***************************************************************************** 462 * Name : VOID WIN32API FreeLibraryAndExitThread 463 * Purpose : The FreeLibraryAndExitThread function decrements the reference 464 * count of a loaded dynamic-link library (DLL) by one, and then 465 * calls ExitThread to terminate the calling thread. 466 * The function does not return. 467 * 468 * The FreeLibraryAndExitThread function gives threads that are 469 * created and executed within a dynamic-link library an opportunity 470 * to safely unload the DLL and terminate themselves. 471 * Parameters: 472 * Variables : 473 * Result : 474 * Remark : 475 *****************************************************************************/ 476 VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode) 477 { 478 479 dprintf(("KERNEL32: FreeLibraryAndExitThread(%08x,%08x)", hLibModule, dwExitCode)); 480 FreeLibrary(hLibModule); 481 ExitThread(dwExitCode); 460 482 } 461 483 /******************************************************************************/
Note:
See TracChangeset
for help on using the changeset viewer.