Changeset 2823 for trunk/src/win32k/k32/k32AllocMemEx.cpp
- Timestamp:
- Feb 18, 2000, 8:27:31 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/k32/k32AllocMemEx.cpp
r2800 r2823 1 /* $Id: k32AllocMemEx.cpp,v 1. 1 2000-02-15 23:39:58bird Exp $1 /* $Id: k32AllocMemEx.cpp,v 1.2 2000-02-18 19:27:30 bird Exp $ 2 2 * 3 3 * k32AllocMemEx - Equivalent to DosAllocMem, but this one … … 18 18 #define INCL_OS2KRNL_VM 19 19 20 #ifndef OBJ_SELMAPALL 21 #define OBJ_SELMAPALL 0x00000800UL 22 #endif 23 20 24 21 25 /******************************************************************************* … … 30 34 31 35 36 /* nasty! These should be imported from the kernel later! */ 37 38 ULONG vmApiF0[] = 39 { 40 0, 41 VMA_READ, 42 VMA_WRITE | VMA_READ, 43 VMA_WRITE | VMA_READ, 44 VMA_EXECUTE, 45 VMA_EXECUTE | VMA_READ, 46 VMA_WRITE | VMA_EXECUTE | VMA_READ, 47 VMA_WRITE | VMA_EXECUTE | VMA_READ, 48 VMA_GUARD, 49 VMA_READ | VMA_GUARD, 50 VMA_WRITE | VMA_READ | VMA_GUARD, 51 VMA_WRITE | VMA_READ | VMA_GUARD, 52 VMA_EXECUTE | VMA_GUARD, 53 VMA_EXECUTE | VMA_READ | VMA_GUARD, 54 VMA_WRITE | VMA_EXECUTE | VMA_READ | VMA_GUARD, 55 VMA_WRITE | VMA_EXECUTE | VMA_READ | VMA_GUARD 56 }; 57 58 59 ULONG vmApiF1[] = 60 { 61 0, 62 0, 63 VMA_DECOMMIT, 64 VMA_DECOMMIT, 65 VMA_TILE, 66 VMA_TILE, 67 VMA_DECOMMIT | VMA_TILE, 68 VMA_DECOMMIT | VMA_TILE, 69 VMA_PROTECTED, 70 VMA_PROTECTED, 71 VMA_PROTECTED | VMA_DECOMMIT, 72 VMA_PROTECTED | VMA_DECOMMIT, 73 VMA_PROTECTED | VMA_TILE, 74 VMA_PROTECTED | VMA_TILE, 75 VMA_PROTECTED | VMA_DECOMMIT | VMA_TILE, 76 VMA_PROTECTED | VMA_DECOMMIT | VMA_TILE 77 }; 32 78 33 79 … … 49 95 APIRET k32AllocMemEx(PPVOID ppv, ULONG cb, ULONG flag, ULONG ulCS, ULONG ulEIP) 50 96 { 97 APIRET rc; 98 ULONG flFlags2; 99 VMAC vmac = {0}; 100 ULONG cbCommit; 101 HMTE hMTE; 51 102 52 ppv = ppv; 53 cb = cb; 54 flag = flag; 55 ulCS = ulCS; 56 ulEIP = ulEIP; 103 if ((flag & ~(PAG_READ | PAG_WRITE | PAG_EXECUTE | PAG_GUARD | PAG_COMMIT 104 | OBJ_TILE | OBJ_SELMAPALL)) 105 || (flag & (PAG_READ | PAG_WRITE | PAG_EXECUTE)) == 0UL 106 || cb == 0 107 || ulCS == 0 108 || ulEIP == 0 109 ) 110 return ERROR_INVALID_PARAMETER; 111 if (cb > 0xC0000000UL) 112 return ERROR_NOT_ENOUGH_MEMORY; 57 113 58 return ERROR_NOT_SUPPORTED; 114 vmac.ac_va = (ULONG)*ppv; 115 cb = (cb + 0xFFFUL) & ~0xFFFUL; 116 if (flag & PAG_COMMIT) 117 cbCommit = cb; 118 flag = vmApiF0[flag & (PAG_READ | PAG_WRITE | PAG_EXECUTE | PAG_GUARD)] 119 | vmApiF1[(flag & (PAG_COMMIT | PAG_DECOMMIT | OBJ_TILE | OBJ_PROTECTED)) >> 2] 120 | VMA_USER | VMA_RESIDENT | VMA_LOWMEM2 | VMA_TILE | 0x12000000; 121 flFlags2 = (flag & VMA_WRITE ? VMAF2_WRITE : 0) | 0x460; 122 123 hMTE = VMGetOwner(ulCS, ulEIP); 124 rc = VMAllocMem(cb, 125 cbCommit, 126 flag, 127 0, 128 0, 129 hMTE, 130 flFlags2, 131 0, 132 (PVMAC)SSToDS(&vmac)); 133 134 return rc; 59 135 } 60 136
Note:
See TracChangeset
for help on using the changeset viewer.