Ignore:
Timestamp:
Feb 18, 2000, 8:27:31 PM (26 years ago)
Author:
bird
Message:

Unfinised stuff! Don't work. Don't even compile!

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:58 bird Exp $
     1/* $Id: k32AllocMemEx.cpp,v 1.2 2000-02-18 19:27:30 bird Exp $
    22 *
    33 * k32AllocMemEx - Equivalent to DosAllocMem, but this one
     
    1818#define INCL_OS2KRNL_VM
    1919
     20#ifndef OBJ_SELMAPALL
     21#define OBJ_SELMAPALL   0x00000800UL
     22#endif
     23
    2024
    2125/*******************************************************************************
     
    3034
    3135
     36/* nasty! These should be imported from the kernel later! */
     37
     38ULONG 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
     59ULONG 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};
    3278
    3379
     
    4995APIRET k32AllocMemEx(PPVOID ppv, ULONG cb, ULONG flag, ULONG ulCS, ULONG ulEIP)
    5096{
     97    APIRET  rc;
     98    ULONG   flFlags2;
     99    VMAC    vmac = {0};
     100    ULONG   cbCommit;
     101    HMTE    hMTE;
    51102
    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;
    57113
    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;
    59135}
    60136
Note: See TracChangeset for help on using the changeset viewer.