Changeset 3571
- Timestamp:
- Aug 31, 2007, 4:39:26 AM (18 years ago)
- Location:
- trunk/kStuff
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/include/k/kDbgAll.h
r3550 r3571 29 29 #include <k/kTypes.h> 30 30 #include <k/kRdr.h> 31 //#include <k/kLdr.h> 32 #include "kLdr.h" 31 #include <k/kLdr.h> 33 32 #include <k/kDbg.h> 34 33 -
trunk/kStuff/include/k/kLdr.h
r3570 r3571 161 161 typedef const KLDRPU *PCKLDRPU; 162 162 163 164 /**165 * Memory Mapping Protections.166 *167 * @remark Shared segments can be mapped using the non copy-on-write variant.168 * (Normally the copy-on-write variant is used because changes must169 * be private and not shared with other processes mapping the file.)170 */171 typedef enum KLDRPROT172 {173 /** The usual invalid 0. */174 KLDRPROT_INVALID = 0,175 /** No access (page not present). */176 KLDRPROT_NOACCESS,177 /** Read only. */178 KLDRPROT_READONLY,179 /** Read & write. */180 KLDRPROT_READWRITE,181 /** Read & copy on write. */182 KLDRPROT_WRITECOPY,183 /** Execute only. */184 KLDRPROT_EXECUTE,185 /** Execute & read. */186 KLDRPROT_EXECUTE_READ,187 /** Execute, read & write. */188 KLDRPROT_EXECUTE_READWRITE,189 /** Execute, read & copy on write. */190 KLDRPROT_EXECUTE_WRITECOPY,191 /** The usual end value. (exclusive) */192 KLDRPROT_END,193 /** Blow the type up to 32-bits. */194 KLDRPROT_32BIT_HACK = 0x7fffffff195 } KLDRPROT;196 163 197 164 /** Pointer to a loader segment. */ … … 489 456 KU32 fFlags; 490 457 /** The segment protection. */ 491 K LDRPROT enmProt;458 KPROT enmProt; 492 459 /** The size of the segment. */ 493 460 KLDRSIZE cb; -
trunk/kStuff/include/k/kRdrAll.h
r3550 r3571 29 29 30 30 #include <k/kDefs.h> 31 #include "../kLdr/kLdr.h" //later -<k/kLdr.h>31 #include <k/kLdr.h> 32 32 #include <k/kRdr.h> 33 33 -
trunk/kStuff/kDbg/kDbgModule.cpp
r3552 r3571 343 343 * @param pSym Where to store the symbol details. 344 344 */ 345 KDBG_DECL(int) kDbgModuleQuerySymbol(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PKDBGSYMBOL pSym)345 KDBG_DECL(int) kDbgModuleQuerySymbol(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGSYMBOL pSym) 346 346 { 347 347 KDBGMOD_VALIDATE(pMod); … … 365 365 * Free the returned symbol using kDbgSymbolFree(). 366 366 */ 367 KDBG_DECL(int) kDbgModuleQuerySymbolA(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PPKDBGSYMBOL ppSym)367 KDBG_DECL(int) kDbgModuleQuerySymbolA(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PPKDBGSYMBOL ppSym) 368 368 { 369 369 kDbgAssertPtrReturn(ppSym, KERR_INVALID_POINTER); … … 396 396 * @param pLine Where to store the line number details. 397 397 */ 398 KDBG_DECL(int) kDbgModuleQueryLine(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PKDBGLINE pLine)398 KDBG_DECL(int) kDbgModuleQueryLine(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGLINE pLine) 399 399 { 400 400 KDBGMOD_VALIDATE(pMod); … … 418 418 * Free the returned line number using kDbgLineFree(). 419 419 */ 420 KDBG_DECL(int) kDbgModuleQueryLineA(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PPKDBGLINE ppLine)420 KDBG_DECL(int) kDbgModuleQueryLineA(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PPKDBGLINE ppLine) 421 421 { 422 422 kDbgAssertPtrReturn(ppLine, KERR_INVALID_POINTER); -
trunk/kStuff/kLdr/kLdrHlp.h
r3567 r3571 178 178 void kldrHlpSemRelease(void); 179 179 180 int kldrHlpPageAlloc(void **ppv, KSIZE cb, K LDRPROT enmProt, unsigned fFixed);181 int kldrHlpPageProtect(void *pv, KSIZE cb, K LDRPROT enmProt);180 int kldrHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, unsigned fFixed); 181 int kldrHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt); 182 182 int kldrHlpPageFree(void *pv, KSIZE cb); 183 183 -
trunk/kStuff/kLdr/kLdrHlpMem.c
r3570 r3571 64 64 65 65 #ifdef __OS2__ 66 static ULONG kldrHlpPageProtToNative(K LDRPROT enmProt)66 static ULONG kldrHlpPageProtToNative(KPROT enmProt) 67 67 { 68 68 switch (enmProt) 69 69 { 70 case K LDRPROT_NOACCESS: return PAG_EXECUTE | PAG_READ | PAG_WRITE;71 case K LDRPROT_READONLY: return PAG_COMMIT | PAG_READ;72 case K LDRPROT_READWRITE: return PAG_COMMIT | PAG_READ | PAG_WRITE;73 case K LDRPROT_EXECUTE: return PAG_COMMIT | PAG_EXECUTE;74 case K LDRPROT_EXECUTE_READ: return PAG_COMMIT | PAG_EXECUTE | PAG_READ;75 case K LDRPROT_EXECUTE_READWRITE: return PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE;70 case KPROT_NOACCESS: return PAG_EXECUTE | PAG_READ | PAG_WRITE; 71 case KPROT_READONLY: return PAG_COMMIT | PAG_READ; 72 case KPROT_READWRITE: return PAG_COMMIT | PAG_READ | PAG_WRITE; 73 case KPROT_EXECUTE: return PAG_COMMIT | PAG_EXECUTE; 74 case KPROT_EXECUTE_READ: return PAG_COMMIT | PAG_EXECUTE | PAG_READ; 75 case KPROT_EXECUTE_READWRITE: return PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE; 76 76 default: 77 77 kldrHlpAssert(0); … … 80 80 } 81 81 #elif defined(__WIN__) 82 static DWORD kldrHlpPageProtToNative(K LDRPROT enmProt)82 static DWORD kldrHlpPageProtToNative(KPROT enmProt) 83 83 { 84 84 switch (enmProt) 85 85 { 86 case K LDRPROT_NOACCESS: return PAGE_NOACCESS;87 case K LDRPROT_READONLY: return PAGE_READONLY;88 case K LDRPROT_READWRITE: return PAGE_READWRITE;89 case K LDRPROT_EXECUTE: return PAGE_EXECUTE;90 case K LDRPROT_EXECUTE_READ: return PAGE_EXECUTE_READ;91 case K LDRPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE;86 case KPROT_NOACCESS: return PAGE_NOACCESS; 87 case KPROT_READONLY: return PAGE_READONLY; 88 case KPROT_READWRITE: return PAGE_READWRITE; 89 case KPROT_EXECUTE: return PAGE_EXECUTE; 90 case KPROT_EXECUTE_READ: return PAGE_EXECUTE_READ; 91 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 92 92 default: 93 93 kldrHlpAssert(0); … … 107 107 * @param enmProt The new protection. Copy-on-write is invalid. 108 108 */ 109 int kldrHlpPageAlloc(void **ppv, KSIZE cb, K LDRPROT enmProt, unsigned fFixed)109 int kldrHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, unsigned fFixed) 110 110 { 111 111 #ifdef __OS2__ … … 162 162 * @param enmProt The new protection. Copy-on-write is invalid. 163 163 */ 164 int kldrHlpPageProtect(void *pv, KSIZE cb, K LDRPROT enmProt)164 int kldrHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt) 165 165 { 166 166 #ifdef __OS2__ -
trunk/kStuff/kLdr/kLdrModLX.c
r3570 r3571 470 470 case 0: 471 471 case OBJSHARED: 472 pMod->aSegments[i].enmProt = K LDRPROT_NOACCESS;472 pMod->aSegments[i].enmProt = KPROT_NOACCESS; 473 473 break; 474 474 case OBJREAD: 475 475 case OBJREAD | OBJSHARED: 476 pMod->aSegments[i].enmProt = K LDRPROT_READONLY;476 pMod->aSegments[i].enmProt = KPROT_READONLY; 477 477 break; 478 478 case OBJWRITE: 479 479 case OBJWRITE | OBJREAD: 480 pMod->aSegments[i].enmProt = K LDRPROT_WRITECOPY;480 pMod->aSegments[i].enmProt = KPROT_WRITECOPY; 481 481 break; 482 482 case OBJWRITE | OBJSHARED: 483 483 case OBJWRITE | OBJSHARED | OBJREAD: 484 pMod->aSegments[i].enmProt = K LDRPROT_READWRITE;484 pMod->aSegments[i].enmProt = KPROT_READWRITE; 485 485 break; 486 486 case OBJEXEC: 487 487 case OBJEXEC | OBJSHARED: 488 pMod->aSegments[i].enmProt = K LDRPROT_EXECUTE;488 pMod->aSegments[i].enmProt = KPROT_EXECUTE; 489 489 break; 490 490 case OBJEXEC | OBJREAD: 491 491 case OBJEXEC | OBJREAD | OBJSHARED: 492 pMod->aSegments[i].enmProt = K LDRPROT_EXECUTE_READ;492 pMod->aSegments[i].enmProt = KPROT_EXECUTE_READ; 493 493 break; 494 494 case OBJEXEC | OBJWRITE: 495 495 case OBJEXEC | OBJWRITE | OBJREAD: 496 pMod->aSegments[i].enmProt = K LDRPROT_EXECUTE_WRITECOPY;496 pMod->aSegments[i].enmProt = KPROT_EXECUTE_WRITECOPY; 497 497 break; 498 498 case OBJEXEC | OBJWRITE | OBJSHARED: 499 499 case OBJEXEC | OBJWRITE | OBJSHARED | OBJREAD: 500 pMod->aSegments[i].enmProt = K LDRPROT_EXECUTE_READWRITE;500 pMod->aSegments[i].enmProt = KPROT_EXECUTE_READWRITE; 501 501 break; 502 502 } 503 503 if ((pModLX->paObjs[i].o32_flags & (OBJREAD | OBJWRITE | OBJEXEC | OBJRSRC)) == OBJRSRC) 504 pMod->aSegments[i].enmProt = K LDRPROT_READONLY;504 pMod->aSegments[i].enmProt = KPROT_READONLY; 505 505 /*pMod->aSegments[i].f16bit = !(pModLX->paObjs[i].o32_flags & OBJBIGDEF) 506 506 pMod->aSegments[i].fIOPL = !(pModLX->paObjs[i].o32_flags & OBJIOPL) … … 1345 1345 return KLDR_ERR_ADDRESS_OVERFLOW; 1346 1346 } 1347 rc = kldrHlpPageAlloc(&pvBase, pModLX->cbMapped, K LDRPROT_EXECUTE_READWRITE, fFixed);1347 rc = kldrHlpPageAlloc(&pvBase, pModLX->cbMapped, KPROT_EXECUTE_READWRITE, fFixed); 1348 1348 if (rc) 1349 1349 return rc; … … 1829 1829 int rc; 1830 1830 void *pv; 1831 K LDRPROT enmProt;1831 KPROT enmProt; 1832 1832 1833 1833 /* calc new protection. */ … … 1837 1837 switch (enmProt) 1838 1838 { 1839 case K LDRPROT_NOACCESS:1840 case K LDRPROT_READONLY:1841 case K LDRPROT_READWRITE:1842 case K LDRPROT_WRITECOPY:1843 enmProt = K LDRPROT_READWRITE;1839 case KPROT_NOACCESS: 1840 case KPROT_READONLY: 1841 case KPROT_READWRITE: 1842 case KPROT_WRITECOPY: 1843 enmProt = KPROT_READWRITE; 1844 1844 break; 1845 case K LDRPROT_EXECUTE:1846 case K LDRPROT_EXECUTE_READ:1847 case K LDRPROT_EXECUTE_READWRITE:1848 case K LDRPROT_EXECUTE_WRITECOPY:1849 enmProt = K LDRPROT_EXECUTE_READWRITE;1845 case KPROT_EXECUTE: 1846 case KPROT_EXECUTE_READ: 1847 case KPROT_EXECUTE_READWRITE: 1848 case KPROT_EXECUTE_WRITECOPY: 1849 enmProt = KPROT_EXECUTE_READWRITE; 1850 1850 break; 1851 1851 default: … … 1857 1857 { 1858 1858 /* copy on write -> normal write. */ 1859 if (enmProt == K LDRPROT_EXECUTE_WRITECOPY)1860 enmProt = K LDRPROT_EXECUTE_READWRITE;1861 else if (enmProt == K LDRPROT_WRITECOPY)1862 enmProt = K LDRPROT_READWRITE;1859 if (enmProt == KPROT_EXECUTE_WRITECOPY) 1860 enmProt = KPROT_EXECUTE_READWRITE; 1861 else if (enmProt == KPROT_WRITECOPY) 1862 enmProt = KPROT_READWRITE; 1863 1863 } 1864 1864 -
trunk/kStuff/kLdr/kLdrModMachO.c
r3570 r3571 874 874 pSeg->Sel16bit = 0; 875 875 pSeg->fFlags = 0; 876 pSeg->enmProt = K LDRPROT_EXECUTE_WRITECOPY; /** @todo fixme! */876 pSeg->enmProt = KPROT_EXECUTE_WRITECOPY; /** @todo fixme! */ 877 877 pSeg->cb = pSect->size; 878 878 pSeg->Alignment = (1 << pSect->align); -
trunk/kStuff/kLdr/kLdrModNative.c
r3570 r3571 349 349 pMod->aSegments[0].pchName = "fake"; 350 350 pMod->aSegments[0].cchName = sizeof("fake") - 1; 351 pMod->aSegments[0].enmProt = K LDRPROT_NOACCESS;351 pMod->aSegments[0].enmProt = KPROT_NOACCESS; 352 352 pMod->aSegments[0].cb = 0; 353 353 pMod->aSegments[0].Alignment = 0; … … 377 377 pMod->aSegments[0].pchName = "TheHeaders"; 378 378 pMod->aSegments[0].cchName = sizeof("TheHeaders") - 1; 379 pMod->aSegments[0].enmProt = K LDRPROT_READONLY;379 pMod->aSegments[0].enmProt = KPROT_READONLY; 380 380 pMod->aSegments[0].cb = pNtHdrs->OptionalHeader.SizeOfHeaders; 381 381 pMod->aSegments[0].Alignment = pNtHdrs->OptionalHeader.SectionAlignment; … … 440 440 case 0: 441 441 case IMAGE_SCN_MEM_SHARED: 442 pMod->aSegments[i + 1].enmProt = K LDRPROT_NOACCESS;442 pMod->aSegments[i + 1].enmProt = KPROT_NOACCESS; 443 443 break; 444 444 case IMAGE_SCN_MEM_READ: 445 445 case IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED: 446 pMod->aSegments[i + 1].enmProt = K LDRPROT_READONLY;446 pMod->aSegments[i + 1].enmProt = KPROT_READONLY; 447 447 break; 448 448 case IMAGE_SCN_MEM_WRITE: 449 449 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ: 450 pMod->aSegments[i + 1].enmProt = K LDRPROT_WRITECOPY;450 pMod->aSegments[i + 1].enmProt = KPROT_WRITECOPY; 451 451 break; 452 452 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED: 453 453 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED | IMAGE_SCN_MEM_READ: 454 pMod->aSegments[i + 1].enmProt = K LDRPROT_READWRITE;454 pMod->aSegments[i + 1].enmProt = KPROT_READWRITE; 455 455 break; 456 456 case IMAGE_SCN_MEM_EXECUTE: 457 457 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_SHARED: 458 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE;458 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE; 459 459 break; 460 460 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ: 461 461 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED: 462 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_READ;462 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_READ; 463 463 break; 464 464 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE: 465 465 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ: 466 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_WRITECOPY;466 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_WRITECOPY; 467 467 break; 468 468 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED: 469 469 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED | IMAGE_SCN_MEM_READ: 470 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_READWRITE;470 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_READWRITE; 471 471 break; 472 472 } -
trunk/kStuff/kLdr/kLdrModPE.c
r3570 r3571 292 292 pMod->aSegments[0].pchName = "TheHeaders"; 293 293 pMod->aSegments[0].cchName = sizeof("TheHeaders") - 1; 294 pMod->aSegments[0].enmProt = K LDRPROT_READONLY;294 pMod->aSegments[0].enmProt = KPROT_READONLY; 295 295 pMod->aSegments[0].cb = pModPE->Hdrs.OptionalHeader.SizeOfHeaders; 296 296 pMod->aSegments[0].Alignment = pModPE->Hdrs.OptionalHeader.SectionAlignment; … … 358 358 case 0: 359 359 case IMAGE_SCN_MEM_SHARED: 360 pMod->aSegments[i + 1].enmProt = K LDRPROT_NOACCESS;360 pMod->aSegments[i + 1].enmProt = KPROT_NOACCESS; 361 361 break; 362 362 case IMAGE_SCN_MEM_READ: 363 363 case IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED: 364 pMod->aSegments[i + 1].enmProt = K LDRPROT_READONLY;364 pMod->aSegments[i + 1].enmProt = KPROT_READONLY; 365 365 break; 366 366 case IMAGE_SCN_MEM_WRITE: 367 367 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ: 368 pMod->aSegments[i + 1].enmProt = K LDRPROT_WRITECOPY;368 pMod->aSegments[i + 1].enmProt = KPROT_WRITECOPY; 369 369 break; 370 370 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED: 371 371 case IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED | IMAGE_SCN_MEM_READ: 372 pMod->aSegments[i + 1].enmProt = K LDRPROT_READWRITE;372 pMod->aSegments[i + 1].enmProt = KPROT_READWRITE; 373 373 break; 374 374 case IMAGE_SCN_MEM_EXECUTE: 375 375 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_SHARED: 376 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE;376 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE; 377 377 break; 378 378 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ: 379 379 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED: 380 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_READ;380 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_READ; 381 381 break; 382 382 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE: 383 383 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ: 384 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_WRITECOPY;384 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_WRITECOPY; 385 385 break; 386 386 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED: 387 387 case IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_SHARED | IMAGE_SCN_MEM_READ: 388 pMod->aSegments[i + 1].enmProt = K LDRPROT_EXECUTE_READWRITE;388 pMod->aSegments[i + 1].enmProt = KPROT_EXECUTE_READWRITE; 389 389 break; 390 390 } -
trunk/kStuff/kLdr/kLdrRdrFile.c
r3570 r3571 279 279 * @param enmProt kLdr protection. 280 280 */ 281 static ULONG kldrRdrFileGetNtMapProt(K LDRPROT enmProt)281 static ULONG kldrRdrFileGetNtMapProt(KPROT enmProt) 282 282 { 283 283 switch (enmProt) 284 284 { 285 case K LDRPROT_NOACCESS: return PAGE_NOACCESS;286 case K LDRPROT_READONLY: return PAGE_READONLY;287 case K LDRPROT_READWRITE: return PAGE_READWRITE;288 case K LDRPROT_WRITECOPY: return PAGE_WRITECOPY;289 case K LDRPROT_EXECUTE: return PAGE_EXECUTE;290 case K LDRPROT_EXECUTE_READ: return PAGE_EXECUTE_READ;291 case K LDRPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE;292 case K LDRPROT_EXECUTE_WRITECOPY: return PAGE_EXECUTE_WRITECOPY;285 case KPROT_NOACCESS: return PAGE_NOACCESS; 286 case KPROT_READONLY: return PAGE_READONLY; 287 case KPROT_READWRITE: return PAGE_READWRITE; 288 case KPROT_WRITECOPY: return PAGE_WRITECOPY; 289 case KPROT_EXECUTE: return PAGE_EXECUTE; 290 case KPROT_EXECUTE_READ: return PAGE_EXECUTE_READ; 291 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 292 case KPROT_EXECUTE_WRITECOPY: return PAGE_EXECUTE_WRITECOPY; 293 293 default: return ~(ULONG)0; 294 294 } … … 302 302 * @param enmProt kLdr protection. 303 303 */ 304 static ULONG kldrRdrFileGetNtAllocProt(K LDRPROT enmProt)304 static ULONG kldrRdrFileGetNtAllocProt(KPROT enmProt) 305 305 { 306 306 switch (enmProt) 307 307 { 308 case K LDRPROT_NOACCESS: return PAGE_NOACCESS;309 case K LDRPROT_READONLY: return PAGE_READONLY;310 case K LDRPROT_WRITECOPY:311 case K LDRPROT_READWRITE: return PAGE_READWRITE;312 case K LDRPROT_EXECUTE: return PAGE_EXECUTE;313 case K LDRPROT_EXECUTE_READ: return PAGE_EXECUTE_READ;314 case K LDRPROT_EXECUTE_WRITECOPY:315 case K LDRPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE;308 case KPROT_NOACCESS: return PAGE_NOACCESS; 309 case KPROT_READONLY: return PAGE_READONLY; 310 case KPROT_WRITECOPY: 311 case KPROT_READWRITE: return PAGE_READWRITE; 312 case KPROT_EXECUTE: return PAGE_EXECUTE; 313 case KPROT_EXECUTE_READ: return PAGE_EXECUTE_READ; 314 case KPROT_EXECUTE_WRITECOPY: 315 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 316 316 default: return ~(ULONG)0; 317 317 } … … 413 413 int rc; 414 414 void *pv; 415 K LDRPROT enmProt;415 KPROT enmProt; 416 416 417 417 if (paSegments[i].RVA == NIL_KLDRADDR) … … 424 424 switch (enmProt) 425 425 { 426 case K LDRPROT_NOACCESS:427 case K LDRPROT_READONLY:428 case K LDRPROT_READWRITE:429 case K LDRPROT_WRITECOPY:430 enmProt = K LDRPROT_READWRITE;426 case KPROT_NOACCESS: 427 case KPROT_READONLY: 428 case KPROT_READWRITE: 429 case KPROT_WRITECOPY: 430 enmProt = KPROT_READWRITE; 431 431 break; 432 case K LDRPROT_EXECUTE:433 case K LDRPROT_EXECUTE_READ:434 case K LDRPROT_EXECUTE_READWRITE:435 case K LDRPROT_EXECUTE_WRITECOPY:436 enmProt = K LDRPROT_EXECUTE_READWRITE;432 case KPROT_EXECUTE: 433 case KPROT_EXECUTE_READ: 434 case KPROT_EXECUTE_READWRITE: 435 case KPROT_EXECUTE_WRITECOPY: 436 enmProt = KPROT_EXECUTE_READWRITE; 437 437 break; 438 438 default: … … 444 444 { 445 445 /* copy on write -> normal write. */ 446 if (enmProt == K LDRPROT_EXECUTE_WRITECOPY)447 enmProt = K LDRPROT_EXECUTE_READWRITE;448 else if (enmProt == K LDRPROT_WRITECOPY)449 enmProt = K LDRPROT_READWRITE;446 if (enmProt == KPROT_EXECUTE_WRITECOPY) 447 enmProt = KPROT_EXECUTE_READWRITE; 448 else if (enmProt == KPROT_WRITECOPY) 449 enmProt = KPROT_READWRITE; 450 450 } 451 451 … … 771 771 * Generic mapping code using kldrHlpPageAlloc(), kldrHlpPageFree() and kldrHlpPageProtect(). 772 772 */ 773 rc = kldrHlpPageAlloc(&pPrep->pv, pPrep->cb, K LDRPROT_EXECUTE_READWRITE, fFixed);773 rc = kldrHlpPageAlloc(&pPrep->pv, pPrep->cb, KPROT_EXECUTE_READWRITE, fFixed); 774 774 if (rc) 775 775 return rc; -
trunk/kStuff/kLdr/tstkLdrMod.c
r3570 r3571 441 441 if (pMod->aSegments[i].pvUser != NULL) 442 442 return Failure("Bad pvUser"); 443 if (pMod->aSegments[i].enmProt >= K LDRPROT_END || pMod->aSegments[i].enmProt <= KLDRPROT_INVALID)443 if (pMod->aSegments[i].enmProt >= KPROT_END || pMod->aSegments[i].enmProt <= KPROT_INVALID) 444 444 return Failure("Bad enmProt"); 445 445 if (pMod->aSegments[i].MapAddress != 0) -
trunk/kStuff/kRdr/Makefile.kmk
r3548 r3571 34 34 kRdrStatic_TEMPLATE = kStuffLIB 35 35 kRdrStatic_DEFS = KDBG_BUILDING 36 kRdrStatic_INCS = ../kLdr37 36 kRdrStatic_SOURCES = \ 38 37 kRdr.cpp \ -
trunk/kStuff/kRdr/kRdrFile.cpp
r3552 r3571 273 273 * @param enmProt kLdr protection. 274 274 */ 275 static ULONG krdrFileGetNtMapProt(K LDRPROT enmProt)275 static ULONG krdrFileGetNtMapProt(KPROT enmProt) 276 276 { 277 277 switch (enmProt) 278 278 { 279 case K LDRPROT_NOACCESS: return PAGE_NOACCESS;280 case K LDRPROT_READONLY: return PAGE_READONLY;281 case K LDRPROT_READWRITE: return PAGE_READWRITE;282 case K LDRPROT_WRITECOPY: return PAGE_WRITECOPY;283 case K LDRPROT_EXECUTE: return PAGE_EXECUTE;284 case K LDRPROT_EXECUTE_READ: return PAGE_EXECUTE_READ;285 case K LDRPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE;286 case K LDRPROT_EXECUTE_WRITECOPY: return PAGE_EXECUTE_WRITECOPY;279 case KPROT_NOACCESS: return PAGE_NOACCESS; 280 case KPROT_READONLY: return PAGE_READONLY; 281 case KPROT_READWRITE: return PAGE_READWRITE; 282 case KPROT_WRITECOPY: return PAGE_WRITECOPY; 283 case KPROT_EXECUTE: return PAGE_EXECUTE; 284 case KPROT_EXECUTE_READ: return PAGE_EXECUTE_READ; 285 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 286 case KPROT_EXECUTE_WRITECOPY: return PAGE_EXECUTE_WRITECOPY; 287 287 default: return ~(ULONG)0; 288 288 } … … 296 296 * @param enmProt kLdr protection. 297 297 */ 298 static ULONG krdrFileGetNtAllocProt(K LDRPROT enmProt)298 static ULONG krdrFileGetNtAllocProt(KPROT enmProt) 299 299 { 300 300 switch (enmProt) 301 301 { 302 case K LDRPROT_NOACCESS: return PAGE_NOACCESS;303 case K LDRPROT_READONLY: return PAGE_READONLY;304 case K LDRPROT_WRITECOPY:305 case K LDRPROT_READWRITE: return PAGE_READWRITE;306 case K LDRPROT_EXECUTE: return PAGE_EXECUTE;307 case K LDRPROT_EXECUTE_READ: return PAGE_EXECUTE_READ;308 case K LDRPROT_EXECUTE_WRITECOPY:309 case K LDRPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE;302 case KPROT_NOACCESS: return PAGE_NOACCESS; 303 case KPROT_READONLY: return PAGE_READONLY; 304 case KPROT_WRITECOPY: 305 case KPROT_READWRITE: return PAGE_READWRITE; 306 case KPROT_EXECUTE: return PAGE_EXECUTE; 307 case KPROT_EXECUTE_READ: return PAGE_EXECUTE_READ; 308 case KPROT_EXECUTE_WRITECOPY: 309 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 310 310 default: return ~(ULONG)0; 311 311 } … … 444 444 } 445 445 446 pv = ( uint8_t*)pPrep->pv + paSegments[i].RVA;446 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 447 447 448 448 rc = kHlpPageProtect(pv, paSegments[i].cbMapped, enmProt); … … 511 511 continue; 512 512 513 pv = ( uint8_t*)pPrep->pv + paSegments[i].RVA;513 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 514 514 rc = pRdr->pOps->pfnRead(pRdr, pv, paSegments[i].cbFile, paSegments[i].offFile); 515 515 if (rc) … … 671 671 continue; 672 672 673 pv = ( uint8_t*)pPrep->pv + paSegments[i].RVA;673 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 674 674 if (paSegments[i].cbFile > 0) 675 675 { … … 729 729 continue; 730 730 731 pv = ( uint8_t*)pPrep->pv + paSegments[i].RVA;731 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 732 732 if (paSegments[i].cbFile > 0) 733 733 NtUnmapViewOfSection(NtCurrentProcess(), pv); … … 780 780 continue; 781 781 782 pv = ( uint8_t*)pPrep->pv + paSegments[i].RVA;782 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 783 783 rc = pRdr->pOps->pfnRead(pRdr, pv, paSegments[i].cbFile, paSegments[i].offFile); 784 784 if (rc)
Note:
See TracChangeset
for help on using the changeset viewer.