- Timestamp:
- Aug 4, 2000, 11:12:10 PM (25 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/HandleManager.cpp
r3897 r3948 1 /* $Id: HandleManager.cpp,v 1.4 4 2000-07-26 18:06:21sandervl Exp $ */1 /* $Id: HandleManager.cpp,v 1.45 2000-08-04 21:12:05 sandervl Exp $ */ 2 2 3 3 /* … … 707 707 DWORD fdwAccess, 708 708 BOOL fInherit, 709 DWORD fdwOptions) 709 DWORD fdwOptions, 710 DWORD fdwOdinOptions) 710 711 { 711 712 int iIndex; /* index into the handle table */ … … 738 739 pHMHandleData->dwAccess = fdwAccess; 739 740 740 pHMHandleData->dwShare = TabWin32Handles[srchandle].hmHandleData.dwShare; 741 if(fdwOdinOptions & DUPLICATE_ACCESS_READWRITE) { 742 pHMHandleData->dwAccess = GENERIC_READ | GENERIC_WRITE; 743 } 744 else 745 if(fdwOdinOptions & DUPLICATE_ACCESS_READ) { 746 pHMHandleData->dwAccess = GENERIC_READ; 747 } 748 749 if(fdwOdinOptions & DUPLICATE_SHARE_READ) { 750 pHMHandleData->dwShare = FILE_SHARE_READ; 751 } 752 else 753 if(fdwOdinOptions & DUPLICATE_SHARE_DENYNONE) { 754 pHMHandleData->dwShare = FILE_SHARE_READ | FILE_SHARE_WRITE; 755 } 756 else pHMHandleData->dwShare = TabWin32Handles[srchandle].hmHandleData.dwShare; 757 741 758 pHMHandleData->dwCreation = TabWin32Handles[srchandle].hmHandleData.dwCreation; 742 759 pHMHandleData->dwFlags = TabWin32Handles[srchandle].hmHandleData.dwFlags; … … 759 776 fdwAccess, 760 777 fInherit, 761 fdwOptions & ~DUPLICATE_CLOSE_SOURCE); 778 fdwOptions & ~DUPLICATE_CLOSE_SOURCE, 779 fdwOdinOptions); 762 780 763 781 //Don't let Open32 close it for us, but do it manually (regardless of error; see SDK docs)) -
trunk/src/kernel32/hmdevice.cpp
r3819 r3948 1 /* $Id: hmdevice.cpp,v 1.2 1 2000-07-12 18:21:42sandervl Exp $ */1 /* $Id: hmdevice.cpp,v 1.22 2000-08-04 21:12:06 sandervl Exp $ */ 2 2 3 3 /* … … 117 117 HANDLE destprocess, 118 118 PHANDLE desthandle, 119 DWORD fdwAccess, 120 BOOL fInherit, 121 DWORD fdwOptions) 119 DWORD fdwAccess, 120 BOOL fInherit, 121 DWORD fdwOptions, 122 DWORD fdwOdinOptions) 122 123 { 123 124 dprintf(("KERNEL32:HandleManager::DuplicateHandle %s(%08x,%08x,%08x,%08x,%08x) - NOT IMPLEMENTED!!!!!!!!\n", -
trunk/src/kernel32/hmdevice.h
r3819 r3948 1 /* $Id: hmdevice.h,v 1.2 1 2000-07-12 18:21:42sandervl Exp $ */1 /* $Id: hmdevice.h,v 1.22 2000-08-04 21:12:07 sandervl Exp $ */ 2 2 3 3 /* … … 88 88 DWORD fdwAccess, 89 89 BOOL fInherit, 90 DWORD fdwOptions); 90 DWORD fdwOptions, 91 DWORD fdwOdinOptions); 91 92 92 93 /* this is a handler method for calls to CreateFile() */ -
trunk/src/kernel32/hmfile.cpp
r3836 r3948 1 /* $Id: hmfile.cpp,v 1.1 3 2000-07-17 00:34:05 phallerExp $ */1 /* $Id: hmfile.cpp,v 1.14 2000-08-04 21:12:07 sandervl Exp $ */ 2 2 3 3 /* … … 5 5 * 6 6 * Copyright 1999-2000 Sander van Leeuwen 7 * 8 * Notes: (#define SHARE_WORKAROUND) 9 * - Temporary workaround for differences in share mode between 10 * OS/2 & NT (for opening the same file multiple times): 11 * NT: CreateFile with FILE_SHARE_READ 12 * CreateFile with FILE_SHARE_READ | FILE_SHARE_WRITE 13 * -> 2nd CreateFile overrides share flags of first one 14 * -> CreateFile with GENERIC_WRITE is now allowed 15 * OS2: DosOpen with OPEN_SHARE_DENYWRITE 16 * DosOpen with OPEN_SHARE_DENYNONE 17 * -> sharing violation; can't change share flags while 18 * handle returned by 1st DosOpen isn't closed 19 * --> 'Solution': always open files in FILE_SHARE_DENYNONE mode 20 * (several installation programs depend on this behaviour) 21 * 22 * - Only for CreateFile; might also be necessary for OpenFile, but I haven't 23 * seen any apps that require it (yet). 7 24 * 8 25 * Project Odin Software License can be found in LICENSE.TXT … … 37 54 #define DBG_LOCALLOG DBG_hmfile 38 55 #include "dbglocal.h" 56 57 //SvL: Share violation workaround for CreateFile 58 #define SHARE_WORKAROUND 39 59 40 60 /***************************************************************************** … … 92 112 pHMHandleData->dwShare &= ~FILE_SHARE_DELETE; 93 113 } 94 114 #ifdef SHARE_WORKAROUND 115 pHMHandleData->dwShare = FILE_SHARE_READ | FILE_SHARE_WRITE; 116 #endif 95 117 hFile = OSLibDosCreateFile((LPSTR)lpFileName, 96 118 pHMHandleData->dwAccess, … … 286 308 DWORD fdwAccess, 287 309 BOOL fInherit, 288 DWORD fdwOptions) 310 DWORD fdwOptions, 311 DWORD fdwOdinOptions) 289 312 { 290 313 HMFileInfo *srcfileinfo = (HMFileInfo *)pHMSrcHandle->dwUserData; … … 309 332 if(srcfileinfo) 310 333 { 311 #if 0 312 // @@@PH Why createfile here? Why not OSLibDupHandle() ? 313 if(CreateFile(srcfileinfo->lpszFileName, pHMHandleData, 314 srcfileinfo->lpSecurityAttributes, NULL) == NO_ERROR) 334 //SvL: Special duplicatehandle option used by memory mapped class to duplicate 335 // file handle 336 // Can't use DosDupHandle or else there can be a sharing violation 337 // when an app tries to access the same file again 338 if(fdwOdinOptions) 315 339 { 316 return TRUE; 340 if(CreateFile(srcfileinfo->lpszFileName, pHMHandleData, 341 srcfileinfo->lpSecurityAttributes, NULL) == NO_ERROR) 342 { 343 return TRUE; 344 } 345 dprintf(("ERROR: DuplicateHandle; CreateFile %s failed!", 346 srcfileinfo->lpszFileName)); 347 return FALSE; 317 348 } 318 dprintf(("ERROR: DuplicateHandle; CreateFile %s failed!",319 srcfileinfo->lpszFileName));320 return FALSE;321 #else322 349 323 350 if(!(fdwOptions & DUPLICATE_SAME_ACCESS) && fdwAccess != pHMSrcHandle->dwAccess) { … … 339 366 return TRUE; // OK 340 367 } 341 #endif342 368 } 343 369 else -
trunk/src/kernel32/hmfile.h
r3765 r3948 1 /* $Id: hmfile.h,v 1. 2 2000-06-28 18:08:34sandervl Exp $ */1 /* $Id: hmfile.h,v 1.3 2000-08-04 21:12:07 sandervl Exp $ */ 2 2 3 3 /* … … 62 62 DWORD fdwAccess, 63 63 BOOL fInherit, 64 DWORD fdwOptions); 64 DWORD fdwOptions, 65 DWORD fdwOdinOptions); 65 66 66 67 /* this is a handler method for calls to CloseHandle() */ -
trunk/src/kernel32/hmmmap.cpp
r3609 r3948 1 /* $Id: hmmmap.cpp,v 1.1 3 2000-05-26 18:42:55sandervl Exp $ */1 /* $Id: hmmmap.cpp,v 1.14 2000-08-04 21:12:07 sandervl Exp $ */ 2 2 3 3 /* … … 110 110 111 111 if(map->Init(pHMHandleData->hHMHandle) == FALSE) { 112 dprintf(("CreateFileMappingA: init failed!")); 112 113 delete map; 113 114 return ERROR_GEN_FAILURE; -
trunk/src/kernel32/hmopen32.cpp
r3642 r3948 1 /* $Id: hmopen32.cpp,v 1.2 4 2000-06-01 11:28:47sandervl Exp $ */1 /* $Id: hmopen32.cpp,v 1.25 2000-08-04 21:12:08 sandervl Exp $ */ 2 2 3 3 /* … … 117 117 DWORD fdwAccess, 118 118 BOOL fInherit, 119 DWORD fdwOptions) 119 DWORD fdwOptions, 120 DWORD fdwOdinOptions) 120 121 { 121 122 BOOL rc; -
trunk/src/kernel32/hmopen32.h
r3642 r3948 1 /* $Id: hmopen32.h,v 1. 6 2000-06-01 11:28:47sandervl Exp $ */1 /* $Id: hmopen32.h,v 1.7 2000-08-04 21:12:08 sandervl Exp $ */ 2 2 3 3 /* … … 48 48 DWORD fdwAccess, 49 49 BOOL fInherit, 50 DWORD fdwOptions); 50 DWORD fdwOptions, 51 DWORD fdwOdinOptions); 51 52 52 53 /* this is a handler method for calls to CloseHandle() */ -
trunk/src/kernel32/mmap.cpp
r3782 r3948 1 /* $Id: mmap.cpp,v 1.4 2 2000-07-01 09:50:55sandervl Exp $ */1 /* $Id: mmap.cpp,v 1.43 2000-08-04 21:12:08 sandervl Exp $ */ 2 2 3 3 /* … … 104 104 if(hMemFile != -1) 105 105 { 106 #if 0 106 107 if(DuplicateHandle(mProcessId, hMemFile, GetCurrentProcess(), 107 108 &hMemFile, 0, FALSE, DUPLICATE_SAME_ACCESS) == FALSE) 109 #else 110 DWORD dwOdinOptions; 111 112 if(!(mProtFlags & PAGE_READWRITE)) { 113 dwOdinOptions = DUPLICATE_ACCESS_READ | DUPLICATE_SHARE_DENYNONE; 114 } 115 else dwOdinOptions = DUPLICATE_ACCESS_READWRITE | DUPLICATE_SHARE_DENYNONE; 116 117 if(HMDuplicateHandleOdin(mProcessId, hMemFile, GetCurrentProcess(), 118 &hMemFile, 0, FALSE, DUPLICATE_SAME_ACCESS, dwOdinOptions) == FALSE) 119 #endif 108 120 { 109 121 dprintf(("Win32MemMap::Init: DuplicateHandle failed!")); -
trunk/src/kernel32/virtual.cpp
r3483 r3948 1 /* $Id: virtual.cpp,v 1.3 0 2000-05-02 20:53:13sandervl Exp $ */1 /* $Id: virtual.cpp,v 1.31 2000-08-04 21:12:09 sandervl Exp $ */ 2 2 3 3 /* … … 52 52 LPCSTR name /* [in] Name of file-mapping object */ ) 53 53 { 54 dprintf(("CreateFileMappingA: %x %x %x%x %s", hFile, protect, size_high, size_low, name)); 54 55 return HMCreateFileMapping(hFile, sa, protect, size_high, size_low, name); 55 56 } -
trunk/src/kernel32/winimagepeldr.cpp
r3872 r3948 1 /* $Id: winimagepeldr.cpp,v 1.5 0 2000-07-20 18:07:00 sandervl Exp $ */1 /* $Id: winimagepeldr.cpp,v 1.51 2000-08-04 21:12:10 sandervl Exp $ */ 2 2 3 3 /* … … 218 218 //Allocate memory to hold the entire image 219 219 if(allocSections(reservedMem) == FALSE) { 220 dprintf((LOG, "Failed to allocate image memory , rc %d", errorState));;220 dprintf((LOG, "Failed to allocate image memory for %s at %x, rc %d", szFileName, oh.ImageBase, errorState));; 221 221 goto failure; 222 222 }
Note:
See TracChangeset
for help on using the changeset viewer.