Changeset 4164 for trunk/src/win32k
- Timestamp:
- Sep 2, 2000, 11:08:23 PM (25 years ago)
- Location:
- trunk/src/win32k
- Files:
-
- 21 added
- 5 deleted
- 77 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/Makefile
r3605 r4164 1 1 ################################################################################ 2 # $Id: Makefile,v 1.4 3 2000-05-25 22:12:49bird Exp $2 # $Id: Makefile,v 1.44 2000-09-02 21:07:52 bird Exp $ 3 3 # 4 4 # Win32k makefile. … … 40 40 CC = icc 41 41 !if "$(CCENV)" == "VAC36" 42 ILIB = ilib /nofree 42 ILIB = ilib /nofree /nobackup /nologo 43 43 !else 44 ILIB = ilib 44 ILIB = ilib /nobackup /nologo 45 45 !endif 46 46 LD = ilink … … 48 48 49 49 CFLAGS = -q -Ge -Gs- -Gr+ -Rn -Ss+ -Mp -Wall+ppt-ppc-inl-cnv-gnr-vft-gen-uni-ext- 50 CFLAGS16 = -c -W 4 -Asfw /NTCODE16 /NDDATA16 -G2s -Zp -Zl -nologo -Fo$@ -Fa50 CFLAGS16 = -c -W3 -Asfw /NTCODE16 /NDDATA16 -G2s -Zp -Zl -nologo 51 51 CPPFLAGS = -q -Ge -Gs- -Gr+ -Rn -Ss+ -Mp -Gx -Wall+ppt-ppc-inl-cnv-gnr-vft- 52 52 ASFLAGS = -Sv:ALP -Mb -Li 53 LFLAGS = /nologo /MAP /NOI /NOE /NOD /A:16 54 CDEFINES = -DWIN32K -DRING0 -D__WIN32OS2__ -D__WINE__ 55 CDEFINES16 = -DRING0 56 ADEFINES = -D:WIN32K 53 LFLAGS = /nologo /MAP /NOI /NOE /NOD /A:16 /PACKCODE /PACKDATA 54 CDEFINESB = -DWIN32K -DRING0 -D__WIN32OS2__ -D__WINE__ 55 CDEFINESB16 = -DRING0 56 ASDEFINES = -D:WIN32K 57 58 !if "$(CCENV)" == "VAC36" 59 VACLIB = $(VACPATH)\lib\cpprni36.lib 60 !else 61 VACLIB = $(VACPATH)\lib\cppon30.lib 62 !endif 57 63 58 64 … … 64 70 CFLAGS16 = $(CFLAGS16) -Ogeitln -Gs 65 71 CPPFLAGS = $(CPPFLAGS) -G5 -O+ 66 LFLAGS = $(LFLAGS) /EXEPACK:2 /NODEBUG /PACKC /PACKD67 CDEFINES = $(CDEFINES )-DRELEASE68 CDEFINES16 = $(CDEFINES 16) -DRELEASE72 LFLAGS = $(LFLAGS) /EXEPACK:2 /NODEBUG 73 CDEFINES = $(CDEFINESB) -DRELEASE 74 CDEFINES16 = $(CDEFINESB16) -DRELEASE 69 75 ASDEFINES = $(ASDEFINES) -D:RELEASE 70 76 … … 72 78 73 79 # DEBUG 74 CFLAGS = $(CFLAGS) -O - -Ti+80 CFLAGS = $(CFLAGS) -O+ -Os- -Ti+ 75 81 CFLAGS16 = $(CFLAGS16) -Zi -Od 76 CPPFLAGS = $(CPPFLAGS) -O - -Ti+77 LFLAGS = $(LFLAGS) /NOEXEPACK /DEBUG /NODEB82 CPPFLAGS = $(CPPFLAGS) -O+ -Os- -Ti+ 83 LFLAGS = $(LFLAGS) /NOEXEPACK /DEBUG 78 84 ASFLAGS = $(ASFLAGS) -Od+ 79 CDEFINES = $(CDEFINES )-DDEBUG80 CDEFINES16 = $(CDEFINES 16) -DDEBUG85 CDEFINES = $(CDEFINESB) -DDEBUG 86 CDEFINES16 = $(CDEFINESB16) -DDEBUG 81 87 ASDEFINES = $(ASDEFINES) -D:DEBUG 82 88 !endif 83 89 84 90 !ifdef NODEBUGINFO 85 LFLAGS = $(LFLAGS) /NODEB /EXEPACK:2 /PACKD /PACKC91 LFLAGS = $(LFLAGS) /NODEB /EXEPACK:2 86 92 CFLAGS16 = $(CFLAGS16) -Owis 87 CFLAGS = $(CFLAGS) -O+ -Oi- 88 CPPFLAGS = $(CPPFLAGS) -O+ -Oi- 89 !endif 93 CFLAGS = $(CFLAGS) -O+ -Os- -Oi- 94 CPPFLAGS = $(CPPFLAGS) -O+ -Os- -Oi- 95 !endif 96 97 CDEFINES_TST = $(CDEFINES) -DR3TST 98 CDEFINES16_TST = $(CDEFINES16) -DR3TST 99 90 100 91 101 ################################################################################ … … 101 111 -I$(PDWIN32_INCLUDE)\win 102 112 103 CINCLUDES16= -I$(WIN32KINCLUDE) \ 104 -I. \ 105 -I$(DDKPATH)\h \ 106 -I$(MSCPATH)\include \ 107 -I$(PDWIN32_INCLUDE) 113 CINCLUDES16= -I$(WIN32KINCLUDE) -I. -I$(DDKPATH)\h -I$(MSCPATH)\include -I$(PDWIN32_INCLUDE) 108 114 109 115 … … 117 123 .SUFFIXES: .obj .cpp .c .asm 118 124 119 {dev16}.c{$(WIN32KOBJ)}.obj: 125 {dev16}.c.obj: 126 @$(ECHO) compiling 16bit: $< ($@) 127 $(CC16) -c $(CFLAGS16) $(CDEFINES16) $(CINCLUDES16) -Fo$(WIN32KOBJ)\$(*B).obj -Fa$(WIN32KLIST)\$(*B).s $< 128 129 {dev16}.c.obj_init: 130 @$(ECHO) compiling 16bit: $< ($@) 131 $(CC16) -c $(CFLAGS16) $(CDEFINES16) $(CINCLUDES16) /NTCODE16_INIT /NDDATA16_INIT -Fo$(WIN32KOBJ)\$(*B).obj_init -Fa$(WIN32KLIST)\$(*B).s $< 132 $(CP) $@ $@.obj 133 134 {dev16}.c.obj_tst: 120 135 @$(ECHO) compiling 16bit: $< 121 @$(CC16) $(CFLAGS16) $(CDEFINES16) -Fa$(WIN32KLIST)\$(*B).s -Fo$@ $(CINCLUDES16) $< 122 {dev16}.c.obj: 136 $(CC16) -c $(CFLAGS16) $(CDEFINES16_TST) $(CINCLUDES16) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@B).obj_tst $< 137 $(CP) $@ $@.obj 138 {dev16}.c.obj_tst_init: 123 139 @$(ECHO) compiling 16bit: $< 124 @$(CC16) $(CFLAGS16) $(CDEFINES16) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES16) $< 140 $(CC16) -c $(CFLAGS16) $(CDEFINES16_TST) $(CINCLUDES16) /NDDATA16_INIT /NTCODE16_INIT -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@B).obj_tst_init $< 141 $(CP) $@ $@.obj 125 142 126 143 … … 139 156 @$(CC) -c $(CFLAGS) $(CDEFINES) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 140 157 158 {dev32}.c{$(WIN32KOBJ)}.obj_tst: 159 @$(ECHO) compiling 32bit: $< 160 @$(CC) -c $(CFLAGS) $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$@ $(CINCLUDES) $< 161 @$(CP) $@ $@.obj 162 {dev32}.c.obj_tst: 163 @$(ECHO) compiling 32bit: $< 164 @$(CC) -c $(CFLAGS) $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 165 @$(CP) $@ $@.obj 166 141 167 {dev32}.cpp{$(WIN32KOBJ)}.obj: 142 168 @$(ECHO) compiling 32bit: $< … … 147 173 148 174 175 {test}.asm{$(WIN32KOBJ)}.obj: 176 @$(ECHO) assembling: $< 177 @$(AS) $(ASFLAGS) $(ADEFINES) $(AINCLUDES) $< -Fo:$@ -Fl:$(WIN32KLIST)\$(*B).lst 178 {test}.asm.obj: 179 @$(ECHO) assembling: $< 180 @$(AS) $(ASFLAGS) $(ADEFINES) $(AINCLUDES) $< -Fo:$(WIN32KOBJ)\$(@F) -Fl:$(WIN32KLIST)\$(*B).lst 181 182 {test}.c{$(WIN32KOBJ)}.obj: 183 @$(ECHO) compiling 32bit: $< 184 @$(CC) -c $(CFLAGS) -O- -Ge+ $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$@ $(CINCLUDES) $< 185 {test}.c.obj: 186 @$(ECHO) compiling 32bit: $< 187 @$(CC) -c $(CFLAGS) -O- -Ge+ $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 188 189 {test}.cpp{$(WIN32KOBJ)}.obj: 190 @$(ECHO) compiling 32bit: $< 191 @$(CC) -c $(CPPFLAGS) -O- -Ge+ $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$@ $(CINCLUDES) $< 192 {test}.cpp.obj: 193 @$(ECHO) compiling 32bit: $< 194 @$(CC) -c $(CPPFLAGS) -O- -Ge+ $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 195 196 149 197 {k32}.asm{$(WIN32KOBJ)}.obj: 150 198 @$(ECHO) assembling: $< … … 204 252 @$(ECHO) compiling 32bit: $< 205 253 @$(CC) -c $(CFLAGS) $(CDEFINES) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 254 255 {misc}.c{$(WIN32KOBJ)}.obj_tst: 256 @$(ECHO) compiling 32bit: $< 257 $(CC) -c $(CFLAGS) $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$@ $(CINCLUDES) $< 258 @$(CP) $@ $@.obj 259 {misc}.c.obj_tst: 260 @$(ECHO) compiling 32bit: $< 261 $(CC) -c $(CFLAGS) $(CDEFINES_TST) -Fa$(WIN32KLIST)\$(*B).s -Fo$(WIN32KOBJ)\$(@F) $(CINCLUDES) $< 262 @$(CP) $@ $@.obj 206 263 207 264 {misc}.cpp{$(WIN32KOBJ)}.obj: … … 251 308 all: pe2lx.exe 252 309 !else 253 all: $(WIN32KBIN)\$(NAME).sys pe2lx.exe 310 all: $(WIN32KBIN)\$(NAME).sys pe2lx.exe kRx.exe lib Win32kCC.exe 254 311 !endif 255 312 … … 258 315 # OBJECTS and LIBRARIES - Don't mess with the order or objects and libraries! 259 316 ################################################################################ 260 OBJS = $(WIN32KOBJ)\devfirst.obj \ 261 $(WIN32KOBJ)\d16strat.obj \ 262 $(WIN32KOBJ)\d32hlp.obj \ 263 $(WIN32KOBJ)\d32globals.obj \ 264 $(WIN32KOBJ)\d16globl.obj \ 265 $(WIN32KOBJ)\asmutils.obj \ 266 $(WIN32KOBJ)\calltab.obj \ 267 $(WIN32KOBJ)\malloc.obj \ 268 $(WIN32KOBJ)\smalloc_avl.obj \ 269 $(WIN32KOBJ)\avl.obj \ 270 $(WIN32KOBJ)\rmalloc_avl.obj \ 271 $(WIN32KOBJ)\new.obj \ 272 $(WIN32KOBJ)\stricmp.obj \ 273 $(WIN32KOBJ)\yield.obj \ 274 $(WIN32KOBJ)\vsprintf.obj \ 275 $(WIN32KOBJ)\vprintf.obj \ 276 $(WIN32KOBJ)\ldr.obj \ 277 $(WIN32KOBJ)\myldrClose.obj \ 278 $(WIN32KOBJ)\myldrOpen.obj \ 279 $(WIN32KOBJ)\myldrRead.obj \ 280 $(WIN32KOBJ)\myLDRQAppType.obj \ 281 $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \ 282 $(WIN32KOBJ)\pe2lx.obj \ 283 $(WIN32KOBJ)\ModuleBase.obj \ 284 $(WIN32KOBJ)\d32ElfIOCtl.obj \ 285 $(WIN32KOBJ)\d32Win32kIOCtl.obj \ 286 $(WIN32KOBJ)\k32AllocMemEx.obj \ 287 $(WIN32KOBJ)\buffer.obj \ 288 $(WIN32KOBJ)\mytkExecPgm.obj 289 290 291 OBJSINIT = \ 292 $(WIN32KOBJ)\d16init.obj \ 293 $(WIN32KOBJ)\d32init.obj \ 294 $(WIN32KOBJ)\ProbKrnl.obj \ 295 $(WIN32KOBJ)\SymDB.obj \ 296 $(WIN32KOBJ)\vprntf16.obj 297 298 LIBS = \ 299 !if "$(CCENV)" == "VAC36" 300 $(VACPATH)\lib\cpprni36.lib \ 301 !else 302 $(VACPATH)\lib\cppon30.lib \ 303 !endif 304 $(DDKPATH)\lib\os2286.lib 305 306 LIBSINIT = \ 307 $(WIN32KOBJ)\devhelp.lib \ 308 $(WIN32KOBJ)\clib.lib 317 OBJS =\ 318 $(WIN32KOBJ)\devfirst.obj \ 319 $(WIN32KOBJ)\d16strat.obj \ 320 $(WIN32KOBJ)\d32hlp.obj \ 321 $(WIN32KOBJ)\d32globals.obj \ 322 $(WIN32KOBJ)\d16globl.obj \ 323 $(WIN32KOBJ)\asmutils.obj \ 324 $(WIN32KOBJ)\calltab.obj \ 325 $(WIN32KOBJ)\malloc.obj \ 326 $(WIN32KOBJ)\smalloc_avl.obj \ 327 $(WIN32KOBJ)\avl.obj \ 328 $(WIN32KOBJ)\rmalloc_avl.obj \ 329 $(WIN32KOBJ)\new.obj \ 330 $(WIN32KOBJ)\env.obj \ 331 $(WIN32KOBJ)\stricmp.obj \ 332 $(WIN32KOBJ)\yield.obj \ 333 $(WIN32KOBJ)\vsprintf.obj \ 334 $(WIN32KOBJ)\vprintf.obj \ 335 $(WIN32KOBJ)\ldr.obj \ 336 $(WIN32KOBJ)\myldrClose.obj \ 337 $(WIN32KOBJ)\myldrOpen.obj \ 338 $(WIN32KOBJ)\myldrRead.obj \ 339 $(WIN32KOBJ)\myLDRQAppType.obj \ 340 $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \ 341 $(WIN32KOBJ)\myldrOpenPath.obj \ 342 $(WIN32KOBJ)\OS2KTCB.obj \ 343 $(WIN32KOBJ)\OS2KPTDA.obj \ 344 $(WIN32KOBJ)\pe2lx.obj \ 345 $(WIN32KOBJ)\ModuleBase.obj \ 346 $(WIN32KOBJ)\d32ElfIOCtl.obj \ 347 $(WIN32KOBJ)\d32Win32kIOCtl.obj \ 348 $(WIN32KOBJ)\k32AllocMemEx.obj \ 349 $(WIN32KOBJ)\k32QueryOTEs.obj \ 350 $(WIN32KOBJ)\k32QueryOptionsStatus.obj \ 351 $(WIN32KOBJ)\k32SetOptions.obj \ 352 $(WIN32KOBJ)\mytkExecPgm.obj \ 353 $(WIN32KOBJ)\mytkStartProcess.obj \ 354 $(WIN32KOBJ)\vprntf16.obj \ 355 $(WIN32KOBJ)\d32init.obj \ 356 $(WIN32KOBJ)\SymDB.obj \ 357 $(WIN32KOBJ)\d16init.obj_init \ 358 $(WIN32KOBJ)\ProbKrnl.obj_init 359 360 LASTOBJ =\ 361 $(WIN32KOBJ)\devlast.obj 362 363 LIBS =\ 364 $(VACLIB) \ 365 $(DDKPATH)\lib\os2386.lib \ 366 $(WIN32KOBJ)\devhelp.lib \ 367 $(WIN32KOBJ)\clib.lib 368 369 # 370 # Win32ktst.exe object configuration 371 # 372 TSTOBJS =\ 373 $(WIN32KOBJ)\devfirst.obj \ 374 $(WIN32KOBJ)\$(NAME)tst.obj \ 375 $(WIN32KOBJ)\dh.obj \ 376 $(WIN32KOBJ)\dos.obj \ 377 $(WIN32KOBJ)\dosa.obj \ 378 $(WIN32KOBJ)\init.obj \ 379 $(WIN32KOBJ)\fake.obj \ 380 $(WIN32KOBJ)\fakea.obj \ 381 $(WIN32KOBJ)\d16strat.obj \ 382 $(WIN32KOBJ)\d32hlp.obj \ 383 $(WIN32KOBJ)\d32globals.obj \ 384 $(WIN32KOBJ)\d16globl.obj \ 385 $(WIN32KOBJ)\asmutils.obj \ 386 $(WIN32KOBJ)\calltab.obj \ 387 $(WIN32KOBJ)\malloc.obj_tst \ 388 $(WIN32KOBJ)\smalloc_avl.obj \ 389 $(WIN32KOBJ)\avl.obj \ 390 $(WIN32KOBJ)\rmalloc_avl.obj \ 391 $(WIN32KOBJ)\new.obj \ 392 $(WIN32KOBJ)\env.obj \ 393 $(WIN32KOBJ)\stricmp.obj \ 394 $(WIN32KOBJ)\yield.obj \ 395 $(WIN32KOBJ)\vsprintf.obj \ 396 $(WIN32KOBJ)\vprintf.obj_tst \ 397 $(WIN32KOBJ)\ldr.obj \ 398 $(WIN32KOBJ)\myldrClose.obj \ 399 $(WIN32KOBJ)\myldrOpen.obj \ 400 $(WIN32KOBJ)\myldrRead.obj \ 401 $(WIN32KOBJ)\myLDRQAppType.obj \ 402 $(WIN32KOBJ)\myldrEnum32bitRelRecs.obj \ 403 $(WIN32KOBJ)\myldrOpenPath.obj \ 404 $(WIN32KOBJ)\OS2KTCB.obj \ 405 $(WIN32KOBJ)\OS2KPTDA.obj \ 406 $(WIN32KOBJ)\pe2lx.obj \ 407 $(WIN32KOBJ)\ModuleBase.obj \ 408 $(WIN32KOBJ)\d32ElfIOCtl.obj \ 409 $(WIN32KOBJ)\d32Win32kIOCtl.obj \ 410 $(WIN32KOBJ)\k32AllocMemEx.obj \ 411 $(WIN32KOBJ)\k32QueryOTEs.obj \ 412 $(WIN32KOBJ)\k32QueryOptionsStatus.obj \ 413 $(WIN32KOBJ)\k32SetOptions.obj \ 414 $(WIN32KOBJ)\mytkExecPgm.obj \ 415 $(WIN32KOBJ)\mytkStartProcess.obj \ 416 $(WIN32KOBJ)\vprntf16.obj_tst \ 417 $(WIN32KOBJ)\d32init.obj_tst \ 418 $(WIN32KOBJ)\SymDB.obj \ 419 $(WIN32KOBJ)\d16init.obj_tst_init \ 420 $(WIN32KOBJ)\ProbKrnl.obj_tst_init 421 422 TSTLASTOBJ = $(LASTOBJ) 423 424 TSTLIBS = $(LIBS) 425 426 309 427 310 428 … … 313 431 ################################################################################ 314 432 Probkrnl.exe: $(WIN32KBIN)\ProbKrnl.exe 433 $(CP) $** $@ 315 434 $(WIN32KBIN)\ProbKrnl.exe: dev16\ProbKrnl.c dev16\symdb.c dev16\vprntf16.c \ 316 435 $(WIN32KINCLUDE)\sym.h \ 317 436 $(WIN32KINCLUDE)\probKrnl.h 318 $(CC16) -c -W 4-Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \437 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \ 319 438 -DDEBUG -DDEBUGR3 -Fa$(WIN32KLIST)\$(*B)_p.s \ 320 439 -Fo$(WIN32KOBJ)\probkrnl_p.obj $(CINCLUDES16) dev16\probkrnl.c 321 $(CC16) -c -W 4-Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \440 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \ 322 441 -DDEBUG -DDEBUGR3 -Fa$(WIN32KLIST)\$(*B)_p.s \ 323 442 -Fo$(WIN32KOBJ)\symdb_p.obj $(CINCLUDES16) dev16\symdb.c 324 $(CC16) -c -W 4-Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \443 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fa -Zi -Od -Lp \ 325 444 -DDEBUG -DDEBUGR3 -Fa$(WIN32KLIST)\$(*B)_p.s \ 326 445 -Fo$(WIN32KOBJ)\vprntf16_p.obj $(CINCLUDES16) dev16\vprntf16.c … … 329 448 $@, $(WIN32KBIN)\probkrnl.map, \ 330 449 $(TOOLKIT)\lib\os2286.lib + $(MSCPATH)\lib\clibcep.lib; 331 $(CP) $@332 450 333 451 extract.exe: $(WIN32KBIN)\extract.exe 452 $(CP) $** $@ 334 453 $(WIN32KBIN)\extract.exe: dev16\ProbKrnl.c dev16\vprntf16.c \ 335 454 $(WIN32KINCLUDE)\sym.h \ 336 455 $(WIN32KINCLUDE)\probKrnl.h 337 $(CC16) -c -W 4-Asfw -G2s -Zp -Zl -nologo -Fo$@ -Fa -Zi -Od -Lp \456 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fo$@ -Fa -Zi -Od -Lp \ 338 457 -DDEBUG -DEXTRACT -Fa$(WIN32KLIST)\$(*B)_e.s \ 339 458 -Fo$(WIN32KOBJ)\probkrnl_e.obj $(CINCLUDES16) dev16\probkrnl.c 340 $(CC16) -c -W 4-Asfw -G2s -Zp -Zl -nologo -Fo$@ -Fa -Zi -Od -Lp \459 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fo$@ -Fa -Zi -Od -Lp \ 341 460 -DDEBUG -DEXTRACT -Fa$(WIN32KLIST)\$(*B)_e.s \ 342 461 -Fo$(WIN32KOBJ)\vprntf16_e.obj $(CINCLUDES16) dev16\vprntf16.c 462 $(CC16) -c -W3 -Asfw -G2s -Zp -Zl -nologo -Fo$@ -Fa -Zi -Od -Lp \ 463 -DDEBUG -DEXTRACT -Fa$(WIN32KLIST)\$(*B)_e.s \ 464 -Fo$(WIN32KOBJ)\d16globl_e.obj $(CINCLUDES16) dev16\d16globl.c 343 465 link /NOD /MAP:FULL /CO /pmtype:vio \ 344 $(WIN32KOBJ)\probkrnl_e.obj + $(WIN32KOBJ)\vprntf16_e.obj , \466 $(WIN32KOBJ)\probkrnl_e.obj + $(WIN32KOBJ)\vprntf16_e.obj + $(WIN32KOBJ)\d16globl_e.obj, \ 345 467 $@, $(WIN32KBIN)\$(*B).map, \ 346 468 $(TOOLKIT)\lib\os2286.lib + $(MSCPATH)\lib\clibcep.lib; 347 $(CP) $@348 349 d32init.exe: $(WIN32KBIN)\d32init.exe350 $(WIN32KBIN)\d32init.exe: dev32\d32init.c351 icc -Ti+ -Ss /Gr+ $(CINCLUDES) -DRING3 -DDEBUGR3 -DDEBUG \352 -Fo$(WIN32KOBJ)\$(*B).r3obj -Fe$@ -Fm$(WIN32KBIN)\$(*B).map \353 dev32\$(*B).c354 $(CP) $@355 469 356 470 … … 360 474 ################################################################################ 361 475 $(NAME).sys: $(WIN32KBIN)\$(NAME).sys 362 $(WIN32KBIN)\$(NAME).sys: $(OBJS) $(LIBS) $(NAME).def \ 363 $(WIN32KOBJ)\last.lib \ 364 $(WIN32KOBJ)\init.lib \ 365 $(LIBSINIT) 476 $(WIN32KBIN)\$(NAME).sys: $(OBJS) $(LIBS) $(NAME).def $(LASTOBJ) $(LIBSINIT) makefile 366 477 -@$(ECHO) linking: $@ 367 $(LD) $(LFLAGS) @<<ole478 -4 $(LD) $(LFLAGS) @<<$(WIN32KOBJ)\$(@B).lnk 368 479 /OUT:$@ 369 480 /MAP:$(WIN32KBIN)\$(@B).map 370 $(OBJS) 371 $(LIBS) 372 $(WIN32KOBJ)\last.lib 373 $(WIN32KOBJ)\init.lib 374 /IG $(LIBSINIT) 481 $(OBJS: =^ 482 ) 483 /IG 484 $(LIBS: =^ 485 ) 486 $(LASTOBJ) 375 487 $(NAME).def 376 << keep488 <<KEEP 377 489 cd $(WIN32KBIN) 378 490 @mapsym $(*B).map > nul … … 384 496 385 497 ################################################################################ 498 # Win32ktst.exe rule. 499 ################################################################################ 500 $(NAME)tst.exe: $(WIN32KBIN)\$(NAME)tst.exe 501 $(CP) $(WIN32KBIN)\$@ $@ 502 503 $(WIN32KBIN)\$(NAME)tst.exe: $(NAME)tst.def $(TSTOBJS) $(TSTLIBS) $(LASTOBJS) makefile 504 -@$(ECHO) linking: $@ 505 -4 $(LD) $(LFLAGS) @<<$(WIN32KOBJ)\$(@B).lnk 506 /DEBUG 507 /OUT:$@ 508 /MAP:$(WIN32KBIN)\$(@B).map 509 $(TSTOBJS: =^ 510 ) 511 /IG 512 $(TSTLIBS: =^ 513 ) 514 $(LASTOBJ) 515 $(NAME)tst.def 516 <<KEEP 517 518 519 ################################################################################ 386 520 # Pe2Lx.exe rule 387 521 ################################################################################ … … 400 534 401 535 ################################################################################ 536 # Win32k Control Center Rule. 537 ################################################################################ 538 Win32kCC.exe: 539 cd utils 540 $(MAKE_CMD) 541 cd .. 542 543 ################################################################################ 544 # kRx.EXE - Pure Rexx interpreter 545 ################################################################################ 546 kRx.exe: 547 cd rexx 548 $(MAKE_CMD) 549 cd .. 550 551 ################################################################################ 402 552 # Libraries - segments are renamed for the 16-bit libraries. 403 553 ################################################################################ 404 $(WIN32KOBJ)\devhelp.lib: $(DDKPATH)\lib\dhcalls.lib $(WIN32KBIN)\libconv.exe 405 $(WIN32KBIN)\libconv $(DDKPATH)\lib\dhcalls.lib $@ 406 $(ILIB) /nologo /nobackup /convformat $@; 407 408 $(WIN32KOBJ)\clib.lib: $(MSCPATH)\lib\clibcep.lib $(WIN32KBIN)\libconv.exe 409 $(WIN32KBIN)\libconv $(MSCPATH)\lib\clibcep.lib $@ > nul 410 $(ILIB) /nologo /nobackup /convformat $@; 554 DHLPOBJS = +$(WIN32KOBJ)\dhcall5b.obj +$(WIN32KOBJ)\dhcal11a.obj \ 555 +$(WIN32KOBJ)\dhcal11g.obj +$(WIN32KOBJ)\dhret.obj 556 557 $(WIN32KOBJ)\devhelp.lib: $(DDKPATH)\lib\dhcalls.lib $(WIN32KBIN)\libconv.exe $(DHLPOBJS:+=) 558 #!if "$(CCENV)" == "VAC36" 559 @$(RM) $@ 560 @cd $(WIN32KOBJ) 561 $(DDKPATH)\tools\lib /nologo $@ $(DHLPOBJS); 562 @cd $(MAKEDIR) 563 #!else 564 # $(WIN32KBIN)\libconv $(DDKPATH)\lib\dhcalls.lib $@ 565 #!endif 566 567 $(WIN32KOBJ)\devhelp_.lib: $(DDKPATH)\lib\dhcalls.lib 568 $(WIN32KBIN)\libconv $** $@ 569 570 $(DHLPOBJS:+=): $(WIN32KOBJ)\devhelp_.lib 571 @cd $(WIN32KOBJ) 572 $(DDKPATH)\tools\lib /nologo $** *$@; 573 @cd $(MAKEDIR) 574 575 576 CLIBOBJS = +$(WIN32KOBJ)\inp.obj +$(WIN32KOBJ)\outp.obj \ 577 +$(WIN32KOBJ)\anfalmul.obj +$(WIN32KOBJ)\anfaldiv.obj \ 578 +$(WIN32KOBJ)\anfalrem.obj +$(WIN32KOBJ)\anfauldi.obj \ 579 +$(WIN32KOBJ)\anuldiv.obj +$(WIN32KOBJ)\fmemcpy.obj \ 580 +$(WIN32KOBJ)\anulrem.obj +$(WIN32KOBJ)\anlmul.obj \ 581 +$(WIN32KOBJ)\__AHINCR.obj 582 583 $(WIN32KOBJ)\clib.lib: $(MSCPATH)\lib\clibcep.lib $(WIN32KBIN)\libconv.exe $(CLIBOBJS:+=) 584 @$(RM) $@ 585 @cd $(WIN32KOBJ) 586 $(DDKPATH)\tools\lib /nologo $@ $(CLIBOBJS); 587 @cd $(MAKEDIR) 588 589 $(WIN32KOBJ)\clib_.lib: $(MSCPATH)\lib\clibcep.lib 590 $(WIN32KBIN)\libconv $** $@ > nul 591 592 $(CLIBOBJS:+=): $(WIN32KOBJ)\clib_.lib 593 @cd $(WIN32KOBJ) 594 $(ILIB) $** *$@; 595 @cd $(MAKEDIR) 596 411 597 412 598 $(WIN32KOBJ)\last.lib: $(WIN32KOBJ)\devlast.obj 413 599 -@$(RM) $@ > nul 2> nul 414 $(ILIB) /nologo /nobackup $@ $**; 415 416 $(WIN32KOBJ)\init.lib: $(OBJSINIT) 417 -@$(RM) $@ > nul 2> nul 418 $(ILIB) /nologo /nobackup $@ $**; 600 $(ILIB) $@ $**; 419 601 420 602 $(WIN32KBIN)\libconv.exe: libconv.c 421 icc -Q+ - Fe$@ -Fo$(WIN32KOBJ)\$(*B).obj libconv.c603 icc -Q+ -Ti+ -Fe$@ -Fo$(WIN32KOBJ)\$(*B).obj libconv.c 422 604 423 605 … … 426 608 ################################################################################ 427 609 lxdoc: 428 exp cpp2sds -o DocsA\ -i include\lx.h pe2lx\lx*.cpp 429 cd Docs 430 exp sds2doc -ai *.sds 610 cpp2sds -o DocsA\ -i include\modulebase.h include\pe2lx.h ldr\modulebase.cpp \ 611 pe2lx\pe2lx.cpp 612 cd DocsA 613 exp sds2doc -ai *.sds 431 614 432 615 fulldoc: 433 exp cpp2sds -o DocsA\ -i include\*.h *.cpp ldr\*.cpp misc\*.cpp pe2lx\*.cpp434 cd Docs435 exp sds2doc -ai *.sds616 exp cpp2sds -o DocsA\ -i include\*.h *.cpp ldr\*.cpp misc\*.cpp pe2lx\*.cpp 617 cd DocsA 618 exp sds2doc -ai *.sds 436 619 437 620 ################################################################################# … … 454 637 !endif 455 638 !if "$(WIN32KOBJ)" != "" 456 $(RM) $(WIN32KOBJ)\*obj $(WIN32KOBJ)\*lib $(WIN32KOBJ)\*pch 639 $(RM) $(WIN32KOBJ)\*obj $(WIN32KOBJ)\*lib $(WIN32KOBJ)\*pch \ 640 $(WIN32KOBJ)\*.obj_tst 457 641 !endif 458 642 !if "$(WIN32KLIST)" != "" … … 472 656 dep: 473 657 $(PDWIN32_TOOLS)\fastdep -o$$(WIN32KOBJ) $(CINCLUDES) misc\*.c* ldr\*.c* \ 474 dev32\*.c* pe2lx\*.c* k32\*.c* lib\*.c elf2lx\*.c* \658 dev32\*.c* pe2lx\*.c* k32\*.c* lib\*.c elf2lx\*.c* test\*.c* \ 475 659 $(WIN32KINCLUDE)\*.h 660 $(PDWIN32_TOOLS)\fastdep -a+ -objobj_tst -o$$(WIN32KOBJ) $(CINCLUDES) misc\*.c* ldr\*.c* \ 661 dev32\*.c* pe2lx\*.c* k32\*.c* lib\*.c elf2lx\*.c* test\*.c* 476 662 $(PDWIN32_TOOLS)\fastdep -a+ -o$$(WIN32KOBJ) $(CINCLUDES16) dev16\*.c* 477 663 $(PDWIN32_TOOLS)\fastdep -a+ -o$$(WIN32KOBJ) -I$(WIN32KINCLUDE) \ 478 -I$(DDKPATH)\inc dev32\*.asm ldr\*.asm misc\*.asm include\*.inc664 -I$(DDKPATH)\inc dev32\*.asm ldr\*.asm misc\*.asm test\*.asm include\*.inc 479 665 cd pe2lx 480 666 $(MAKE_CMD) dep … … 494 680 !endif 495 681 496 497 ################################################################################498 # Create output directories.499 ################################################################################500 !if [mkdir bin > nul 2>&1]501 !endif502 !if [mkdir $(WIN32KBIN) > nul 2>&1]503 !endif504 !if [mkdir list > nul 2>&1]505 !endif506 !if [mkdir $(WIN32KLIST) > nul 2>&1]507 !endif508 !if [mkdir object > nul 2>&1]509 !endif510 !if [mkdir $(WIN32KOBJ) > nul 2>&1]511 !endif512 513 -
trunk/src/win32k/configure.cmd
r3041 r4164 1 /* $Id: configure.cmd,v 1.1 0 2000-03-08 09:23:04bird Exp $1 /* $Id: configure.cmd,v 1.11 2000-09-02 21:07:53 bird Exp $ 2 2 * 3 3 * Configuration script. … … 105 105 call stream sIncFile, 'c', 'close'; 106 106 107 /* 108 * Create output directories. 109 */ 110 'mkdir Bin > nul 2> nul' 111 'mkdir Bin\Release > nul 2> nul' 112 'mkdir Bin\Debug > nul 2> nul' 113 114 'mkdir List > nul 2> nul' 115 'mkdir List\Release > nul 2> nul' 116 'mkdir List\Debug > nul 2> nul' 117 118 'mkdir Object > nul 2> nul' 119 'mkdir Object\Debug > nul 2> nul' 120 'mkdir Object\Release > nul 2> nul' 121 122 /* 123 * Display output. 124 */ 107 125 if (fInteractive = 1) then 108 126 do -
trunk/src/win32k/dev16/SymDB.c
r3321 r4164 1 /* $Id: SymDB.c,v 1. 3 2000-04-05 18:40:37bird Exp $1 /* $Id: SymDB.c,v 1.4 2000-09-02 21:07:54 bird Exp $ 2 2 * 3 3 * Autogenerated kernel symbol database. … … 12 12 #define INCL_NOBASEAPI 13 13 #include <os2.h> 14 #include "devSegDf.h" 14 15 #include "probkrnl.h" 15 KRNLDBENTRY aKrnlSymDB[] = 16 #include "options.h" 17 18 KRNLDBENTRY DATA16_INIT aKrnlSymDB[] = 16 19 { 20 #ifdef ALLKERNELS 21 { /* 14039AS.SYM */ 22 14039, KF_SMP | KF_ALLSTRICT, 17, 23 { 24 {16, 0x0000a0b8}, /* _ldrRead */ 25 {16, 0x00075c40}, /* _ldrOpen */ 26 {16, 0x00077130}, /* _ldrClose */ 27 {16, 0x00077215}, /* _LDRQAppType */ 28 {16, 0x00072c10}, /* _ldrEnum32bitRelRecs */ 29 {16, 0x00006188}, /* _IOSftOpen */ 30 {16, 0x00006a90}, /* _IOSftClose */ 31 {16, 0x00006b8c}, /* _IOSftTransPath */ 32 {16, 0x0000666c}, /* _IOSftReadAt */ 33 {16, 0x00006673}, /* _IOSftWriteAt */ 34 {16, 0x00006cc4}, /* _SftFileSize */ 35 {16, 0x00070a40}, /* _VMAllocMem */ 36 {16, 0x0005e4b3}, /* _VMGetOwner */ 37 {16, 0x000824c0}, /* g_tkExecPgm */ 38 {16, 0x0007ad58}, /* _tkStartProcess */ 39 {13, 0x0000aca8}, /* f_FuStrLenZ */ 40 {13, 0x0000ac28}, /* f_FuStrLen */ 41 {13, 0x0000ae74}, /* f_FuBuff */ 42 {16, 0x00058490}, /* _VMObjHandleInfo */ 43 {16, 0x00083510}, /* _ldrASMpMTEFromHandle */ 44 {16, 0x00075fc0}, /* _ldrOpenPath */ 45 {16, 0x000701d0}, /* _LDRClearSem */ 46 {16, 0x0007b7f3}, /* _ldrFindModule */ 47 {16, 0x0000e470}, /* _KSEMRequestMutex */ 48 {16, 0x0000e584}, /* _KSEMReleaseMutex */ 49 {16, 0x0000e5e4}, /* _KSEMQueryMutex */ 50 {16, 0x0000e968}, /* _KSEMInit */ 51 {11, 0x0002c940}, /* _LdrSem */ 52 {11, 0x0002c9d4}, /* _LDRLibPath */ 53 {16, 0x00067924}, /* _TKSuBuff */ 54 {16, 0x00041620}, /* _TKFuBuff */ 55 {16, 0x00041371}, /* _TKFuBufLen */ 56 {16, 0x000701a0}, /* _ldrValidateMteHandle */ 57 {0 , 0x00000aa4}, /* _pTCBCur */ 58 {0 , 0x00000aa0}, /* _pPTDACur */ 59 {5 , 0x0000f884}, /* ptda_start */ 60 {5 , 0x0000f99e}, /* ptda_environ */ 61 {5 , 0x0000fea8}, /* ptda_ptdasem */ 62 {5 , 0x0000ffa2}, /* ptda_module */ 63 {5 , 0x0000f9a0}, /* ptda_pBeginLIBPATH */ 64 {11, 0x0002e80c}, /* _ldrpFileNameBuf */ 65 {16, 0x0006d6c0}, /* SecPathFromSFN */ 66 } 67 }, 68 #endif 69 #ifdef ALLKERNELS 70 { /* 14039AU.SYM */ 71 14039, KF_UNI | KF_ALLSTRICT, 16, 72 { 73 {15, 0x000087a8}, /* _ldrRead */ 74 {15, 0x0006a810}, /* _ldrOpen */ 75 {15, 0x0006bc40}, /* _ldrClose */ 76 {15, 0x0006bd25}, /* _LDRQAppType */ 77 {15, 0x00067ae0}, /* _ldrEnum32bitRelRecs */ 78 {15, 0x00005158}, /* _IOSftOpen */ 79 {15, 0x000059c4}, /* _IOSftClose */ 80 {15, 0x00005aa0}, /* _IOSftTransPath */ 81 {15, 0x000055f8}, /* _IOSftReadAt */ 82 {15, 0x000055ff}, /* _IOSftWriteAt */ 83 {15, 0x00005bc8}, /* _SftFileSize */ 84 {15, 0x00065af0}, /* _VMAllocMem */ 85 {15, 0x00052ef3}, /* _VMGetOwner */ 86 {15, 0x00076140}, /* g_tkExecPgm */ 87 {15, 0x0006f250}, /* _tkStartProcess */ 88 {11, 0x0000f838}, /* f_FuStrLenZ */ 89 {11, 0x0000f7ec}, /* f_FuStrLen */ 90 {11, 0x0000f954}, /* f_FuBuff */ 91 {15, 0x0004d127}, /* _VMObjHandleInfo */ 92 {15, 0x00076fe0}, /* _ldrASMpMTEFromHandle */ 93 {15, 0x0006ab90}, /* _ldrOpenPath */ 94 {15, 0x000652f0}, /* _LDRClearSem */ 95 {15, 0x0006fc83}, /* _ldrFindModule */ 96 {15, 0x0000c20c}, /* _KSEMRequestMutex */ 97 {15, 0x0000c320}, /* _KSEMReleaseMutex */ 98 {15, 0x0000c380}, /* _KSEMQueryMutex */ 99 {15, 0x0000c704}, /* _KSEMInit */ 100 {10, 0x0002c63c}, /* _LdrSem */ 101 {10, 0x0002c6d0}, /* _LDRLibPath */ 102 {15, 0x0005d6d4}, /* _TKSuBuff */ 103 {15, 0x00037c71}, /* _TKFuBuff */ 104 {15, 0x00037a10}, /* _TKFuBufLen */ 105 {15, 0x000652c0}, /* _ldrValidateMteHandle */ 106 {10, 0x0002bf90}, /* _pTCBCur */ 107 {10, 0x0002bf8c}, /* _pPTDACur */ 108 {4 , 0x0000f89c}, /* ptda_start */ 109 {4 , 0x0000f9b6}, /* ptda_environ */ 110 {4 , 0x0000fec0}, /* ptda_ptdasem */ 111 {4 , 0x0000ffaa}, /* ptda_module */ 112 {4 , 0x0000f9b8}, /* ptda_pBeginLIBPATH */ 113 {10, 0x0002e62c}, /* _ldrpFileNameBuf */ 114 {15, 0x00062c40}, /* SecPathFromSFN */ 115 } 116 }, 117 #endif 118 #ifdef ALLKERNELS 119 { /* 14039HS.SYM */ 120 14039, KF_SMP | KF_HALFSTRICT, 17, 121 { 122 {16, 0x00008fd8}, /* _ldrRead */ 123 {16, 0x00063a80}, /* _ldrOpen */ 124 {16, 0x00064e20}, /* _ldrClose */ 125 {16, 0x00064f05}, /* _LDRQAppType */ 126 {16, 0x00061030}, /* _ldrEnum32bitRelRecs */ 127 {16, 0x00005308}, /* _IOSftOpen */ 128 {16, 0x00005c01}, /* _IOSftClose */ 129 {16, 0x00005cfc}, /* _IOSftTransPath */ 130 {16, 0x000057e0}, /* _IOSftReadAt */ 131 {16, 0x000057e7}, /* _IOSftWriteAt */ 132 {16, 0x00005e26}, /* _SftFileSize */ 133 {16, 0x0005f410}, /* _VMAllocMem */ 134 {16, 0x0004f30b}, /* _VMGetOwner */ 135 {16, 0x0006efde}, /* g_tkExecPgm */ 136 {16, 0x00068511}, /* _tkStartProcess */ 137 {13, 0x00009ef0}, /* f_FuStrLenZ */ 138 {13, 0x00009e70}, /* f_FuStrLen */ 139 {13, 0x0000a099}, /* f_FuBuff */ 140 {16, 0x0004b024}, /* _VMObjHandleInfo */ 141 {16, 0x0006fec0}, /* _ldrASMpMTEFromHandle */ 142 {16, 0x00063dc0}, /* _ldrOpenPath */ 143 {16, 0x0005ee60}, /* _LDRClearSem */ 144 {16, 0x00068f53}, /* _ldrFindModule */ 145 {16, 0x0000cf60}, /* _KSEMRequestMutex */ 146 {16, 0x0000d037}, /* _KSEMReleaseMutex */ 147 {16, 0x0000d062}, /* _KSEMQueryMutex */ 148 {16, 0x0000d302}, /* _KSEMInit */ 149 {11, 0x0001d838}, /* _LdrSem */ 150 {11, 0x0001d8c0}, /* _LDRLibPath */ 151 {16, 0x00057427}, /* _TKSuBuff */ 152 {16, 0x00038a10}, /* _TKFuBuff */ 153 {16, 0x000387a1}, /* _TKFuBufLen */ 154 {16, 0x0005ee30}, /* _ldrValidateMteHandle */ 155 {0 , 0x00000aa4}, /* _pTCBCur */ 156 {0 , 0x00000aa0}, /* _pPTDACur */ 157 {5 , 0x0000f890}, /* ptda_start */ 158 {5 , 0x0000f9aa}, /* ptda_environ */ 159 {5 , 0x0000feb4}, /* ptda_ptdasem */ 160 {5 , 0x0000ffa2}, /* ptda_module */ 161 {5 , 0x0000f9ac}, /* ptda_pBeginLIBPATH */ 162 {11, 0x0001ed44}, /* _ldrpFileNameBuf */ 163 {16, 0x0005c980}, /* SecPathFromSFN */ 164 } 165 }, 166 #endif 167 #ifdef ALLKERNELS 168 { /* 14039HU.SYM */ 169 14039, KF_UNI | KF_HALFSTRICT, 16, 170 { 171 {15, 0x00007a54}, /* _ldrRead */ 172 {15, 0x00059380}, /* _ldrOpen */ 173 {15, 0x0005a650}, /* _ldrClose */ 174 {15, 0x0005a735}, /* _LDRQAppType */ 175 {15, 0x00056c10}, /* _ldrEnum32bitRelRecs */ 176 {15, 0x00004618}, /* _IOSftOpen */ 177 {15, 0x00004e74}, /* _IOSftClose */ 178 {15, 0x00004f4d}, /* _IOSftTransPath */ 179 {15, 0x00004aac}, /* _IOSftReadAt */ 180 {15, 0x00004ab3}, /* _IOSftWriteAt */ 181 {15, 0x00005066}, /* _SftFileSize */ 182 {15, 0x000551d0}, /* _VMAllocMem */ 183 {15, 0x000448eb}, /* _VMGetOwner */ 184 {15, 0x000639be}, /* g_tkExecPgm */ 185 {15, 0x0005d76b}, /* _tkStartProcess */ 186 {11, 0x0000e640}, /* f_FuStrLenZ */ 187 {11, 0x0000e5f6}, /* f_FuStrLen */ 188 {11, 0x0000e738}, /* f_FuBuff */ 189 {15, 0x00040813}, /* _VMObjHandleInfo */ 190 {15, 0x00064710}, /* _ldrASMpMTEFromHandle */ 191 {15, 0x000596c0}, /* _ldrOpenPath */ 192 {15, 0x00054c80}, /* _LDRClearSem */ 193 {15, 0x0005e143}, /* _ldrFindModule */ 194 {15, 0x0000b178}, /* _KSEMRequestMutex */ 195 {15, 0x0000b24f}, /* _KSEMReleaseMutex */ 196 {15, 0x0000b27a}, /* _KSEMQueryMutex */ 197 {15, 0x0000b51a}, /* _KSEMInit */ 198 {10, 0x0001e2ac}, /* _LdrSem */ 199 {10, 0x0001e334}, /* _LDRLibPath */ 200 {15, 0x0004dee9}, /* _TKSuBuff */ 201 {15, 0x0002fa00}, /* _TKFuBuff */ 202 {15, 0x0002f7e0}, /* _TKFuBufLen */ 203 {15, 0x00054c50}, /* _ldrValidateMteHandle */ 204 {10, 0x0001dca4}, /* _pTCBCur */ 205 {10, 0x0001dca0}, /* _pPTDACur */ 206 {4 , 0x0000f8a4}, /* ptda_start */ 207 {4 , 0x0000f9be}, /* ptda_environ */ 208 {4 , 0x0000fec8}, /* ptda_ptdasem */ 209 {4 , 0x0000ffaa}, /* ptda_module */ 210 {4 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 211 {10, 0x0001f7c4}, /* _ldrpFileNameBuf */ 212 {15, 0x00052bb0}, /* SecPathFromSFN */ 213 } 214 }, 215 #endif 17 216 { /* 14039RS.SYM */ 18 14039, 'R', TYPE_SMP, 15,217 14039, KF_SMP, 15, 19 218 { 20 219 {14, 0x00008390}, /* _ldrRead */ … … 32 231 {14, 0x0004ce4b}, /* _VMGetOwner */ 33 232 {14, 0x0006ca7e}, /* g_tkExecPgm */ 233 {14, 0x00065fc1}, /* _tkStartProcess */ 34 234 {11, 0x00009e10}, /* f_FuStrLenZ */ 35 235 {11, 0x00009d90}, /* f_FuStrLen */ 36 236 {11, 0x00009fb9}, /* f_FuBuff */ 237 {14, 0x00048b64}, /* _VMObjHandleInfo */ 238 {14, 0x0006d960}, /* _ldrASMpMTEFromHandle */ 239 {14, 0x00061870}, /* _ldrOpenPath */ 240 {14, 0x0005c910}, /* _LDRClearSem */ 241 {14, 0x000669f3}, /* _ldrFindModule */ 242 {14, 0x0000c20c}, /* _KSEMRequestMutex */ 243 {14, 0x0000c29f}, /* _KSEMReleaseMutex */ 244 {14, 0x0000c2ca}, /* _KSEMQueryMutex */ 245 {14, 0x0000c4df}, /* _KSEMInit */ 246 {9 , 0x0000d298}, /* _LdrSem */ 247 {9 , 0x0000d320}, /* _LDRLibPath */ 248 {14, 0x00054ed3}, /* _TKSuBuff */ 249 {14, 0x00036680}, /* _TKFuBuff */ 250 {14, 0x00036411}, /* _TKFuBufLen */ 251 {14, 0x0005c8e0}, /* _ldrValidateMteHandle */ 252 {0 , 0x00000aa4}, /* _pTCBCur */ 253 {0 , 0x00000aa0}, /* _pPTDACur */ 254 {3 , 0x0000f890}, /* ptda_start */ 255 {3 , 0x0000f9aa}, /* ptda_environ */ 256 {3 , 0x0000feb4}, /* ptda_ptdasem */ 257 {3 , 0x0000ffa2}, /* ptda_module */ 258 {3 , 0x0000f9ac}, /* ptda_pBeginLIBPATH */ 259 {9 , 0x0000e794}, /* _ldrpFileNameBuf */ 260 {14, 0x0005a430}, /* SecPathFromSFN */ 37 261 } 38 262 }, 39 263 { /* 14039RU.SYM */ 40 14039, 'R', TYPE_UNI, 14,264 14039, KF_UNI, 14, 41 265 { 42 266 {13, 0x000070e4}, /* _ldrRead */ … … 54 278 {13, 0x00042dcb}, /* _VMGetOwner */ 55 279 {13, 0x00061dde}, /* g_tkExecPgm */ 56 {9, 0x0000e640}, /* f_FuStrLenZ */ 57 {9, 0x0000e5f6}, /* f_FuStrLen */ 58 {9, 0x0000e738}, /* f_FuBuff */ 59 } 60 }, 280 {13, 0x0005bbab}, /* _tkStartProcess */ 281 {9 , 0x0000e640}, /* f_FuStrLenZ */ 282 {9 , 0x0000e5f6}, /* f_FuStrLen */ 283 {9 , 0x0000e738}, /* f_FuBuff */ 284 {13, 0x0003ecf3}, /* _VMObjHandleInfo */ 285 {13, 0x00062b30}, /* _ldrASMpMTEFromHandle */ 286 {13, 0x00057b10}, /* _ldrOpenPath */ 287 {13, 0x000530d0}, /* _LDRClearSem */ 288 {13, 0x0005c563}, /* _ldrFindModule */ 289 {13, 0x0000a760}, /* _KSEMRequestMutex */ 290 {13, 0x0000a7f3}, /* _KSEMReleaseMutex */ 291 {13, 0x0000a81e}, /* _KSEMQueryMutex */ 292 {13, 0x0000aa33}, /* _KSEMInit */ 293 {8 , 0x0000dd20}, /* _LdrSem */ 294 {8 , 0x0000dda8}, /* _LDRLibPath */ 295 {13, 0x0004c335}, /* _TKSuBuff */ 296 {13, 0x0002e010}, /* _TKFuBuff */ 297 {13, 0x0002ddf0}, /* _TKFuBufLen */ 298 {13, 0x000530a0}, /* _ldrValidateMteHandle */ 299 {8 , 0x0000d714}, /* _pTCBCur */ 300 {8 , 0x0000d710}, /* _pPTDACur */ 301 {2 , 0x0000f8a4}, /* ptda_start */ 302 {2 , 0x0000f9be}, /* ptda_environ */ 303 {2 , 0x0000fec8}, /* ptda_ptdasem */ 304 {2 , 0x0000ffaa}, /* ptda_module */ 305 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 306 {8 , 0x0000f228}, /* _ldrpFileNameBuf */ 307 {13, 0x00051000}, /* SecPathFromSFN */ 308 } 309 }, 310 #ifdef ALLKERNELS 311 { /* 14040A4.SYM */ 312 14040, KF_UNI | KF_W4 | KF_ALLSTRICT, 16, 313 { 314 {15, 0x00008744}, /* _ldrRead */ 315 {15, 0x0006a6d0}, /* _ldrOpen */ 316 {15, 0x0006bb00}, /* _ldrClose */ 317 {15, 0x0006bbe5}, /* _LDRQAppType */ 318 {15, 0x000679a0}, /* _ldrEnum32bitRelRecs */ 319 {15, 0x00005158}, /* _IOSftOpen */ 320 {15, 0x000059c4}, /* _IOSftClose */ 321 {15, 0x00005aa0}, /* _IOSftTransPath */ 322 {15, 0x000055f8}, /* _IOSftReadAt */ 323 {15, 0x000055ff}, /* _IOSftWriteAt */ 324 {15, 0x00005bc8}, /* _SftFileSize */ 325 {15, 0x000659d0}, /* _VMAllocMem */ 326 {15, 0x00052ee3}, /* _VMGetOwner */ 327 {15, 0x00076050}, /* g_tkExecPgm */ 328 {15, 0x0006f100}, /* _tkStartProcess */ 329 {11, 0x0000f938}, /* f_FuStrLenZ */ 330 {11, 0x0000f8ec}, /* f_FuStrLen */ 331 {11, 0x0000fa54}, /* f_FuBuff */ 332 {15, 0x0004d0d7}, /* _VMObjHandleInfo */ 333 {15, 0x00076ef0}, /* _ldrASMpMTEFromHandle */ 334 {15, 0x0006aa50}, /* _ldrOpenPath */ 335 {15, 0x000651d0}, /* _LDRClearSem */ 336 {15, 0x0006fb33}, /* _ldrFindModule */ 337 {15, 0x0000c31c}, /* _KSEMRequestMutex */ 338 {15, 0x0000c430}, /* _KSEMReleaseMutex */ 339 {15, 0x0000c490}, /* _KSEMQueryMutex */ 340 {15, 0x0000c814}, /* _KSEMInit */ 341 {10, 0x0002b654}, /* _LdrSem */ 342 {10, 0x0002b6e8}, /* _LDRLibPath */ 343 {15, 0x0005d6f4}, /* _TKSuBuff */ 344 {15, 0x00037c91}, /* _TKFuBuff */ 345 {15, 0x00037a30}, /* _TKFuBufLen */ 346 {15, 0x000651a0}, /* _ldrValidateMteHandle */ 347 {10, 0x0002afa8}, /* _pTCBCur */ 348 {10, 0x0002afa4}, /* _pPTDACur */ 349 {4 , 0x0000f898}, /* ptda_start */ 350 {4 , 0x0000f9b6}, /* ptda_environ */ 351 {4 , 0x0000fec0}, /* ptda_ptdasem */ 352 {4 , 0x0000ffaa}, /* ptda_module */ 353 {4 , 0x0000f9b8}, /* ptda_pBeginLIBPATH */ 354 {10, 0x0002d614}, /* _ldrpFileNameBuf */ 355 {15, 0x00062b20}, /* SecPathFromSFN */ 356 } 357 }, 358 #endif 359 #ifdef ALLKERNELS 360 { /* 14040AS.SYM */ 361 14040, KF_SMP | KF_ALLSTRICT, 17, 362 { 363 {16, 0x0000a054}, /* _ldrRead */ 364 {16, 0x00075c00}, /* _ldrOpen */ 365 {16, 0x000770f0}, /* _ldrClose */ 366 {16, 0x000771d5}, /* _LDRQAppType */ 367 {16, 0x00072be0}, /* _ldrEnum32bitRelRecs */ 368 {16, 0x00006188}, /* _IOSftOpen */ 369 {16, 0x00006a90}, /* _IOSftClose */ 370 {16, 0x00006b8c}, /* _IOSftTransPath */ 371 {16, 0x0000666c}, /* _IOSftReadAt */ 372 {16, 0x00006673}, /* _IOSftWriteAt */ 373 {16, 0x00006cc4}, /* _SftFileSize */ 374 {16, 0x00070a30}, /* _VMAllocMem */ 375 {16, 0x0005e583}, /* _VMGetOwner */ 376 {16, 0x000824c0}, /* g_tkExecPgm */ 377 {16, 0x0007ad08}, /* _tkStartProcess */ 378 {13, 0x0000aca0}, /* f_FuStrLenZ */ 379 {13, 0x0000ac20}, /* f_FuStrLen */ 380 {13, 0x0000ae6c}, /* f_FuBuff */ 381 {16, 0x000584f0}, /* _VMObjHandleInfo */ 382 {16, 0x00083510}, /* _ldrASMpMTEFromHandle */ 383 {16, 0x00075f80}, /* _ldrOpenPath */ 384 {16, 0x000701c0}, /* _LDRClearSem */ 385 {16, 0x0007b7a3}, /* _ldrFindModule */ 386 {16, 0x0000e580}, /* _KSEMRequestMutex */ 387 {16, 0x0000e694}, /* _KSEMReleaseMutex */ 388 {16, 0x0000e6f4}, /* _KSEMQueryMutex */ 389 {16, 0x0000ea78}, /* _KSEMInit */ 390 {11, 0x0002b9b0}, /* _LdrSem */ 391 {11, 0x0002ba44}, /* _LDRLibPath */ 392 {16, 0x00067a44}, /* _TKSuBuff */ 393 {16, 0x00041710}, /* _TKFuBuff */ 394 {16, 0x00041461}, /* _TKFuBufLen */ 395 {16, 0x00070190}, /* _ldrValidateMteHandle */ 396 {0 , 0x00000aa4}, /* _pTCBCur */ 397 {0 , 0x00000aa0}, /* _pPTDACur */ 398 {5 , 0x0000f880}, /* ptda_start */ 399 {5 , 0x0000f99e}, /* ptda_environ */ 400 {5 , 0x0000fea8}, /* ptda_ptdasem */ 401 {5 , 0x0000ffa2}, /* ptda_module */ 402 {5 , 0x0000f9a0}, /* ptda_pBeginLIBPATH */ 403 {11, 0x0002d854}, /* _ldrpFileNameBuf */ 404 {16, 0x0006d6c0}, /* SecPathFromSFN */ 405 } 406 }, 407 #endif 408 #ifdef ALLKERNELS 409 { /* 14040AU.SYM */ 410 14040, KF_UNI | KF_ALLSTRICT, 16, 411 { 412 {15, 0x00008744}, /* _ldrRead */ 413 {15, 0x0006a740}, /* _ldrOpen */ 414 {15, 0x0006bb70}, /* _ldrClose */ 415 {15, 0x0006bc55}, /* _LDRQAppType */ 416 {15, 0x00067a10}, /* _ldrEnum32bitRelRecs */ 417 {15, 0x00005158}, /* _IOSftOpen */ 418 {15, 0x000059c4}, /* _IOSftClose */ 419 {15, 0x00005aa0}, /* _IOSftTransPath */ 420 {15, 0x000055f8}, /* _IOSftReadAt */ 421 {15, 0x000055ff}, /* _IOSftWriteAt */ 422 {15, 0x00005bc8}, /* _SftFileSize */ 423 {15, 0x00065a40}, /* _VMAllocMem */ 424 {15, 0x00052f53}, /* _VMGetOwner */ 425 {15, 0x000760c0}, /* g_tkExecPgm */ 426 {15, 0x0006f170}, /* _tkStartProcess */ 427 {11, 0x0000f938}, /* f_FuStrLenZ */ 428 {11, 0x0000f8ec}, /* f_FuStrLen */ 429 {11, 0x0000fa54}, /* f_FuBuff */ 430 {15, 0x0004d147}, /* _VMObjHandleInfo */ 431 {15, 0x00076f60}, /* _ldrASMpMTEFromHandle */ 432 {15, 0x0006aac0}, /* _ldrOpenPath */ 433 {15, 0x00065240}, /* _LDRClearSem */ 434 {15, 0x0006fba3}, /* _ldrFindModule */ 435 {15, 0x0000c31c}, /* _KSEMRequestMutex */ 436 {15, 0x0000c430}, /* _KSEMReleaseMutex */ 437 {15, 0x0000c490}, /* _KSEMQueryMutex */ 438 {15, 0x0000c814}, /* _KSEMInit */ 439 {10, 0x0002b68c}, /* _LdrSem */ 440 {10, 0x0002b720}, /* _LDRLibPath */ 441 {15, 0x0005d764}, /* _TKSuBuff */ 442 {15, 0x00037d01}, /* _TKFuBuff */ 443 {15, 0x00037aa0}, /* _TKFuBufLen */ 444 {15, 0x00065210}, /* _ldrValidateMteHandle */ 445 {10, 0x0002afe0}, /* _pTCBCur */ 446 {10, 0x0002afdc}, /* _pPTDACur */ 447 {4 , 0x0000f898}, /* ptda_start */ 448 {4 , 0x0000f9b6}, /* ptda_environ */ 449 {4 , 0x0000fec0}, /* ptda_ptdasem */ 450 {4 , 0x0000ffaa}, /* ptda_module */ 451 {4 , 0x0000f9b8}, /* ptda_pBeginLIBPATH */ 452 {10, 0x0002d64c}, /* _ldrpFileNameBuf */ 453 {15, 0x00062b90}, /* SecPathFromSFN */ 454 } 455 }, 456 #endif 457 #ifdef ALLKERNELS 458 { /* 14040H4.SYM */ 459 14040, KF_UNI | KF_W4 | KF_HALFSTRICT, 16, 460 { 461 {15, 0x00007a4c}, /* _ldrRead */ 462 {15, 0x00059260}, /* _ldrOpen */ 463 {15, 0x0005a530}, /* _ldrClose */ 464 {15, 0x0005a615}, /* _LDRQAppType */ 465 {15, 0x00056af0}, /* _ldrEnum32bitRelRecs */ 466 {15, 0x00004618}, /* _IOSftOpen */ 467 {15, 0x00004e74}, /* _IOSftClose */ 468 {15, 0x00004f4d}, /* _IOSftTransPath */ 469 {15, 0x00004aac}, /* _IOSftReadAt */ 470 {15, 0x00004ab3}, /* _IOSftWriteAt */ 471 {15, 0x00005066}, /* _SftFileSize */ 472 {15, 0x000550d0}, /* _VMAllocMem */ 473 {15, 0x0004491b}, /* _VMGetOwner */ 474 {15, 0x000638ee}, /* g_tkExecPgm */ 475 {15, 0x0005d63b}, /* _tkStartProcess */ 476 {11, 0x0000e74c}, /* f_FuStrLenZ */ 477 {11, 0x0000e702}, /* f_FuStrLen */ 478 {11, 0x0000e845}, /* f_FuBuff */ 479 {15, 0x00040823}, /* _VMObjHandleInfo */ 480 {15, 0x00064640}, /* _ldrASMpMTEFromHandle */ 481 {15, 0x000595a0}, /* _ldrOpenPath */ 482 {15, 0x00054b80}, /* _LDRClearSem */ 483 {15, 0x0005e013}, /* _ldrFindModule */ 484 {15, 0x0000b2ec}, /* _KSEMRequestMutex */ 485 {15, 0x0000b3c3}, /* _KSEMReleaseMutex */ 486 {15, 0x0000b3ee}, /* _KSEMQueryMutex */ 487 {15, 0x0000b68e}, /* _KSEMInit */ 488 {10, 0x0001e348}, /* _LdrSem */ 489 {10, 0x0001e3d0}, /* _LDRLibPath */ 490 {15, 0x0004df49}, /* _TKSuBuff */ 491 {15, 0x0002fab0}, /* _TKFuBuff */ 492 {15, 0x0002f890}, /* _TKFuBufLen */ 493 {15, 0x00054b50}, /* _ldrValidateMteHandle */ 494 {10, 0x0001dd40}, /* _pTCBCur */ 495 {10, 0x0001dd3c}, /* _pPTDACur */ 496 {4 , 0x0000f8a0}, /* ptda_start */ 497 {4 , 0x0000f9be}, /* ptda_environ */ 498 {4 , 0x0000fec8}, /* ptda_ptdasem */ 499 {4 , 0x0000ffaa}, /* ptda_module */ 500 {4 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 501 {10, 0x0001f838}, /* _ldrpFileNameBuf */ 502 {15, 0x00052ab0}, /* SecPathFromSFN */ 503 } 504 }, 505 #endif 506 #ifdef ALLKERNELS 507 { /* 14040HS.SYM */ 508 14040, KF_SMP | KF_HALFSTRICT, 17, 509 { 510 {16, 0x00008fd4}, /* _ldrRead */ 511 {16, 0x00063af0}, /* _ldrOpen */ 512 {16, 0x00064e90}, /* _ldrClose */ 513 {16, 0x00064f75}, /* _LDRQAppType */ 514 {16, 0x000610a0}, /* _ldrEnum32bitRelRecs */ 515 {16, 0x00005308}, /* _IOSftOpen */ 516 {16, 0x00005c01}, /* _IOSftClose */ 517 {16, 0x00005cfc}, /* _IOSftTransPath */ 518 {16, 0x000057e0}, /* _IOSftReadAt */ 519 {16, 0x000057e7}, /* _IOSftWriteAt */ 520 {16, 0x00005e26}, /* _SftFileSize */ 521 {16, 0x0005f4a0}, /* _VMAllocMem */ 522 {16, 0x0004f44b}, /* _VMGetOwner */ 523 {16, 0x0006f08e}, /* g_tkExecPgm */ 524 {16, 0x00068571}, /* _tkStartProcess */ 525 {13, 0x00009eec}, /* f_FuStrLenZ */ 526 {13, 0x00009e6c}, /* f_FuStrLen */ 527 {13, 0x0000a096}, /* f_FuBuff */ 528 {16, 0x0004b104}, /* _VMObjHandleInfo */ 529 {16, 0x0006ff70}, /* _ldrASMpMTEFromHandle */ 530 {16, 0x00063e30}, /* _ldrOpenPath */ 531 {16, 0x0005eef0}, /* _LDRClearSem */ 532 {16, 0x00068fb3}, /* _ldrFindModule */ 533 {16, 0x0000d0d8}, /* _KSEMRequestMutex */ 534 {16, 0x0000d1af}, /* _KSEMReleaseMutex */ 535 {16, 0x0000d1da}, /* _KSEMQueryMutex */ 536 {16, 0x0000d47a}, /* _KSEMInit */ 537 {11, 0x0001d8d4}, /* _LdrSem */ 538 {11, 0x0001d95c}, /* _LDRLibPath */ 539 {16, 0x000575b7}, /* _TKSuBuff */ 540 {16, 0x00038b90}, /* _TKFuBuff */ 541 {16, 0x00038921}, /* _TKFuBufLen */ 542 {16, 0x0005eec0}, /* _ldrValidateMteHandle */ 543 {0 , 0x00000aa4}, /* _pTCBCur */ 544 {0 , 0x00000aa0}, /* _pPTDACur */ 545 {5 , 0x0000f88c}, /* ptda_start */ 546 {5 , 0x0000f9aa}, /* ptda_environ */ 547 {5 , 0x0000feb4}, /* ptda_ptdasem */ 548 {5 , 0x0000ffa2}, /* ptda_module */ 549 {5 , 0x0000f9ac}, /* ptda_pBeginLIBPATH */ 550 {11, 0x0001edb8}, /* _ldrpFileNameBuf */ 551 {16, 0x0005ca00}, /* SecPathFromSFN */ 552 } 553 }, 554 #endif 555 #ifdef ALLKERNELS 556 { /* 14040HU.SYM */ 557 14040, KF_UNI | KF_HALFSTRICT, 16, 558 { 559 {15, 0x00007a4c}, /* _ldrRead */ 560 {15, 0x000592d0}, /* _ldrOpen */ 561 {15, 0x0005a5a0}, /* _ldrClose */ 562 {15, 0x0005a685}, /* _LDRQAppType */ 563 {15, 0x00056b60}, /* _ldrEnum32bitRelRecs */ 564 {15, 0x00004618}, /* _IOSftOpen */ 565 {15, 0x00004e74}, /* _IOSftClose */ 566 {15, 0x00004f4d}, /* _IOSftTransPath */ 567 {15, 0x00004aac}, /* _IOSftReadAt */ 568 {15, 0x00004ab3}, /* _IOSftWriteAt */ 569 {15, 0x00005066}, /* _SftFileSize */ 570 {15, 0x00055140}, /* _VMAllocMem */ 571 {15, 0x0004498b}, /* _VMGetOwner */ 572 {15, 0x0006395e}, /* g_tkExecPgm */ 573 {15, 0x0005d6ab}, /* _tkStartProcess */ 574 {11, 0x0000e74c}, /* f_FuStrLenZ */ 575 {11, 0x0000e702}, /* f_FuStrLen */ 576 {11, 0x0000e845}, /* f_FuBuff */ 577 {15, 0x00040893}, /* _VMObjHandleInfo */ 578 {15, 0x000646b0}, /* _ldrASMpMTEFromHandle */ 579 {15, 0x00059610}, /* _ldrOpenPath */ 580 {15, 0x00054bf0}, /* _LDRClearSem */ 581 {15, 0x0005e083}, /* _ldrFindModule */ 582 {15, 0x0000b2ec}, /* _KSEMRequestMutex */ 583 {15, 0x0000b3c3}, /* _KSEMReleaseMutex */ 584 {15, 0x0000b3ee}, /* _KSEMQueryMutex */ 585 {15, 0x0000b68e}, /* _KSEMInit */ 586 {10, 0x0001e348}, /* _LdrSem */ 587 {10, 0x0001e3d0}, /* _LDRLibPath */ 588 {15, 0x0004dfb9}, /* _TKSuBuff */ 589 {15, 0x0002fb20}, /* _TKFuBuff */ 590 {15, 0x0002f900}, /* _TKFuBufLen */ 591 {15, 0x00054bc0}, /* _ldrValidateMteHandle */ 592 {10, 0x0001dd40}, /* _pTCBCur */ 593 {10, 0x0001dd3c}, /* _pPTDACur */ 594 {4 , 0x0000f8a0}, /* ptda_start */ 595 {4 , 0x0000f9be}, /* ptda_environ */ 596 {4 , 0x0000fec8}, /* ptda_ptdasem */ 597 {4 , 0x0000ffaa}, /* ptda_module */ 598 {4 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 599 {10, 0x0001f838}, /* _ldrpFileNameBuf */ 600 {15, 0x00052b20}, /* SecPathFromSFN */ 601 } 602 }, 603 #endif 61 604 { /* 14040R4.SYM */ 62 14040, 'R', TYPE_W4, 14,605 14040, KF_UNI | KF_W4, 14, 63 606 { 64 607 {13, 0x000070dc}, /* _ldrRead */ … … 76 619 {13, 0x00042ecb}, /* _VMGetOwner */ 77 620 {13, 0x00061dde}, /* g_tkExecPgm */ 78 {9, 0x0000e74c}, /* f_FuStrLenZ */ 79 {9, 0x0000e702}, /* f_FuStrLen */ 80 {9, 0x0000e845}, /* f_FuBuff */ 621 {13, 0x0005bb4b}, /* _tkStartProcess */ 622 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 623 {9 , 0x0000e702}, /* f_FuStrLen */ 624 {9 , 0x0000e845}, /* f_FuBuff */ 625 {13, 0x0003edd3}, /* _VMObjHandleInfo */ 626 {13, 0x00062b30}, /* _ldrASMpMTEFromHandle */ 627 {13, 0x00057ac0}, /* _ldrOpenPath */ 628 {13, 0x000530a0}, /* _LDRClearSem */ 629 {13, 0x0005c503}, /* _ldrFindModule */ 630 {13, 0x0000a8d4}, /* _KSEMRequestMutex */ 631 {13, 0x0000a967}, /* _KSEMReleaseMutex */ 632 {13, 0x0000a992}, /* _KSEMQueryMutex */ 633 {13, 0x0000aba7}, /* _KSEMInit */ 634 {8 , 0x0000dd2c}, /* _LdrSem */ 635 {8 , 0x0000ddb4}, /* _LDRLibPath */ 636 {13, 0x0004c465}, /* _TKSuBuff */ 637 {13, 0x0002e190}, /* _TKFuBuff */ 638 {13, 0x0002df70}, /* _TKFuBufLen */ 639 {13, 0x00053070}, /* _ldrValidateMteHandle */ 640 {8 , 0x0000d720}, /* _pTCBCur */ 641 {8 , 0x0000d71c}, /* _pPTDACur */ 642 {2 , 0x0000f8a0}, /* ptda_start */ 643 {2 , 0x0000f9be}, /* ptda_environ */ 644 {2 , 0x0000fec8}, /* ptda_ptdasem */ 645 {2 , 0x0000ffaa}, /* ptda_module */ 646 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 647 {8 , 0x0000f1fc}, /* _ldrpFileNameBuf */ 648 {13, 0x00050fd0}, /* SecPathFromSFN */ 649 } 650 }, 651 { /* 14040RS.SYM */ 652 14040, KF_SMP, 15, 653 { 654 {14, 0x0000838c}, /* _ldrRead */ 655 {14, 0x00061650}, /* _ldrOpen */ 656 {14, 0x000629f0}, /* _ldrClose */ 657 {14, 0x00062ad5}, /* _LDRQAppType */ 658 {14, 0x0005ec00}, /* _ldrEnum32bitRelRecs */ 659 {14, 0x00005268}, /* _IOSftOpen */ 660 {14, 0x00005b61}, /* _IOSftClose */ 661 {14, 0x00005c5c}, /* _IOSftTransPath */ 662 {14, 0x00005740}, /* _IOSftReadAt */ 663 {14, 0x00005747}, /* _IOSftWriteAt */ 664 {14, 0x00005d86}, /* _SftFileSize */ 665 {14, 0x0005d000}, /* _VMAllocMem */ 666 {14, 0x0004d03b}, /* _VMGetOwner */ 667 {14, 0x0006cbde}, /* g_tkExecPgm */ 668 {14, 0x000660d1}, /* _tkStartProcess */ 669 {11, 0x00009e0c}, /* f_FuStrLenZ */ 670 {11, 0x00009d8c}, /* f_FuStrLen */ 671 {11, 0x00009fb6}, /* f_FuBuff */ 672 {14, 0x00048cf4}, /* _VMObjHandleInfo */ 673 {14, 0x0006dac0}, /* _ldrASMpMTEFromHandle */ 674 {14, 0x00061990}, /* _ldrOpenPath */ 675 {14, 0x0005ca50}, /* _LDRClearSem */ 676 {14, 0x00066b03}, /* _ldrFindModule */ 677 {14, 0x0000c384}, /* _KSEMRequestMutex */ 678 {14, 0x0000c417}, /* _KSEMReleaseMutex */ 679 {14, 0x0000c442}, /* _KSEMQueryMutex */ 680 {14, 0x0000c657}, /* _KSEMInit */ 681 {9 , 0x0000d2a4}, /* _LdrSem */ 682 {9 , 0x0000d32c}, /* _LDRLibPath */ 683 {14, 0x00055113}, /* _TKSuBuff */ 684 {14, 0x000368b0}, /* _TKFuBuff */ 685 {14, 0x00036641}, /* _TKFuBufLen */ 686 {14, 0x0005ca20}, /* _ldrValidateMteHandle */ 687 {0 , 0x00000aa4}, /* _pTCBCur */ 688 {0 , 0x00000aa0}, /* _pPTDACur */ 689 {3 , 0x0000f88c}, /* ptda_start */ 690 {3 , 0x0000f9aa}, /* ptda_environ */ 691 {3 , 0x0000feb4}, /* ptda_ptdasem */ 692 {3 , 0x0000ffa2}, /* ptda_module */ 693 {3 , 0x0000f9ac}, /* ptda_pBeginLIBPATH */ 694 {9 , 0x0000e768}, /* _ldrpFileNameBuf */ 695 {14, 0x0005a560}, /* SecPathFromSFN */ 696 } 697 }, 698 { /* 14040RU.SYM */ 699 14040, KF_UNI, 14, 700 { 701 {13, 0x000070dc}, /* _ldrRead */ 702 {13, 0x000577f0}, /* _ldrOpen */ 703 {13, 0x00058ac0}, /* _ldrClose */ 704 {13, 0x00058ba5}, /* _LDRQAppType */ 705 {13, 0x00055080}, /* _ldrEnum32bitRelRecs */ 706 {13, 0x00004598}, /* _IOSftOpen */ 707 {13, 0x00004df4}, /* _IOSftClose */ 708 {13, 0x00004ecd}, /* _IOSftTransPath */ 709 {13, 0x00004a2c}, /* _IOSftReadAt */ 710 {13, 0x00004a33}, /* _IOSftWriteAt */ 711 {13, 0x00004fe6}, /* _SftFileSize */ 712 {13, 0x00053660}, /* _VMAllocMem */ 713 {13, 0x00042f3b}, /* _VMGetOwner */ 714 {13, 0x00061e4e}, /* g_tkExecPgm */ 715 {13, 0x0005bbbb}, /* _tkStartProcess */ 716 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 717 {9 , 0x0000e702}, /* f_FuStrLen */ 718 {9 , 0x0000e845}, /* f_FuBuff */ 719 {13, 0x0003ee43}, /* _VMObjHandleInfo */ 720 {13, 0x00062ba0}, /* _ldrASMpMTEFromHandle */ 721 {13, 0x00057b30}, /* _ldrOpenPath */ 722 {13, 0x00053110}, /* _LDRClearSem */ 723 {13, 0x0005c573}, /* _ldrFindModule */ 724 {13, 0x0000a8d4}, /* _KSEMRequestMutex */ 725 {13, 0x0000a967}, /* _KSEMReleaseMutex */ 726 {13, 0x0000a992}, /* _KSEMQueryMutex */ 727 {13, 0x0000aba7}, /* _KSEMInit */ 728 {8 , 0x0000dd2c}, /* _LdrSem */ 729 {8 , 0x0000ddb4}, /* _LDRLibPath */ 730 {13, 0x0004c4d5}, /* _TKSuBuff */ 731 {13, 0x0002e200}, /* _TKFuBuff */ 732 {13, 0x0002dfe0}, /* _TKFuBufLen */ 733 {13, 0x000530e0}, /* _ldrValidateMteHandle */ 734 {8 , 0x0000d720}, /* _pTCBCur */ 735 {8 , 0x0000d71c}, /* _pPTDACur */ 736 {2 , 0x0000f8a0}, /* ptda_start */ 737 {2 , 0x0000f9be}, /* ptda_environ */ 738 {2 , 0x0000fec8}, /* ptda_ptdasem */ 739 {2 , 0x0000ffaa}, /* ptda_module */ 740 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 741 {8 , 0x0000f1fc}, /* _ldrpFileNameBuf */ 742 {13, 0x00051040}, /* SecPathFromSFN */ 743 } 744 }, 745 #ifdef ALLKERNELS 746 { /* 14044HU.SYM */ 747 14044, KF_UNI | KF_HALFSTRICT, 16, 748 { 749 {15, 0x0000873c}, /* _ldrRead */ 750 {15, 0x0006a010}, /* _ldrOpen */ 751 {15, 0x0006b440}, /* _ldrClose */ 752 {15, 0x0006b525}, /* _LDRQAppType */ 753 {15, 0x00067640}, /* _ldrEnum32bitRelRecs */ 754 {15, 0x00005138}, /* _IOSftOpen */ 755 {15, 0x000059a4}, /* _IOSftClose */ 756 {15, 0x00005a80}, /* _IOSftTransPath */ 757 {15, 0x000055d8}, /* _IOSftReadAt */ 758 {15, 0x000055df}, /* _IOSftWriteAt */ 759 {15, 0x00005ba8}, /* _SftFileSize */ 760 {15, 0x000657a0}, /* _VMAllocMem */ 761 {15, 0x00052d33}, /* _VMGetOwner */ 762 {15, 0x00075710}, /* g_tkExecPgm */ 763 {15, 0x0006ea50}, /* _tkStartProcess */ 764 {11, 0x0000f938}, /* f_FuStrLenZ */ 765 {11, 0x0000f8ec}, /* f_FuStrLen */ 766 {11, 0x0000fa54}, /* f_FuBuff */ 767 {15, 0x0004cf27}, /* _VMObjHandleInfo */ 768 {15, 0x000765b0}, /* _ldrASMpMTEFromHandle */ 769 {15, 0x0006a390}, /* _ldrOpenPath */ 770 {15, 0x00064fa0}, /* _LDRClearSem */ 771 {15, 0x0006f483}, /* _ldrFindModule */ 772 {15, 0x0000bc7c}, /* _KSEMRequestMutex */ 773 {15, 0x0000bd90}, /* _KSEMReleaseMutex */ 774 {15, 0x0000bdf0}, /* _KSEMQueryMutex */ 775 {15, 0x0000c174}, /* _KSEMInit */ 776 {10, 0x0002b8f8}, /* _LdrSem */ 777 {10, 0x0002b98c}, /* _LDRLibPath */ 778 {15, 0x0005d548}, /* _TKSuBuff */ 779 {15, 0x00037cf1}, /* _TKFuBuff */ 780 {15, 0x00037a90}, /* _TKFuBufLen */ 781 {15, 0x00064f70}, /* _ldrValidateMteHandle */ 782 {10, 0x0002b24c}, /* _pTCBCur */ 783 {10, 0x0002b248}, /* _pPTDACur */ 784 {4 , 0x0000f898}, /* ptda_start */ 785 {4 , 0x0000f9b6}, /* ptda_environ */ 786 {4 , 0x0000fec0}, /* ptda_ptdasem */ 787 {4 , 0x0000ffaa}, /* ptda_module */ 788 {4 , 0x0000f9b8}, /* ptda_pBeginLIBPATH */ 789 {10, 0x0002d8b8}, /* _ldrpFileNameBuf */ 790 {15, 0x00062930}, /* SecPathFromSFN */ 791 } 792 }, 793 #endif 794 { /* 14044R4.SYM */ 795 14044, KF_UNI | KF_W4, 14, 796 { 797 {13, 0x000070e0}, /* _ldrRead */ 798 {13, 0x00056f40}, /* _ldrOpen */ 799 {13, 0x00058210}, /* _ldrClose */ 800 {13, 0x000582f5}, /* _LDRQAppType */ 801 {13, 0x00054aa0}, /* _ldrEnum32bitRelRecs */ 802 {13, 0x00004588}, /* _IOSftOpen */ 803 {13, 0x00004de4}, /* _IOSftClose */ 804 {13, 0x00004ebd}, /* _IOSftTransPath */ 805 {13, 0x00004a1c}, /* _IOSftReadAt */ 806 {13, 0x00004a23}, /* _IOSftWriteAt */ 807 {13, 0x00004fd6}, /* _SftFileSize */ 808 {13, 0x000531e0}, /* _VMAllocMem */ 809 {13, 0x00042b3b}, /* _VMGetOwner */ 810 {13, 0x0006132e}, /* g_tkExecPgm */ 811 {13, 0x0005b2fb}, /* _tkStartProcess */ 812 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 813 {9 , 0x0000e702}, /* f_FuStrLen */ 814 {9 , 0x0000e845}, /* f_FuBuff */ 815 {13, 0x0003ea43}, /* _VMObjHandleInfo */ 816 {13, 0x00062080}, /* _ldrASMpMTEFromHandle */ 817 {13, 0x00057280}, /* _ldrOpenPath */ 818 {13, 0x00052c90}, /* _LDRClearSem */ 819 {13, 0x0005bcb3}, /* _ldrFindModule */ 820 {13, 0x0000a128}, /* _KSEMRequestMutex */ 821 {13, 0x0000a1bb}, /* _KSEMReleaseMutex */ 822 {13, 0x0000a1e6}, /* _KSEMQueryMutex */ 823 {13, 0x0000a3fb}, /* _KSEMInit */ 824 {8 , 0x0000dd28}, /* _LdrSem */ 825 {8 , 0x0000ddb0}, /* _LDRLibPath */ 826 {13, 0x0004c0d5}, /* _TKSuBuff */ 827 {13, 0x0002dfb0}, /* _TKFuBuff */ 828 {13, 0x0002dd90}, /* _TKFuBufLen */ 829 {13, 0x00052c60}, /* _ldrValidateMteHandle */ 830 {8 , 0x0000d71c}, /* _pTCBCur */ 831 {8 , 0x0000d718}, /* _pPTDACur */ 832 {2 , 0x0000f8a0}, /* ptda_start */ 833 {2 , 0x0000f9be}, /* ptda_environ */ 834 {2 , 0x0000fec8}, /* ptda_ptdasem */ 835 {2 , 0x0000ffaa}, /* ptda_module */ 836 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 837 {8 , 0x0000f1f8}, /* _ldrpFileNameBuf */ 838 {13, 0x00050c00}, /* SecPathFromSFN */ 839 } 840 }, 841 { /* 14045R4.SYM */ 842 14045, KF_UNI | KF_W4, 14, 843 { 844 {13, 0x000070ec}, /* _ldrRead */ 845 {13, 0x00056f60}, /* _ldrOpen */ 846 {13, 0x00058230}, /* _ldrClose */ 847 {13, 0x00058315}, /* _LDRQAppType */ 848 {13, 0x00054ac0}, /* _ldrEnum32bitRelRecs */ 849 {13, 0x00004588}, /* _IOSftOpen */ 850 {13, 0x00004de4}, /* _IOSftClose */ 851 {13, 0x00004ebd}, /* _IOSftTransPath */ 852 {13, 0x00004a1c}, /* _IOSftReadAt */ 853 {13, 0x00004a23}, /* _IOSftWriteAt */ 854 {13, 0x00004fd6}, /* _SftFileSize */ 855 {13, 0x00053200}, /* _VMAllocMem */ 856 {13, 0x00042b5b}, /* _VMGetOwner */ 857 {13, 0x0006134e}, /* g_tkExecPgm */ 858 {13, 0x0005b31b}, /* _tkStartProcess */ 859 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 860 {9 , 0x0000e702}, /* f_FuStrLen */ 861 {9 , 0x0000e845}, /* f_FuBuff */ 862 {13, 0x0003ea63}, /* _VMObjHandleInfo */ 863 {13, 0x000620a0}, /* _ldrASMpMTEFromHandle */ 864 {13, 0x000572a0}, /* _ldrOpenPath */ 865 {13, 0x00052cb0}, /* _LDRClearSem */ 866 {13, 0x0005bcd3}, /* _ldrFindModule */ 867 {13, 0x0000a140}, /* _KSEMRequestMutex */ 868 {13, 0x0000a1d3}, /* _KSEMReleaseMutex */ 869 {13, 0x0000a1fe}, /* _KSEMQueryMutex */ 870 {13, 0x0000a413}, /* _KSEMInit */ 871 {8 , 0x0000dd28}, /* _LdrSem */ 872 {8 , 0x0000ddb0}, /* _LDRLibPath */ 873 {13, 0x0004c0f5}, /* _TKSuBuff */ 874 {13, 0x0002dfd0}, /* _TKFuBuff */ 875 {13, 0x0002ddb0}, /* _TKFuBufLen */ 876 {13, 0x00052c80}, /* _ldrValidateMteHandle */ 877 {8 , 0x0000d71c}, /* _pTCBCur */ 878 {8 , 0x0000d718}, /* _pPTDACur */ 879 {2 , 0x0000f8a0}, /* ptda_start */ 880 {2 , 0x0000f9be}, /* ptda_environ */ 881 {2 , 0x0000fec8}, /* ptda_ptdasem */ 882 {2 , 0x0000ffaa}, /* ptda_module */ 883 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 884 {8 , 0x0000f1f8}, /* _ldrpFileNameBuf */ 885 {13, 0x00050c20}, /* SecPathFromSFN */ 886 } 887 }, 888 #ifdef ALLKERNELS 889 { /* 14046A4.SYM */ 890 14046, KF_UNI | KF_W4 | KF_ALLSTRICT, 16, 891 { 892 {15, 0x00007a3c}, /* _ldrRead */ 893 {15, 0x00058a30}, /* _ldrOpen */ 894 {15, 0x00059d00}, /* _ldrClose */ 895 {15, 0x00059de5}, /* _LDRQAppType */ 896 {15, 0x00056590}, /* _ldrEnum32bitRelRecs */ 897 {15, 0x00004608}, /* _IOSftOpen */ 898 {15, 0x00004e64}, /* _IOSftClose */ 899 {15, 0x00004f3d}, /* _IOSftTransPath */ 900 {15, 0x00004a9c}, /* _IOSftReadAt */ 901 {15, 0x00004aa3}, /* _IOSftWriteAt */ 902 {15, 0x00005056}, /* _SftFileSize */ 903 {15, 0x00054cd0}, /* _VMAllocMem */ 904 {15, 0x0004459b}, /* _VMGetOwner */ 905 {15, 0x00062e4e}, /* g_tkExecPgm */ 906 {15, 0x0005cdfb}, /* _tkStartProcess */ 907 {11, 0x0000e74c}, /* f_FuStrLenZ */ 908 {11, 0x0000e702}, /* f_FuStrLen */ 909 {11, 0x0000e845}, /* f_FuBuff */ 910 {15, 0x000404a3}, /* _VMObjHandleInfo */ 911 {15, 0x00063ba0}, /* _ldrASMpMTEFromHandle */ 912 {15, 0x00058d70}, /* _ldrOpenPath */ 913 {15, 0x00054780}, /* _LDRClearSem */ 914 {15, 0x0005d7d3}, /* _ldrFindModule */ 915 {15, 0x0000ab1c}, /* _KSEMRequestMutex */ 916 {15, 0x0000abf3}, /* _KSEMReleaseMutex */ 917 {15, 0x0000ac1e}, /* _KSEMQueryMutex */ 918 {15, 0x0000aebe}, /* _KSEMInit */ 919 {10, 0x0001e344}, /* _LdrSem */ 920 {10, 0x0001e3cc}, /* _LDRLibPath */ 921 {15, 0x0004dbc9}, /* _TKSuBuff */ 922 {15, 0x0002f8c0}, /* _TKFuBuff */ 923 {15, 0x0002f6a0}, /* _TKFuBufLen */ 924 {15, 0x00054750}, /* _ldrValidateMteHandle */ 925 {10, 0x0001dd3c}, /* _pTCBCur */ 926 {10, 0x0001dd38}, /* _pPTDACur */ 927 {4 , 0x0000f8a0}, /* ptda_start */ 928 {4 , 0x0000f9be}, /* ptda_environ */ 929 {4 , 0x0000fec8}, /* ptda_ptdasem */ 930 {4 , 0x0000ffaa}, /* ptda_module */ 931 {4 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 932 {10, 0x0001f834}, /* _ldrpFileNameBuf */ 933 {15, 0x000526f0}, /* SecPathFromSFN */ 934 } 935 }, 936 #endif 937 { /* 14046R4.SYM */ 938 14046, KF_UNI | KF_W4, 14, 939 { 940 {13, 0x000070cc}, /* _ldrRead */ 941 {13, 0x00056f30}, /* _ldrOpen */ 942 {13, 0x00058200}, /* _ldrClose */ 943 {13, 0x000582e5}, /* _LDRQAppType */ 944 {13, 0x00054a90}, /* _ldrEnum32bitRelRecs */ 945 {13, 0x00004588}, /* _IOSftOpen */ 946 {13, 0x00004de4}, /* _IOSftClose */ 947 {13, 0x00004ebd}, /* _IOSftTransPath */ 948 {13, 0x00004a1c}, /* _IOSftReadAt */ 949 {13, 0x00004a23}, /* _IOSftWriteAt */ 950 {13, 0x00004fd6}, /* _SftFileSize */ 951 {13, 0x000531d0}, /* _VMAllocMem */ 952 {13, 0x00042b2b}, /* _VMGetOwner */ 953 {13, 0x0006131e}, /* g_tkExecPgm */ 954 {13, 0x0005b2eb}, /* _tkStartProcess */ 955 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 956 {9 , 0x0000e702}, /* f_FuStrLen */ 957 {9 , 0x0000e845}, /* f_FuBuff */ 958 {13, 0x0003ea33}, /* _VMObjHandleInfo */ 959 {13, 0x00062070}, /* _ldrASMpMTEFromHandle */ 960 {13, 0x00057270}, /* _ldrOpenPath */ 961 {13, 0x00052c80}, /* _LDRClearSem */ 962 {13, 0x0005bca3}, /* _ldrFindModule */ 963 {13, 0x0000a100}, /* _KSEMRequestMutex */ 964 {13, 0x0000a193}, /* _KSEMReleaseMutex */ 965 {13, 0x0000a1be}, /* _KSEMQueryMutex */ 966 {13, 0x0000a3d3}, /* _KSEMInit */ 967 {8 , 0x0000dd28}, /* _LdrSem */ 968 {8 , 0x0000ddb0}, /* _LDRLibPath */ 969 {13, 0x0004c0c5}, /* _TKSuBuff */ 970 {13, 0x0002df80}, /* _TKFuBuff */ 971 {13, 0x0002dd60}, /* _TKFuBufLen */ 972 {13, 0x00052c50}, /* _ldrValidateMteHandle */ 973 {8 , 0x0000d71c}, /* _pTCBCur */ 974 {8 , 0x0000d718}, /* _pPTDACur */ 975 {2 , 0x0000f8a0}, /* ptda_start */ 976 {2 , 0x0000f9be}, /* ptda_environ */ 977 {2 , 0x0000fec8}, /* ptda_ptdasem */ 978 {2 , 0x0000ffaa}, /* ptda_module */ 979 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 980 {8 , 0x0000f1f8}, /* _ldrpFileNameBuf */ 981 {13, 0x00050bf0}, /* SecPathFromSFN */ 982 } 983 }, 984 { /* 14048RS.SYM */ 985 14048, KF_SMP, 15, 986 { 987 {14, 0x0000836c}, /* _ldrRead */ 988 {14, 0x00060e10}, /* _ldrOpen */ 989 {14, 0x000621b0}, /* _ldrClose */ 990 {14, 0x00062295}, /* _LDRQAppType */ 991 {14, 0x0005e690}, /* _ldrEnum32bitRelRecs */ 992 {14, 0x00005248}, /* _IOSftOpen */ 993 {14, 0x00005b41}, /* _IOSftClose */ 994 {14, 0x00005c3c}, /* _IOSftTransPath */ 995 {14, 0x00005720}, /* _IOSftReadAt */ 996 {14, 0x00005727}, /* _IOSftWriteAt */ 997 {14, 0x00005d66}, /* _SftFileSize */ 998 {14, 0x0005cbd0}, /* _VMAllocMem */ 999 {14, 0x0004cc8b}, /* _VMGetOwner */ 1000 {14, 0x0006c13e}, /* g_tkExecPgm */ 1001 {14, 0x00065871}, /* _tkStartProcess */ 1002 {11, 0x00009e0c}, /* f_FuStrLenZ */ 1003 {11, 0x00009d8c}, /* f_FuStrLen */ 1004 {11, 0x00009fb6}, /* f_FuBuff */ 1005 {14, 0x00048944}, /* _VMObjHandleInfo */ 1006 {14, 0x0006d020}, /* _ldrASMpMTEFromHandle */ 1007 {14, 0x00061150}, /* _ldrOpenPath */ 1008 {14, 0x0005c620}, /* _LDRClearSem */ 1009 {14, 0x000662a3}, /* _ldrFindModule */ 1010 {14, 0x0000bb3c}, /* _KSEMRequestMutex */ 1011 {14, 0x0000bbcf}, /* _KSEMReleaseMutex */ 1012 {14, 0x0000bbfa}, /* _KSEMQueryMutex */ 1013 {14, 0x0000be0f}, /* _KSEMInit */ 1014 {9 , 0x0000d2a0}, /* _LdrSem */ 1015 {9 , 0x0000d328}, /* _LDRLibPath */ 1016 {14, 0x00054d63}, /* _TKSuBuff */ 1017 {14, 0x000366a0}, /* _TKFuBuff */ 1018 {14, 0x00036431}, /* _TKFuBufLen */ 1019 {14, 0x0005c5f0}, /* _ldrValidateMteHandle */ 1020 {0 , 0x00000aa4}, /* _pTCBCur */ 1021 {0 , 0x00000aa0}, /* _pPTDACur */ 1022 {3 , 0x0000f88c}, /* ptda_start */ 1023 {3 , 0x0000f9aa}, /* ptda_environ */ 1024 {3 , 0x0000feb4}, /* ptda_ptdasem */ 1025 {3 , 0x0000ffa2}, /* ptda_module */ 1026 {3 , 0x0000f9ac}, /* ptda_pBeginLIBPATH */ 1027 {9 , 0x0000e764}, /* _ldrpFileNameBuf */ 1028 {14, 0x0005a170}, /* SecPathFromSFN */ 1029 } 1030 }, 1031 { /* 14048RU.SYM */ 1032 14048, KF_UNI, 14, 1033 { 1034 {13, 0x000070cc}, /* _ldrRead */ 1035 {13, 0x00056fa0}, /* _ldrOpen */ 1036 {13, 0x00058270}, /* _ldrClose */ 1037 {13, 0x00058355}, /* _LDRQAppType */ 1038 {13, 0x00054b00}, /* _ldrEnum32bitRelRecs */ 1039 {13, 0x00004588}, /* _IOSftOpen */ 1040 {13, 0x00004de4}, /* _IOSftClose */ 1041 {13, 0x00004ebd}, /* _IOSftTransPath */ 1042 {13, 0x00004a1c}, /* _IOSftReadAt */ 1043 {13, 0x00004a23}, /* _IOSftWriteAt */ 1044 {13, 0x00004fd6}, /* _SftFileSize */ 1045 {13, 0x00053240}, /* _VMAllocMem */ 1046 {13, 0x00042b9b}, /* _VMGetOwner */ 1047 {13, 0x0006138e}, /* g_tkExecPgm */ 1048 {13, 0x0005b35b}, /* _tkStartProcess */ 1049 {9 , 0x0000e74c}, /* f_FuStrLenZ */ 1050 {9 , 0x0000e702}, /* f_FuStrLen */ 1051 {9 , 0x0000e845}, /* f_FuBuff */ 1052 {13, 0x0003eaa3}, /* _VMObjHandleInfo */ 1053 {13, 0x000620e0}, /* _ldrASMpMTEFromHandle */ 1054 {13, 0x000572e0}, /* _ldrOpenPath */ 1055 {13, 0x00052cf0}, /* _LDRClearSem */ 1056 {13, 0x0005bd13}, /* _ldrFindModule */ 1057 {13, 0x0000a100}, /* _KSEMRequestMutex */ 1058 {13, 0x0000a193}, /* _KSEMReleaseMutex */ 1059 {13, 0x0000a1be}, /* _KSEMQueryMutex */ 1060 {13, 0x0000a3d3}, /* _KSEMInit */ 1061 {8 , 0x0000dd28}, /* _LdrSem */ 1062 {8 , 0x0000ddb0}, /* _LDRLibPath */ 1063 {13, 0x0004c135}, /* _TKSuBuff */ 1064 {13, 0x0002dff0}, /* _TKFuBuff */ 1065 {13, 0x0002ddd0}, /* _TKFuBufLen */ 1066 {13, 0x00052cc0}, /* _ldrValidateMteHandle */ 1067 {8 , 0x0000d71c}, /* _pTCBCur */ 1068 {8 , 0x0000d718}, /* _pPTDACur */ 1069 {2 , 0x0000f8a0}, /* ptda_start */ 1070 {2 , 0x0000f9be}, /* ptda_environ */ 1071 {2 , 0x0000fec8}, /* ptda_ptdasem */ 1072 {2 , 0x0000ffaa}, /* ptda_module */ 1073 {2 , 0x0000f9c0}, /* ptda_pBeginLIBPATH */ 1074 {8 , 0x0000f1f8}, /* _ldrpFileNameBuf */ 1075 {13, 0x00050c60}, /* SecPathFromSFN */ 81 1076 } 82 1077 }, 83 1078 { /* 8255RS.SYM */ 84 8255, 'R', TYPE_SMP, 15,1079 8255, KF_SMP, 15, 85 1080 { 86 1081 {14, 0x0000b434}, /* _ldrRead */ … … 98 1093 {14, 0x00026624}, /* _VMGetOwner */ 99 1094 {14, 0x0004f84e}, /* g_tkExecPgm */ 1095 {14, 0x0004c099}, /* _tkStartProcess */ 100 1096 {11, 0x0000a168}, /* f_FuStrLenZ */ 101 1097 {11, 0x0000a0e8}, /* f_FuStrLen */ 102 1098 {11, 0x0000a311}, /* f_FuBuff */ 1099 {14, 0x0002527b}, /* _VMObjHandleInfo */ 1100 {14, 0x00050240}, /* _ldrASMpMTEFromHandle */ 1101 {14, 0x00045aba}, /* _ldrOpenPath */ 1102 {14, 0x00042324}, /* _LDRClearSem */ 1103 {14, 0x0004b762}, /* _ldrFindModule */ 1104 {14, 0x0000ca44}, /* _KSEMRequestMutex */ 1105 {14, 0x0000cad7}, /* _KSEMReleaseMutex */ 1106 {14, 0x0000cb02}, /* _KSEMQueryMutex */ 1107 {14, 0x0000cd17}, /* _KSEMInit */ 1108 {9 , 0x0000d0b4}, /* _LdrSem */ 1109 {9 , 0x0000b64c}, /* _LDRLibPath */ 1110 {14, 0x0003242f}, /* _TKSuBuff */ 1111 {14, 0x00031fc4}, /* _TKFuBuff */ 1112 {14, 0x0003218e}, /* _TKFuBufLen */ 1113 {14, 0x00042370}, /* _ldrValidateMteHandle */ 1114 {0 , 0x00000b44}, /* _pTCBCur */ 1115 {0 , 0x00000b40}, /* _pPTDACur */ 1116 {3 , 0x0000f8cc}, /* ptda_start */ 1117 {3 , 0x0000f9da}, /* ptda_environ */ 1118 {3 , 0x0000fe94}, /* ptda_ptdasem */ 1119 {3 , 0x0000ffa2}, /* ptda_module */ 1120 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1121 {9 , 0x0000ce7c}, /* _ldrpFileNameBuf */ 1122 {13, 0xffffffff}, /* SecPathFromSFN */ 103 1123 } 104 1124 }, 105 1125 { /* 8255RU.SYM */ 106 8255, 'R', TYPE_UNI, 13,1126 8255, KF_UNI, 13, 107 1127 { 108 1128 {12, 0x0000932c}, /* _ldrRead */ … … 120 1140 {12, 0x0001ccde}, /* _VMGetOwner */ 121 1141 {12, 0x0004265e}, /* g_tkExecPgm */ 122 {9, 0x0000e124}, /* f_FuStrLenZ */ 123 {9, 0x0000e0da}, /* f_FuStrLen */ 124 {9, 0x0000e218}, /* f_FuBuff */ 125 } 126 }, 1142 {12, 0x0003e377}, /* _tkStartProcess */ 1143 {9 , 0x0000e124}, /* f_FuStrLenZ */ 1144 {9 , 0x0000e0da}, /* f_FuStrLen */ 1145 {9 , 0x0000e218}, /* f_FuBuff */ 1146 {12, 0x0001c048}, /* _VMObjHandleInfo */ 1147 {12, 0x00043010}, /* _ldrASMpMTEFromHandle */ 1148 {12, 0x0003a283}, /* _ldrOpenPath */ 1149 {12, 0x00036cc8}, /* _LDRClearSem */ 1150 {12, 0x0003ef41}, /* _ldrFindModule */ 1151 {12, 0x0000a6b0}, /* _KSEMRequestMutex */ 1152 {12, 0x0000a743}, /* _KSEMReleaseMutex */ 1153 {12, 0x0000a76e}, /* _KSEMQueryMutex */ 1154 {12, 0x0000a983}, /* _KSEMInit */ 1155 {8 , 0x0000c7dc}, /* _LdrSem */ 1156 {8 , 0x00009c60}, /* _LDRLibPath */ 1157 {12, 0x00027845}, /* _TKSuBuff */ 1158 {12, 0x0002747b}, /* _TKFuBuff */ 1159 {12, 0x00027605}, /* _TKFuBufLen */ 1160 {12, 0x00036d04}, /* _ldrValidateMteHandle */ 1161 {8 , 0x000070b8}, /* _pTCBCur */ 1162 {8 , 0x000070b4}, /* _pPTDACur */ 1163 {2 , 0x0000f9a8}, /* ptda_start */ 1164 {2 , 0x0000fa4e}, /* ptda_environ */ 1165 {2 , 0x0000fea8}, /* ptda_ptdasem */ 1166 {2 , 0x0000ffaa}, /* ptda_module */ 1167 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 1168 {8 , 0x0000bb70}, /* _ldrpFileNameBuf */ 1169 {12, 0x00032ff3}, /* SecPathFromSFN */ 1170 } 1171 }, 1172 #ifdef ALLKERNELS 1173 { /* 8256AS.SYM */ 1174 8256, KF_SMP | KF_ALLSTRICT, 17, 1175 { 1176 {16, 0x0000c628}, /* _ldrRead */ 1177 {16, 0x00057294}, /* _ldrOpen */ 1178 {16, 0x00057db0}, /* _ldrClose */ 1179 {16, 0x00057e00}, /* _LDRQAppType */ 1180 {16, 0x00055584}, /* _ldrEnum32bitRelRecs */ 1181 {16, 0x00005538}, /* _IOSftOpen */ 1182 {16, 0x00005ac4}, /* _IOSftClose */ 1183 {16, 0x00005b7c}, /* _IOSftTransPath */ 1184 {16, 0x00005808}, /* _IOSftReadAt */ 1185 {16, 0x000059d4}, /* _IOSftWriteAt */ 1186 {16, 0x00005cb4}, /* _SftFileSize */ 1187 {16, 0x000528e4}, /* _VMAllocMem */ 1188 {16, 0x0002e6c6}, /* _VMGetOwner */ 1189 {16, 0x00062590}, /* g_tkExecPgm */ 1190 {16, 0x0005e418}, /* _tkStartProcess */ 1191 {13, 0x0000a830}, /* f_FuStrLenZ */ 1192 {13, 0x0000a7b0}, /* f_FuStrLen */ 1193 {13, 0x0000a9fc}, /* f_FuBuff */ 1194 {16, 0x0002ceef}, /* _VMObjHandleInfo */ 1195 {16, 0x00063058}, /* _ldrASMpMTEFromHandle */ 1196 {16, 0x0005752e}, /* _ldrOpenPath */ 1197 {16, 0x0005357c}, /* _LDRClearSem */ 1198 {16, 0x0005da41}, /* _ldrFindModule */ 1199 {16, 0x0000e2e8}, /* _KSEMRequestMutex */ 1200 {16, 0x0000e3fc}, /* _KSEMReleaseMutex */ 1201 {16, 0x0000e45c}, /* _KSEMQueryMutex */ 1202 {16, 0x0000e7e0}, /* _KSEMInit */ 1203 {11, 0x0001ae5c}, /* _LdrSem */ 1204 {11, 0x00018880}, /* _LDRLibPath */ 1205 {16, 0x0003d458}, /* _TKSuBuff */ 1206 {16, 0x0003cfa7}, /* _TKFuBuff */ 1207 {16, 0x0003d1b3}, /* _TKFuBufLen */ 1208 {16, 0x00053614}, /* _ldrValidateMteHandle */ 1209 {0 , 0x00000b44}, /* _pTCBCur */ 1210 {0 , 0x00000b40}, /* _pPTDACur */ 1211 {5 , 0x0000f8c0}, /* ptda_start */ 1212 {5 , 0x0000f9ce}, /* ptda_environ */ 1213 {5 , 0x0000fe88}, /* ptda_ptdasem */ 1214 {5 , 0x0000ffa2}, /* ptda_module */ 1215 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 1216 {11, 0x0001aa4c}, /* _ldrpFileNameBuf */ 1217 {12, 0xffffffff}, /* SecPathFromSFN */ 1218 } 1219 }, 1220 #endif 1221 #ifdef ALLKERNELS 1222 { /* 8256HS.SYM */ 1223 8256, KF_SMP | KF_HALFSTRICT, 17, 1224 { 1225 {16, 0x0000b50c}, /* _ldrRead */ 1226 {16, 0x00047adc}, /* _ldrOpen */ 1227 {16, 0x000484d8}, /* _ldrClose */ 1228 {16, 0x00048528}, /* _LDRQAppType */ 1229 {16, 0x00046018}, /* _ldrEnum32bitRelRecs */ 1230 {16, 0x00004a58}, /* _IOSftOpen */ 1231 {16, 0x00004fd6}, /* _IOSftClose */ 1232 {16, 0x0000508d}, /* _IOSftTransPath */ 1233 {16, 0x00004d1e}, /* _IOSftReadAt */ 1234 {16, 0x00004ee7}, /* _IOSftWriteAt */ 1235 {16, 0x000051b7}, /* _SftFileSize */ 1236 {16, 0x00043c0c}, /* _VMAllocMem */ 1237 {16, 0x00027cc4}, /* _VMGetOwner */ 1238 {16, 0x00051bca}, /* g_tkExecPgm */ 1239 {16, 0x0004e335}, /* _tkStartProcess */ 1240 {13, 0x0000a168}, /* f_FuStrLenZ */ 1241 {13, 0x0000a0e8}, /* f_FuStrLen */ 1242 {13, 0x0000a311}, /* f_FuBuff */ 1243 {16, 0x0002691b}, /* _VMObjHandleInfo */ 1244 {16, 0x000525bc}, /* _ldrASMpMTEFromHandle */ 1245 {16, 0x00047d5e}, /* _ldrOpenPath */ 1246 {16, 0x000445cc}, /* _LDRClearSem */ 1247 {16, 0x0004d9fe}, /* _ldrFindModule */ 1248 {16, 0x0000cc4c}, /* _KSEMRequestMutex */ 1249 {16, 0x0000cd23}, /* _KSEMReleaseMutex */ 1250 {16, 0x0000cd4e}, /* _KSEMQueryMutex */ 1251 {16, 0x0000cfee}, /* _KSEMInit */ 1252 {11, 0x0000d644}, /* _LdrSem */ 1253 {11, 0x0000bbd4}, /* _LDRLibPath */ 1254 {16, 0x00033acf}, /* _TKSuBuff */ 1255 {16, 0x00033664}, /* _TKFuBuff */ 1256 {16, 0x0003382e}, /* _TKFuBufLen */ 1257 {16, 0x00044618}, /* _ldrValidateMteHandle */ 1258 {0 , 0x00000b44}, /* _pTCBCur */ 1259 {0 , 0x00000b40}, /* _pPTDACur */ 1260 {5 , 0x0000f8cc}, /* ptda_start */ 1261 {5 , 0x0000f9da}, /* ptda_environ */ 1262 {5 , 0x0000fe94}, /* ptda_ptdasem */ 1263 {5 , 0x0000ffa2}, /* ptda_module */ 1264 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1265 {11, 0x0000d40c}, /* _ldrpFileNameBuf */ 1266 {12, 0xffffffff}, /* SecPathFromSFN */ 1267 } 1268 }, 1269 #endif 127 1270 { /* 8256RS.SYM */ 128 8256, 'R', TYPE_SMP, 15, 1271 8256, KF_SMP, 15, 1272 { 1273 {14, 0x0000b434}, /* _ldrRead */ 1274 {14, 0x00045838}, /* _ldrOpen */ 1275 {14, 0x00046234}, /* _ldrClose */ 1276 {14, 0x00046284}, /* _LDRQAppType */ 1277 {14, 0x00043d70}, /* _ldrEnum32bitRelRecs */ 1278 {14, 0x000049d4}, /* _IOSftOpen */ 1279 {14, 0x00004f52}, /* _IOSftClose */ 1280 {14, 0x00005009}, /* _IOSftTransPath */ 1281 {14, 0x00004c9a}, /* _IOSftReadAt */ 1282 {14, 0x00004e63}, /* _IOSftWriteAt */ 1283 {14, 0x00005133}, /* _SftFileSize */ 1284 {14, 0x00041964}, /* _VMAllocMem */ 1285 {14, 0x00026624}, /* _VMGetOwner */ 1286 {14, 0x0004f84e}, /* g_tkExecPgm */ 1287 {14, 0x0004c099}, /* _tkStartProcess */ 1288 {11, 0x0000a168}, /* f_FuStrLenZ */ 1289 {11, 0x0000a0e8}, /* f_FuStrLen */ 1290 {11, 0x0000a311}, /* f_FuBuff */ 1291 {14, 0x0002527b}, /* _VMObjHandleInfo */ 1292 {14, 0x00050240}, /* _ldrASMpMTEFromHandle */ 1293 {14, 0x00045aba}, /* _ldrOpenPath */ 1294 {14, 0x00042324}, /* _LDRClearSem */ 1295 {14, 0x0004b762}, /* _ldrFindModule */ 1296 {14, 0x0000ca44}, /* _KSEMRequestMutex */ 1297 {14, 0x0000cad7}, /* _KSEMReleaseMutex */ 1298 {14, 0x0000cb02}, /* _KSEMQueryMutex */ 1299 {14, 0x0000cd17}, /* _KSEMInit */ 1300 {9 , 0x0000d0b4}, /* _LdrSem */ 1301 {9 , 0x0000b64c}, /* _LDRLibPath */ 1302 {14, 0x0003242f}, /* _TKSuBuff */ 1303 {14, 0x00031fc4}, /* _TKFuBuff */ 1304 {14, 0x0003218e}, /* _TKFuBufLen */ 1305 {14, 0x00042370}, /* _ldrValidateMteHandle */ 1306 {0 , 0x00000b44}, /* _pTCBCur */ 1307 {0 , 0x00000b40}, /* _pPTDACur */ 1308 {3 , 0x0000f8cc}, /* ptda_start */ 1309 {3 , 0x0000f9da}, /* ptda_environ */ 1310 {3 , 0x0000fe94}, /* ptda_ptdasem */ 1311 {3 , 0x0000ffa2}, /* ptda_module */ 1312 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1313 {9 , 0x0000ce7c}, /* _ldrpFileNameBuf */ 1314 {12, 0xffffffff}, /* SecPathFromSFN */ 1315 } 1316 }, 1317 #ifdef ALLKERNELS 1318 { /* 8257AS.SYM */ 1319 8257, KF_SMP | KF_ALLSTRICT, 17, 1320 { 1321 {16, 0x0000c628}, /* _ldrRead */ 1322 {16, 0x000574b4}, /* _ldrOpen */ 1323 {16, 0x00057fd0}, /* _ldrClose */ 1324 {16, 0x00058020}, /* _LDRQAppType */ 1325 {16, 0x0005579c}, /* _ldrEnum32bitRelRecs */ 1326 {16, 0x00005538}, /* _IOSftOpen */ 1327 {16, 0x00005ac4}, /* _IOSftClose */ 1328 {16, 0x00005b7c}, /* _IOSftTransPath */ 1329 {16, 0x00005808}, /* _IOSftReadAt */ 1330 {16, 0x000059d4}, /* _IOSftWriteAt */ 1331 {16, 0x00005cb4}, /* _SftFileSize */ 1332 {16, 0x00052afc}, /* _VMAllocMem */ 1333 {16, 0x0002e896}, /* _VMGetOwner */ 1334 {16, 0x000628d4}, /* g_tkExecPgm */ 1335 {16, 0x0005e75c}, /* _tkStartProcess */ 1336 {13, 0x0000a830}, /* f_FuStrLenZ */ 1337 {13, 0x0000a7b0}, /* f_FuStrLen */ 1338 {13, 0x0000a9fc}, /* f_FuBuff */ 1339 {16, 0x0002d0bf}, /* _VMObjHandleInfo */ 1340 {16, 0x0006339c}, /* _ldrASMpMTEFromHandle */ 1341 {16, 0x0005774e}, /* _ldrOpenPath */ 1342 {16, 0x00053794}, /* _LDRClearSem */ 1343 {16, 0x0005dd85}, /* _ldrFindModule */ 1344 {16, 0x0000e3a8}, /* _KSEMRequestMutex */ 1345 {16, 0x0000e4bc}, /* _KSEMReleaseMutex */ 1346 {16, 0x0000e51c}, /* _KSEMQueryMutex */ 1347 {16, 0x0000e8a0}, /* _KSEMInit */ 1348 {11, 0x0001ae5c}, /* _LdrSem */ 1349 {11, 0x00018880}, /* _LDRLibPath */ 1350 {16, 0x0003d628}, /* _TKSuBuff */ 1351 {16, 0x0003d177}, /* _TKFuBuff */ 1352 {16, 0x0003d383}, /* _TKFuBufLen */ 1353 {16, 0x0005382c}, /* _ldrValidateMteHandle */ 1354 {0 , 0x00000b44}, /* _pTCBCur */ 1355 {0 , 0x00000b40}, /* _pPTDACur */ 1356 {5 , 0x0000f8c0}, /* ptda_start */ 1357 {5 , 0x0000f9ce}, /* ptda_environ */ 1358 {5 , 0x0000fe88}, /* ptda_ptdasem */ 1359 {5 , 0x0000ffa2}, /* ptda_module */ 1360 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 1361 {11, 0x0001aa4c}, /* _ldrpFileNameBuf */ 1362 {12, 0xffffffff}, /* SecPathFromSFN */ 1363 } 1364 }, 1365 #endif 1366 #ifdef ALLKERNELS 1367 { /* 8257HS.SYM */ 1368 8257, KF_SMP | KF_HALFSTRICT, 17, 1369 { 1370 {16, 0x0000b50c}, /* _ldrRead */ 1371 {16, 0x00047cf4}, /* _ldrOpen */ 1372 {16, 0x000486f0}, /* _ldrClose */ 1373 {16, 0x00048740}, /* _LDRQAppType */ 1374 {16, 0x0004622c}, /* _ldrEnum32bitRelRecs */ 1375 {16, 0x00004a58}, /* _IOSftOpen */ 1376 {16, 0x00004fd6}, /* _IOSftClose */ 1377 {16, 0x0000508d}, /* _IOSftTransPath */ 1378 {16, 0x00004d1e}, /* _IOSftReadAt */ 1379 {16, 0x00004ee7}, /* _IOSftWriteAt */ 1380 {16, 0x000051b7}, /* _SftFileSize */ 1381 {16, 0x00043e20}, /* _VMAllocMem */ 1382 {16, 0x00027ea0}, /* _VMGetOwner */ 1383 {16, 0x00051eb6}, /* g_tkExecPgm */ 1384 {16, 0x0004e621}, /* _tkStartProcess */ 1385 {13, 0x0000a168}, /* f_FuStrLenZ */ 1386 {13, 0x0000a0e8}, /* f_FuStrLen */ 1387 {13, 0x0000a311}, /* f_FuBuff */ 1388 {16, 0x00026af7}, /* _VMObjHandleInfo */ 1389 {16, 0x000528a8}, /* _ldrASMpMTEFromHandle */ 1390 {16, 0x00047f76}, /* _ldrOpenPath */ 1391 {16, 0x000447e0}, /* _LDRClearSem */ 1392 {16, 0x0004dcea}, /* _ldrFindModule */ 1393 {16, 0x0000cd0c}, /* _KSEMRequestMutex */ 1394 {16, 0x0000cde3}, /* _KSEMReleaseMutex */ 1395 {16, 0x0000ce0e}, /* _KSEMQueryMutex */ 1396 {16, 0x0000d0ae}, /* _KSEMInit */ 1397 {11, 0x0000d644}, /* _LdrSem */ 1398 {11, 0x0000bbd4}, /* _LDRLibPath */ 1399 {16, 0x00033cab}, /* _TKSuBuff */ 1400 {16, 0x00033840}, /* _TKFuBuff */ 1401 {16, 0x00033a0a}, /* _TKFuBufLen */ 1402 {16, 0x0004482c}, /* _ldrValidateMteHandle */ 1403 {0 , 0x00000b44}, /* _pTCBCur */ 1404 {0 , 0x00000b40}, /* _pPTDACur */ 1405 {5 , 0x0000f8cc}, /* ptda_start */ 1406 {5 , 0x0000f9da}, /* ptda_environ */ 1407 {5 , 0x0000fe94}, /* ptda_ptdasem */ 1408 {5 , 0x0000ffa2}, /* ptda_module */ 1409 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1410 {11, 0x0000d40c}, /* _ldrpFileNameBuf */ 1411 {12, 0xffffffff}, /* SecPathFromSFN */ 1412 } 1413 }, 1414 #endif 1415 { /* 8257RS.SYM */ 1416 8257, KF_SMP, 15, 129 1417 { 130 1418 {14, 0x0000b434}, /* _ldrRead */ … … 142 1430 {14, 0x00026800}, /* _VMGetOwner */ 143 1431 {14, 0x0004fb4a}, /* g_tkExecPgm */ 1432 {14, 0x0004c395}, /* _tkStartProcess */ 144 1433 {11, 0x0000a168}, /* f_FuStrLenZ */ 145 1434 {11, 0x0000a0e8}, /* f_FuStrLen */ 146 1435 {11, 0x0000a311}, /* f_FuBuff */ 147 } 148 }, 149 { /* 8256RU.SYM */ 150 8256, 'R', TYPE_UNI, 13, 151 { 152 {12, 0x0000932c}, /* _ldrRead */ 153 {12, 0x00039ff8}, /* _ldrOpen */ 154 {12, 0x0003a87c}, /* _ldrClose */ 155 {12, 0x0003a8cc}, /* _LDRQAppType */ 156 {12, 0x00038218}, /* _ldrEnum32bitRelRecs */ 157 {12, 0x000034a0}, /* _IOSftOpen */ 158 {12, 0x0000390c}, /* _IOSftClose */ 159 {12, 0x000039a1}, /* _IOSftTransPath */ 160 {12, 0x0000375a}, /* _IOSftReadAt */ 161 {12, 0x00003761}, /* _IOSftWriteAt */ 162 {12, 0x00003aba}, /* _SftFileSize */ 163 {12, 0x00036574}, /* _VMAllocMem */ 164 {12, 0x0001ccde}, /* _VMGetOwner */ 165 {12, 0x00042632}, /* g_tkExecPgm */ 166 {9, 0x0000e124}, /* f_FuStrLenZ */ 167 {9, 0x0000e0da}, /* f_FuStrLen */ 168 {9, 0x0000e218}, /* f_FuBuff */ 169 } 170 }, 171 { /* 8257RS.SYM */ 172 8257, 'R', TYPE_SMP, 15, 1436 {14, 0x00025457}, /* _VMObjHandleInfo */ 1437 {14, 0x0005053c}, /* _ldrASMpMTEFromHandle */ 1438 {14, 0x00045cd2}, /* _ldrOpenPath */ 1439 {14, 0x00042538}, /* _LDRClearSem */ 1440 {14, 0x0004ba5e}, /* _ldrFindModule */ 1441 {14, 0x0000cb04}, /* _KSEMRequestMutex */ 1442 {14, 0x0000cb97}, /* _KSEMReleaseMutex */ 1443 {14, 0x0000cbc2}, /* _KSEMQueryMutex */ 1444 {14, 0x0000cdd7}, /* _KSEMInit */ 1445 {9 , 0x0000d0b4}, /* _LdrSem */ 1446 {9 , 0x0000b64c}, /* _LDRLibPath */ 1447 {14, 0x0003260b}, /* _TKSuBuff */ 1448 {14, 0x000321a0}, /* _TKFuBuff */ 1449 {14, 0x0003236a}, /* _TKFuBufLen */ 1450 {14, 0x00042584}, /* _ldrValidateMteHandle */ 1451 {0 , 0x00000b44}, /* _pTCBCur */ 1452 {0 , 0x00000b40}, /* _pPTDACur */ 1453 {3 , 0x0000f8cc}, /* ptda_start */ 1454 {3 , 0x0000f9da}, /* ptda_environ */ 1455 {3 , 0x0000fe94}, /* ptda_ptdasem */ 1456 {3 , 0x0000ffa2}, /* ptda_module */ 1457 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1458 {9 , 0x0000ce7c}, /* _ldrpFileNameBuf */ 1459 {12, 0xffffffff}, /* SecPathFromSFN */ 1460 } 1461 }, 1462 #ifdef ALLKERNELS 1463 { /* 8258AS.SYM */ 1464 8258, KF_SMP | KF_ALLSTRICT, 17, 1465 { 1466 {16, 0x0000c628}, /* _ldrRead */ 1467 {16, 0x00057510}, /* _ldrOpen */ 1468 {16, 0x0005802c}, /* _ldrClose */ 1469 {16, 0x0005807c}, /* _LDRQAppType */ 1470 {16, 0x000557f8}, /* _ldrEnum32bitRelRecs */ 1471 {16, 0x00005538}, /* _IOSftOpen */ 1472 {16, 0x00005ac4}, /* _IOSftClose */ 1473 {16, 0x00005b7c}, /* _IOSftTransPath */ 1474 {16, 0x00005808}, /* _IOSftReadAt */ 1475 {16, 0x000059d4}, /* _IOSftWriteAt */ 1476 {16, 0x00005cb4}, /* _SftFileSize */ 1477 {16, 0x00052b54}, /* _VMAllocMem */ 1478 {16, 0x0002e8b2}, /* _VMGetOwner */ 1479 {16, 0x000629a8}, /* g_tkExecPgm */ 1480 {16, 0x0005e7fc}, /* _tkStartProcess */ 1481 {13, 0x0000a830}, /* f_FuStrLenZ */ 1482 {13, 0x0000a7b0}, /* f_FuStrLen */ 1483 {13, 0x0000a9fc}, /* f_FuBuff */ 1484 {16, 0x0002d0db}, /* _VMObjHandleInfo */ 1485 {16, 0x00063470}, /* _ldrASMpMTEFromHandle */ 1486 {16, 0x000577aa}, /* _ldrOpenPath */ 1487 {16, 0x000537f0}, /* _LDRClearSem */ 1488 {16, 0x0005de29}, /* _ldrFindModule */ 1489 {16, 0x0000e3a8}, /* _KSEMRequestMutex */ 1490 {16, 0x0000e4bc}, /* _KSEMReleaseMutex */ 1491 {16, 0x0000e51c}, /* _KSEMQueryMutex */ 1492 {16, 0x0000e8a0}, /* _KSEMInit */ 1493 {11, 0x0001ae5c}, /* _LdrSem */ 1494 {11, 0x00018880}, /* _LDRLibPath */ 1495 {16, 0x0003d674}, /* _TKSuBuff */ 1496 {16, 0x0003d1c3}, /* _TKFuBuff */ 1497 {16, 0x0003d3cf}, /* _TKFuBufLen */ 1498 {16, 0x00053888}, /* _ldrValidateMteHandle */ 1499 {0 , 0x00000b44}, /* _pTCBCur */ 1500 {0 , 0x00000b40}, /* _pPTDACur */ 1501 {5 , 0x0000f8c0}, /* ptda_start */ 1502 {5 , 0x0000f9ce}, /* ptda_environ */ 1503 {5 , 0x0000fe88}, /* ptda_ptdasem */ 1504 {5 , 0x0000ffa2}, /* ptda_module */ 1505 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 1506 {11, 0x0001aa4c}, /* _ldrpFileNameBuf */ 1507 {12, 0xffffffff}, /* SecPathFromSFN */ 1508 } 1509 }, 1510 #endif 1511 #ifdef ALLKERNELS 1512 { /* 8258AU.SYM */ 1513 8258, KF_UNI | KF_ALLSTRICT, 16, 1514 { 1515 {15, 0x0000a1fc}, /* _ldrRead */ 1516 {15, 0x0004a160}, /* _ldrOpen */ 1517 {15, 0x0004aaf8}, /* _ldrClose */ 1518 {15, 0x0004ab48}, /* _LDRQAppType */ 1519 {15, 0x00048088}, /* _ldrEnum32bitRelRecs */ 1520 {15, 0x000044a0}, /* _IOSftOpen */ 1521 {15, 0x00004918}, /* _IOSftClose */ 1522 {15, 0x000049b0}, /* _IOSftTransPath */ 1523 {15, 0x00004764}, /* _IOSftReadAt */ 1524 {15, 0x0000476b}, /* _IOSftWriteAt */ 1525 {15, 0x00004ad8}, /* _SftFileSize */ 1526 {15, 0x00045a08}, /* _VMAllocMem */ 1527 {15, 0x00023626}, /* _VMGetOwner */ 1528 {15, 0x00053a84}, /* g_tkExecPgm */ 1529 {15, 0x000501f4}, /* _tkStartProcess */ 1530 {11, 0x0000e9c8}, /* f_FuStrLenZ */ 1531 {11, 0x0000e97c}, /* f_FuStrLen */ 1532 {11, 0x0000eae0}, /* f_FuBuff */ 1533 {15, 0x00022570}, /* _VMObjHandleInfo */ 1534 {15, 0x0005451c}, /* _ldrASMpMTEFromHandle */ 1535 {15, 0x0004a3eb}, /* _ldrOpenPath */ 1536 {15, 0x000464bc}, /* _LDRClearSem */ 1537 {15, 0x0004f8f5}, /* _ldrFindModule */ 1538 {15, 0x0000bb6c}, /* _KSEMRequestMutex */ 1539 {15, 0x0000bc80}, /* _KSEMReleaseMutex */ 1540 {15, 0x0000bce0}, /* _KSEMQueryMutex */ 1541 {15, 0x0000c064}, /* _KSEMInit */ 1542 {10, 0x0002a1e8}, /* _LdrSem */ 1543 {10, 0x000269e4}, /* _LDRLibPath */ 1544 {15, 0x000315ac}, /* _TKSuBuff */ 1545 {15, 0x0003119e}, /* _TKFuBuff */ 1546 {15, 0x0003136a}, /* _TKFuBufLen */ 1547 {15, 0x00046544}, /* _ldrValidateMteHandle */ 1548 {10, 0x0000b758}, /* _pTCBCur */ 1549 {10, 0x0000b754}, /* _pPTDACur */ 1550 {4 , 0x0000f9a0}, /* ptda_start */ 1551 {4 , 0x0000fa46}, /* ptda_environ */ 1552 {4 , 0x0000fea0}, /* ptda_ptdasem */ 1553 {4 , 0x0000ffaa}, /* ptda_module */ 1554 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 1555 {10, 0x000293a0}, /* _ldrpFileNameBuf */ 1556 {15, 0x000421eb}, /* SecPathFromSFN */ 1557 } 1558 }, 1559 #endif 1560 #ifdef ALLKERNELS 1561 { /* 8258HS.SYM */ 1562 8258, KF_SMP | KF_HALFSTRICT, 17, 1563 { 1564 {16, 0x0000b50c}, /* _ldrRead */ 1565 {16, 0x00047c50}, /* _ldrOpen */ 1566 {16, 0x00048648}, /* _ldrClose */ 1567 {16, 0x00048698}, /* _LDRQAppType */ 1568 {16, 0x00046184}, /* _ldrEnum32bitRelRecs */ 1569 {16, 0x00004a58}, /* _IOSftOpen */ 1570 {16, 0x00004fd6}, /* _IOSftClose */ 1571 {16, 0x0000508d}, /* _IOSftTransPath */ 1572 {16, 0x00004d1e}, /* _IOSftReadAt */ 1573 {16, 0x00004ee7}, /* _IOSftWriteAt */ 1574 {16, 0x000051b7}, /* _SftFileSize */ 1575 {16, 0x00043d74}, /* _VMAllocMem */ 1576 {16, 0x00027da0}, /* _VMGetOwner */ 1577 {16, 0x00051e16}, /* g_tkExecPgm */ 1578 {16, 0x0004e591}, /* _tkStartProcess */ 1579 {13, 0x0000a168}, /* f_FuStrLenZ */ 1580 {13, 0x0000a0e8}, /* f_FuStrLen */ 1581 {13, 0x0000a311}, /* f_FuBuff */ 1582 {16, 0x000269fb}, /* _VMObjHandleInfo */ 1583 {16, 0x00052808}, /* _ldrASMpMTEFromHandle */ 1584 {16, 0x00047ed2}, /* _ldrOpenPath */ 1585 {16, 0x00044738}, /* _LDRClearSem */ 1586 {16, 0x0004dc5e}, /* _ldrFindModule */ 1587 {16, 0x0000cd0c}, /* _KSEMRequestMutex */ 1588 {16, 0x0000cde3}, /* _KSEMReleaseMutex */ 1589 {16, 0x0000ce0e}, /* _KSEMQueryMutex */ 1590 {16, 0x0000d0ae}, /* _KSEMInit */ 1591 {11, 0x0000d644}, /* _LdrSem */ 1592 {11, 0x0000bbd4}, /* _LDRLibPath */ 1593 {16, 0x00033bcb}, /* _TKSuBuff */ 1594 {16, 0x00033760}, /* _TKFuBuff */ 1595 {16, 0x0003392a}, /* _TKFuBufLen */ 1596 {16, 0x00044784}, /* _ldrValidateMteHandle */ 1597 {0 , 0x00000b44}, /* _pTCBCur */ 1598 {0 , 0x00000b40}, /* _pPTDACur */ 1599 {5 , 0x0000f8cc}, /* ptda_start */ 1600 {5 , 0x0000f9da}, /* ptda_environ */ 1601 {5 , 0x0000fe94}, /* ptda_ptdasem */ 1602 {5 , 0x0000ffa2}, /* ptda_module */ 1603 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1604 {11, 0x0000d40c}, /* _ldrpFileNameBuf */ 1605 {15, 0xffffffff}, /* SecPathFromSFN */ 1606 } 1607 }, 1608 #endif 1609 #ifdef ALLKERNELS 1610 { /* 8258HU.SYM */ 1611 8258, KF_UNI | KF_HALFSTRICT, 16, 1612 { 1613 {15, 0x00009238}, /* _ldrRead */ 1614 {15, 0x0003be78}, /* _ldrOpen */ 1615 {15, 0x0003c700}, /* _ldrClose */ 1616 {15, 0x0003c750}, /* _LDRQAppType */ 1617 {15, 0x0003a074}, /* _ldrEnum32bitRelRecs */ 1618 {15, 0x00003a24}, /* _IOSftOpen */ 1619 {15, 0x00003e90}, /* _IOSftClose */ 1620 {15, 0x00003f25}, /* _IOSftTransPath */ 1621 {15, 0x00003cde}, /* _IOSftReadAt */ 1622 {15, 0x00003ce5}, /* _IOSftWriteAt */ 1623 {15, 0x0000403e}, /* _SftFileSize */ 1624 {15, 0x00038340}, /* _VMAllocMem */ 1625 {15, 0x0001dfd2}, /* _VMGetOwner */ 1626 {15, 0x000445e6}, /* g_tkExecPgm */ 1627 {15, 0x000415b7}, /* _tkStartProcess */ 1628 {11, 0x0000d794}, /* f_FuStrLenZ */ 1629 {11, 0x0000d74a}, /* f_FuStrLen */ 1630 {11, 0x0000d888}, /* f_FuBuff */ 1631 {15, 0x0001d334}, /* _VMObjHandleInfo */ 1632 {15, 0x00044fac}, /* _ldrASMpMTEFromHandle */ 1633 {15, 0x0003c0ef}, /* _ldrOpenPath */ 1634 {15, 0x00038a88}, /* _LDRClearSem */ 1635 {15, 0x00040d59}, /* _ldrFindModule */ 1636 {15, 0x0000a6ac}, /* _KSEMRequestMutex */ 1637 {15, 0x0000a783}, /* _KSEMReleaseMutex */ 1638 {15, 0x0000a7ae}, /* _KSEMQueryMutex */ 1639 {15, 0x0000aa4e}, /* _KSEMInit */ 1640 {10, 0x0001c9ec}, /* _LdrSem */ 1641 {10, 0x00019e58}, /* _LDRLibPath */ 1642 {15, 0x00028c95}, /* _TKSuBuff */ 1643 {15, 0x000288cb}, /* _TKFuBuff */ 1644 {15, 0x00028a55}, /* _TKFuBufLen */ 1645 {15, 0x00038ac4}, /* _ldrValidateMteHandle */ 1646 {10, 0x000070bc}, /* _pTCBCur */ 1647 {10, 0x000070b8}, /* _pPTDACur */ 1648 {4 , 0x0000f9a8}, /* ptda_start */ 1649 {4 , 0x0000fa4e}, /* ptda_environ */ 1650 {4 , 0x0000fea8}, /* ptda_ptdasem */ 1651 {4 , 0x0000ffaa}, /* ptda_module */ 1652 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 1653 {10, 0x0001bd7c}, /* _ldrpFileNameBuf */ 1654 {15, 0x000350e7}, /* SecPathFromSFN */ 1655 } 1656 }, 1657 #endif 1658 { /* 8258RS.SYM */ 1659 8258, KF_SMP, 15, 173 1660 { 174 1661 {14, 0x0000b434}, /* _ldrRead */ … … 186 1673 {14, 0x000266f8}, /* _VMGetOwner */ 187 1674 {14, 0x0004fa96}, /* g_tkExecPgm */ 1675 {14, 0x0004c2f9}, /* _tkStartProcess */ 188 1676 {11, 0x0000a168}, /* f_FuStrLenZ */ 189 1677 {11, 0x0000a0e8}, /* f_FuStrLen */ 190 1678 {11, 0x0000a311}, /* f_FuBuff */ 191 } 192 }, 193 { /* 8257RU.SYM */ 194 8257, 'R', TYPE_UNI, 13, 195 { 196 {12, 0x0000932c}, /* _ldrRead */ 197 {12, 0x00039ff0}, /* _ldrOpen */ 198 {12, 0x0003a874}, /* _ldrClose */ 199 {12, 0x0003a8c4}, /* _LDRQAppType */ 200 {12, 0x00038210}, /* _ldrEnum32bitRelRecs */ 201 {12, 0x000034a0}, /* _IOSftOpen */ 202 {12, 0x0000390c}, /* _IOSftClose */ 203 {12, 0x000039a1}, /* _IOSftTransPath */ 204 {12, 0x0000375a}, /* _IOSftReadAt */ 205 {12, 0x00003761}, /* _IOSftWriteAt */ 206 {12, 0x00003aba}, /* _SftFileSize */ 207 {12, 0x00036564}, /* _VMAllocMem */ 208 {12, 0x0001ccd6}, /* _VMGetOwner */ 209 {12, 0x0004263e}, /* g_tkExecPgm */ 210 {9, 0x0000e124}, /* f_FuStrLenZ */ 211 {9, 0x0000e0da}, /* f_FuStrLen */ 212 {9, 0x0000e218}, /* f_FuBuff */ 213 } 214 }, 215 { /* 8258RS.SYM */ 216 8258, 'R', TYPE_SMP, 15, 1679 {14, 0x00025353}, /* _VMObjHandleInfo */ 1680 {14, 0x00050488}, /* _ldrASMpMTEFromHandle */ 1681 {14, 0x00045c22}, /* _ldrOpenPath */ 1682 {14, 0x00042488}, /* _LDRClearSem */ 1683 {14, 0x0004b9c6}, /* _ldrFindModule */ 1684 {14, 0x0000cb04}, /* _KSEMRequestMutex */ 1685 {14, 0x0000cb97}, /* _KSEMReleaseMutex */ 1686 {14, 0x0000cbc2}, /* _KSEMQueryMutex */ 1687 {14, 0x0000cdd7}, /* _KSEMInit */ 1688 {9 , 0x0000d0b4}, /* _LdrSem */ 1689 {9 , 0x0000b64c}, /* _LDRLibPath */ 1690 {14, 0x00032523}, /* _TKSuBuff */ 1691 {14, 0x000320b8}, /* _TKFuBuff */ 1692 {14, 0x00032282}, /* _TKFuBufLen */ 1693 {14, 0x000424d4}, /* _ldrValidateMteHandle */ 1694 {0 , 0x00000b44}, /* _pTCBCur */ 1695 {0 , 0x00000b40}, /* _pPTDACur */ 1696 {3 , 0x0000f8cc}, /* ptda_start */ 1697 {3 , 0x0000f9da}, /* ptda_environ */ 1698 {3 , 0x0000fe94}, /* ptda_ptdasem */ 1699 {3 , 0x0000ffa2}, /* ptda_module */ 1700 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1701 {9 , 0x0000ce7c}, /* _ldrpFileNameBuf */ 1702 {15, 0xffffffff}, /* SecPathFromSFN */ 1703 } 1704 }, 1705 #ifdef ALLKERNELS 1706 { /* 8259AS.SYM */ 1707 8259, KF_SMP | KF_ALLSTRICT, 17, 1708 { 1709 {16, 0x0000d370}, /* _ldrRead */ 1710 {16, 0x000583bc}, /* _ldrOpen */ 1711 {16, 0x00058edc}, /* _ldrClose */ 1712 {16, 0x00058f2c}, /* _LDRQAppType */ 1713 {16, 0x00056674}, /* _ldrEnum32bitRelRecs */ 1714 {16, 0x00006170}, /* _IOSftOpen */ 1715 {16, 0x000066fc}, /* _IOSftClose */ 1716 {16, 0x000067b4}, /* _IOSftTransPath */ 1717 {16, 0x00006440}, /* _IOSftReadAt */ 1718 {16, 0x0000660c}, /* _IOSftWriteAt */ 1719 {16, 0x000068ec}, /* _SftFileSize */ 1720 {16, 0x000539d4}, /* _VMAllocMem */ 1721 {16, 0x0002f6e6}, /* _VMGetOwner */ 1722 {16, 0x000637b8}, /* g_tkExecPgm */ 1723 {16, 0x0005f5e8}, /* _tkStartProcess */ 1724 {13, 0x0000a68c}, /* f_FuStrLenZ */ 1725 {13, 0x0000a60c}, /* f_FuStrLen */ 1726 {13, 0x0000a854}, /* f_FuBuff */ 1727 {16, 0x0002df0b}, /* _VMObjHandleInfo */ 1728 {16, 0x00064290}, /* _ldrASMpMTEFromHandle */ 1729 {16, 0x00058656}, /* _ldrOpenPath */ 1730 {16, 0x00054670}, /* _LDRClearSem */ 1731 {16, 0x0005ec21}, /* _ldrFindModule */ 1732 {16, 0x0000f060}, /* _KSEMRequestMutex */ 1733 {16, 0x0000f174}, /* _KSEMReleaseMutex */ 1734 {16, 0x0000f1d4}, /* _KSEMQueryMutex */ 1735 {16, 0x0000f558}, /* _KSEMInit */ 1736 {11, 0x0002c45c}, /* _LdrSem */ 1737 {11, 0x00029e68}, /* _LDRLibPath */ 1738 {16, 0x0003e460}, /* _TKSuBuff */ 1739 {16, 0x0003dfaf}, /* _TKFuBuff */ 1740 {16, 0x0003e1bb}, /* _TKFuBufLen */ 1741 {16, 0x00054708}, /* _ldrValidateMteHandle */ 1742 {0 , 0x00000b34}, /* _pTCBCur */ 1743 {0 , 0x00000b30}, /* _pPTDACur */ 1744 {5 , 0x0000f8c0}, /* ptda_start */ 1745 {5 , 0x0000f9ce}, /* ptda_environ */ 1746 {5 , 0x0000fe88}, /* ptda_ptdasem */ 1747 {5 , 0x0000ffa2}, /* ptda_module */ 1748 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 1749 {11, 0x0002c048}, /* _ldrpFileNameBuf */ 1750 {15, 0xffffffff}, /* SecPathFromSFN */ 1751 } 1752 }, 1753 #endif 1754 #ifdef ALLKERNELS 1755 { /* 8259HS.SYM */ 1756 8259, KF_SMP | KF_HALFSTRICT, 17, 1757 { 1758 {16, 0x0000bee0}, /* _ldrRead */ 1759 {16, 0x000488dc}, /* _ldrOpen */ 1760 {16, 0x000492d8}, /* _ldrClose */ 1761 {16, 0x00049328}, /* _LDRQAppType */ 1762 {16, 0x00046dd4}, /* _ldrEnum32bitRelRecs */ 1763 {16, 0x00005310}, /* _IOSftOpen */ 1764 {16, 0x0000588e}, /* _IOSftClose */ 1765 {16, 0x00005945}, /* _IOSftTransPath */ 1766 {16, 0x000055d6}, /* _IOSftReadAt */ 1767 {16, 0x0000579f}, /* _IOSftWriteAt */ 1768 {16, 0x00005a6f}, /* _SftFileSize */ 1769 {16, 0x000449c4}, /* _VMAllocMem */ 1770 {16, 0x000289c2}, /* _VMGetOwner */ 1771 {16, 0x00052956}, /* g_tkExecPgm */ 1772 {16, 0x0004f1ad}, /* _tkStartProcess */ 1773 {13, 0x00009fdc}, /* f_FuStrLenZ */ 1774 {13, 0x00009f5c}, /* f_FuStrLen */ 1775 {13, 0x0000a185}, /* f_FuBuff */ 1776 {16, 0x0002761b}, /* _VMObjHandleInfo */ 1777 {16, 0x0005335c}, /* _ldrASMpMTEFromHandle */ 1778 {16, 0x00048b5e}, /* _ldrOpenPath */ 1779 {16, 0x00045388}, /* _LDRClearSem */ 1780 {16, 0x0004e886}, /* _ldrFindModule */ 1781 {16, 0x0000d650}, /* _KSEMRequestMutex */ 1782 {16, 0x0000d727}, /* _KSEMReleaseMutex */ 1783 {16, 0x0000d752}, /* _KSEMQueryMutex */ 1784 {16, 0x0000d9f2}, /* _KSEMInit */ 1785 {11, 0x0001d6c4}, /* _LdrSem */ 1786 {11, 0x0001bc40}, /* _LDRLibPath */ 1787 {16, 0x000347a7}, /* _TKSuBuff */ 1788 {16, 0x0003433c}, /* _TKFuBuff */ 1789 {16, 0x00034506}, /* _TKFuBufLen */ 1790 {16, 0x000453d4}, /* _ldrValidateMteHandle */ 1791 {0 , 0x00000b34}, /* _pTCBCur */ 1792 {0 , 0x00000b30}, /* _pPTDACur */ 1793 {5 , 0x0000f8cc}, /* ptda_start */ 1794 {5 , 0x0000f9da}, /* ptda_environ */ 1795 {5 , 0x0000fe94}, /* ptda_ptdasem */ 1796 {5 , 0x0000ffa2}, /* ptda_module */ 1797 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1798 {11, 0x0001d488}, /* _ldrpFileNameBuf */ 1799 {15, 0xffffffff}, /* SecPathFromSFN */ 1800 } 1801 }, 1802 #endif 1803 #ifdef ALLKERNELS 1804 { /* 8259HU.SYM */ 1805 8259, KF_UNI | KF_HALFSTRICT, 16, 1806 { 1807 {15, 0x000092c8}, /* _ldrRead */ 1808 {15, 0x0003bf00}, /* _ldrOpen */ 1809 {15, 0x0003c788}, /* _ldrClose */ 1810 {15, 0x0003c7d8}, /* _LDRQAppType */ 1811 {15, 0x0003a0fc}, /* _ldrEnum32bitRelRecs */ 1812 {15, 0x00003a24}, /* _IOSftOpen */ 1813 {15, 0x00003e90}, /* _IOSftClose */ 1814 {15, 0x00003f25}, /* _IOSftTransPath */ 1815 {15, 0x00003cde}, /* _IOSftReadAt */ 1816 {15, 0x00003ce5}, /* _IOSftWriteAt */ 1817 {15, 0x0000403e}, /* _SftFileSize */ 1818 {15, 0x000383c8}, /* _VMAllocMem */ 1819 {15, 0x0001e146}, /* _VMGetOwner */ 1820 {15, 0x0004466e}, /* g_tkExecPgm */ 1821 {15, 0x0004163f}, /* _tkStartProcess */ 1822 {11, 0x0000d7a4}, /* f_FuStrLenZ */ 1823 {11, 0x0000d75a}, /* f_FuStrLen */ 1824 {11, 0x0000d898}, /* f_FuBuff */ 1825 {15, 0x0001d4a8}, /* _VMObjHandleInfo */ 1826 {15, 0x00045034}, /* _ldrASMpMTEFromHandle */ 1827 {15, 0x0003c177}, /* _ldrOpenPath */ 1828 {15, 0x00038b10}, /* _LDRClearSem */ 1829 {15, 0x00040de1}, /* _ldrFindModule */ 1830 {15, 0x0000a73c}, /* _KSEMRequestMutex */ 1831 {15, 0x0000a813}, /* _KSEMReleaseMutex */ 1832 {15, 0x0000a83e}, /* _KSEMQueryMutex */ 1833 {15, 0x0000aade}, /* _KSEMInit */ 1834 {10, 0x0001c9ec}, /* _LdrSem */ 1835 {10, 0x00019e58}, /* _LDRLibPath */ 1836 {15, 0x00028e09}, /* _TKSuBuff */ 1837 {15, 0x00028a3f}, /* _TKFuBuff */ 1838 {15, 0x00028bc9}, /* _TKFuBufLen */ 1839 {15, 0x00038b4c}, /* _ldrValidateMteHandle */ 1840 {10, 0x000070bc}, /* _pTCBCur */ 1841 {10, 0x000070b8}, /* _pPTDACur */ 1842 {4 , 0x0000f9a8}, /* ptda_start */ 1843 {4 , 0x0000fa4e}, /* ptda_environ */ 1844 {4 , 0x0000fea8}, /* ptda_ptdasem */ 1845 {4 , 0x0000ffaa}, /* ptda_module */ 1846 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 1847 {10, 0x0001bd7c}, /* _ldrpFileNameBuf */ 1848 {15, 0x0003525b}, /* SecPathFromSFN */ 1849 } 1850 }, 1851 #endif 1852 { /* 8259RS.SYM */ 1853 8259, KF_SMP, 15, 217 1854 { 218 1855 {14, 0x0000bdd0}, /* _ldrRead */ … … 230 1867 {14, 0x000271aa}, /* _VMGetOwner */ 231 1868 {14, 0x0005065e}, /* g_tkExecPgm */ 1869 {14, 0x0004cdad}, /* _tkStartProcess */ 232 1870 {11, 0x00009fdc}, /* f_FuStrLenZ */ 233 1871 {11, 0x00009f5c}, /* f_FuStrLen */ 234 1872 {11, 0x0000a185}, /* f_FuBuff */ 235 } 236 }, 237 { /* 8258RU.SYM */ 238 8258, 'R', TYPE_UNI, 14, 239 { 240 {13, 0x000091a4}, /* _ldrRead */ 241 {13, 0x0003a580}, /* _ldrOpen */ 242 {13, 0x0003ae08}, /* _ldrClose */ 243 {13, 0x0003ae58}, /* _LDRQAppType */ 244 {13, 0x0003877c}, /* _ldrEnum32bitRelRecs */ 245 {13, 0x000039a4}, /* _IOSftOpen */ 246 {13, 0x00003e10}, /* _IOSftClose */ 247 {13, 0x00003ea5}, /* _IOSftTransPath */ 248 {13, 0x00003c5e}, /* _IOSftReadAt */ 249 {13, 0x00003c65}, /* _IOSftWriteAt */ 250 {13, 0x00003fbe}, /* _SftFileSize */ 251 {13, 0x00036a48}, /* _VMAllocMem */ 252 {13, 0x0001d16a}, /* _VMGetOwner */ 253 {13, 0x00042d56}, /* g_tkExecPgm */ 254 {9, 0x0000d794}, /* f_FuStrLenZ */ 255 {9, 0x0000d74a}, /* f_FuStrLen */ 256 {9, 0x0000d888}, /* f_FuBuff */ 257 } 258 }, 259 { /* 8259RS.SYM */ 260 8259, 'R', TYPE_SMP, 15, 261 { 262 {14, 0x0000bdd0}, /* _ldrRead */ 263 {14, 0x000465c0}, /* _ldrOpen */ 264 {14, 0x00046fbc}, /* _ldrClose */ 265 {14, 0x0004700c}, /* _LDRQAppType */ 266 {14, 0x00044ab8}, /* _ldrEnum32bitRelRecs */ 267 {14, 0x0000526c}, /* _IOSftOpen */ 268 {14, 0x000057ea}, /* _IOSftClose */ 269 {14, 0x000058a1}, /* _IOSftTransPath */ 270 {14, 0x00005532}, /* _IOSftReadAt */ 271 {14, 0x000056fb}, /* _IOSftWriteAt */ 272 {14, 0x000059cb}, /* _SftFileSize */ 273 {14, 0x000426a8}, /* _VMAllocMem */ 274 {14, 0x000272ae}, /* _VMGetOwner */ 275 {14, 0x00050812}, /* g_tkExecPgm */ 276 {11, 0x00009fdc}, /* f_FuStrLenZ */ 277 {11, 0x00009f5c}, /* f_FuStrLen */ 278 {11, 0x0000a185}, /* f_FuBuff */ 279 } 280 }, 281 { /* 8259RU.SYM */ 282 8259, 'R', TYPE_UNI, 14, 283 { 284 {13, 0x00009234}, /* _ldrRead */ 285 {13, 0x0003a608}, /* _ldrOpen */ 286 {13, 0x0003ae90}, /* _ldrClose */ 287 {13, 0x0003aee0}, /* _LDRQAppType */ 288 {13, 0x00038804}, /* _ldrEnum32bitRelRecs */ 289 {13, 0x000039a4}, /* _IOSftOpen */ 290 {13, 0x00003e10}, /* _IOSftClose */ 291 {13, 0x00003ea5}, /* _IOSftTransPath */ 292 {13, 0x00003c5e}, /* _IOSftReadAt */ 293 {13, 0x00003c65}, /* _IOSftWriteAt */ 294 {13, 0x00003fbe}, /* _SftFileSize */ 295 {13, 0x00036ad0}, /* _VMAllocMem */ 296 {13, 0x0001d2de}, /* _VMGetOwner */ 297 {13, 0x00042de2}, /* g_tkExecPgm */ 298 {9, 0x0000d7a4}, /* f_FuStrLenZ */ 299 {9, 0x0000d75a}, /* f_FuStrLen */ 300 {9, 0x0000d898}, /* f_FuBuff */ 301 } 302 }, 1873 {14, 0x00025e03}, /* _VMObjHandleInfo */ 1874 {14, 0x00051064}, /* _ldrASMpMTEFromHandle */ 1875 {14, 0x0004673e}, /* _ldrOpenPath */ 1876 {14, 0x00042f68}, /* _LDRClearSem */ 1877 {14, 0x0004c486}, /* _ldrFindModule */ 1878 {14, 0x0000d410}, /* _KSEMRequestMutex */ 1879 {14, 0x0000d4a3}, /* _KSEMReleaseMutex */ 1880 {14, 0x0000d4ce}, /* _KSEMQueryMutex */ 1881 {14, 0x0000d6e3}, /* _KSEMInit */ 1882 {9 , 0x0000d12c}, /* _LdrSem */ 1883 {9 , 0x0000b6b0}, /* _LDRLibPath */ 1884 {14, 0x00032f8f}, /* _TKSuBuff */ 1885 {14, 0x00032b24}, /* _TKFuBuff */ 1886 {14, 0x00032cee}, /* _TKFuBufLen */ 1887 {14, 0x00042fb4}, /* _ldrValidateMteHandle */ 1888 {0 , 0x00000b34}, /* _pTCBCur */ 1889 {0 , 0x00000b30}, /* _pPTDACur */ 1890 {3 , 0x0000f8cc}, /* ptda_start */ 1891 {3 , 0x0000f9da}, /* ptda_environ */ 1892 {3 , 0x0000fe94}, /* ptda_ptdasem */ 1893 {3 , 0x0000ffa2}, /* ptda_module */ 1894 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 1895 {9 , 0x0000cef0}, /* _ldrpFileNameBuf */ 1896 {15, 0xffffffff}, /* SecPathFromSFN */ 1897 } 1898 }, 1899 #ifdef ALLKERNELS 1900 { /* 8260AS.SYM */ 1901 8260, KF_SMP | KF_ALLSTRICT, 17, 1902 { 1903 {16, 0x0000d38c}, /* _ldrRead */ 1904 {16, 0x000587b0}, /* _ldrOpen */ 1905 {16, 0x000592d0}, /* _ldrClose */ 1906 {16, 0x00059320}, /* _LDRQAppType */ 1907 {16, 0x00056a68}, /* _ldrEnum32bitRelRecs */ 1908 {16, 0x00006180}, /* _IOSftOpen */ 1909 {16, 0x0000670c}, /* _IOSftClose */ 1910 {16, 0x000067c4}, /* _IOSftTransPath */ 1911 {16, 0x00006450}, /* _IOSftReadAt */ 1912 {16, 0x0000661c}, /* _IOSftWriteAt */ 1913 {16, 0x000068fc}, /* _SftFileSize */ 1914 {16, 0x00053dc8}, /* _VMAllocMem */ 1915 {16, 0x0002f9d2}, /* _VMGetOwner */ 1916 {16, 0x00063cf8}, /* g_tkExecPgm */ 1917 {16, 0x0005fb2c}, /* _tkStartProcess */ 1918 {13, 0x0000a618}, /* f_FuStrLenZ */ 1919 {13, 0x0000a598}, /* f_FuStrLen */ 1920 {13, 0x0000a7e0}, /* f_FuBuff */ 1921 {16, 0x0002e1f7}, /* _VMObjHandleInfo */ 1922 {16, 0x000647d0}, /* _ldrASMpMTEFromHandle */ 1923 {16, 0x00058a4a}, /* _ldrOpenPath */ 1924 {16, 0x00054a64}, /* _LDRClearSem */ 1925 {16, 0x0005f162}, /* _ldrFindModule */ 1926 {16, 0x0000f07c}, /* _KSEMRequestMutex */ 1927 {16, 0x0000f190}, /* _KSEMReleaseMutex */ 1928 {16, 0x0000f1f0}, /* _KSEMQueryMutex */ 1929 {16, 0x0000f574}, /* _KSEMInit */ 1930 {11, 0x0002c474}, /* _LdrSem */ 1931 {11, 0x00029e80}, /* _LDRLibPath */ 1932 {16, 0x0003e7cc}, /* _TKSuBuff */ 1933 {16, 0x0003e31b}, /* _TKFuBuff */ 1934 {16, 0x0003e527}, /* _TKFuBufLen */ 1935 {16, 0x00054afc}, /* _ldrValidateMteHandle */ 1936 {0 , 0x00000b34}, /* _pTCBCur */ 1937 {0 , 0x00000b30}, /* _pPTDACur */ 1938 {5 , 0x0000f8c0}, /* ptda_start */ 1939 {5 , 0x0000f9ce}, /* ptda_environ */ 1940 {5 , 0x0000fe88}, /* ptda_ptdasem */ 1941 {5 , 0x0000ffa2}, /* ptda_module */ 1942 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 1943 {11, 0x0002c060}, /* _ldrpFileNameBuf */ 1944 {15, 0xffffffff}, /* SecPathFromSFN */ 1945 } 1946 }, 1947 #endif 1948 #ifdef ALLKERNELS 1949 { /* 8260AU.SYM */ 1950 8260, KF_UNI | KF_ALLSTRICT, 16, 1951 { 1952 {15, 0x0000a2a0}, /* _ldrRead */ 1953 {15, 0x0004a19c}, /* _ldrOpen */ 1954 {15, 0x0004ab34}, /* _ldrClose */ 1955 {15, 0x0004ab84}, /* _LDRQAppType */ 1956 {15, 0x000480c4}, /* _ldrEnum32bitRelRecs */ 1957 {15, 0x000044a0}, /* _IOSftOpen */ 1958 {15, 0x00004918}, /* _IOSftClose */ 1959 {15, 0x000049b0}, /* _IOSftTransPath */ 1960 {15, 0x00004764}, /* _IOSftReadAt */ 1961 {15, 0x0000476b}, /* _IOSftWriteAt */ 1962 {15, 0x00004ad8}, /* _SftFileSize */ 1963 {15, 0x00045a44}, /* _VMAllocMem */ 1964 {15, 0x0002376a}, /* _VMGetOwner */ 1965 {15, 0x00053b5c}, /* g_tkExecPgm */ 1966 {15, 0x000502d0}, /* _tkStartProcess */ 1967 {11, 0x0000e9d4}, /* f_FuStrLenZ */ 1968 {11, 0x0000e988}, /* f_FuStrLen */ 1969 {11, 0x0000eaec}, /* f_FuBuff */ 1970 {15, 0x000226b4}, /* _VMObjHandleInfo */ 1971 {15, 0x000545f4}, /* _ldrASMpMTEFromHandle */ 1972 {15, 0x0004a427}, /* _ldrOpenPath */ 1973 {15, 0x000464f8}, /* _LDRClearSem */ 1974 {15, 0x0004f9d0}, /* _ldrFindModule */ 1975 {15, 0x0000bbcc}, /* _KSEMRequestMutex */ 1976 {15, 0x0000bce0}, /* _KSEMReleaseMutex */ 1977 {15, 0x0000bd40}, /* _KSEMQueryMutex */ 1978 {15, 0x0000c0c4}, /* _KSEMInit */ 1979 {10, 0x0002a1d8}, /* _LdrSem */ 1980 {10, 0x000269d4}, /* _LDRLibPath */ 1981 {15, 0x000316d8}, /* _TKSuBuff */ 1982 {15, 0x000312ca}, /* _TKFuBuff */ 1983 {15, 0x00031496}, /* _TKFuBufLen */ 1984 {15, 0x00046580}, /* _ldrValidateMteHandle */ 1985 {10, 0x0000b740}, /* _pTCBCur */ 1986 {10, 0x0000b73c}, /* _pPTDACur */ 1987 {4 , 0x0000f9a0}, /* ptda_start */ 1988 {4 , 0x0000fa46}, /* ptda_environ */ 1989 {4 , 0x0000fea0}, /* ptda_ptdasem */ 1990 {4 , 0x0000ffaa}, /* ptda_module */ 1991 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 1992 {10, 0x00029390}, /* _ldrpFileNameBuf */ 1993 {15, 0x0004231f}, /* SecPathFromSFN */ 1994 } 1995 }, 1996 #endif 1997 #ifdef ALLKERNELS 1998 { /* 8260HS.SYM */ 1999 8260, KF_SMP | KF_HALFSTRICT, 17, 2000 { 2001 {16, 0x0000befc}, /* _ldrRead */ 2002 {16, 0x00048c8c}, /* _ldrOpen */ 2003 {16, 0x00049688}, /* _ldrClose */ 2004 {16, 0x000496d8}, /* _LDRQAppType */ 2005 {16, 0x00047184}, /* _ldrEnum32bitRelRecs */ 2006 {16, 0x0000531c}, /* _IOSftOpen */ 2007 {16, 0x0000589a}, /* _IOSftClose */ 2008 {16, 0x00005951}, /* _IOSftTransPath */ 2009 {16, 0x000055e2}, /* _IOSftReadAt */ 2010 {16, 0x000057ab}, /* _IOSftWriteAt */ 2011 {16, 0x00005a7b}, /* _SftFileSize */ 2012 {16, 0x00044d74}, /* _VMAllocMem */ 2013 {16, 0x00028c56}, /* _VMGetOwner */ 2014 {16, 0x00052e52}, /* g_tkExecPgm */ 2015 {16, 0x0004f6a9}, /* _tkStartProcess */ 2016 {13, 0x00009f7c}, /* f_FuStrLenZ */ 2017 {13, 0x00009efc}, /* f_FuStrLen */ 2018 {13, 0x0000a125}, /* f_FuBuff */ 2019 {16, 0x000278af}, /* _VMObjHandleInfo */ 2020 {16, 0x00053858}, /* _ldrASMpMTEFromHandle */ 2021 {16, 0x00048f0e}, /* _ldrOpenPath */ 2022 {16, 0x00045738}, /* _LDRClearSem */ 2023 {16, 0x0004ed83}, /* _ldrFindModule */ 2024 {16, 0x0000d66c}, /* _KSEMRequestMutex */ 2025 {16, 0x0000d743}, /* _KSEMReleaseMutex */ 2026 {16, 0x0000d76e}, /* _KSEMQueryMutex */ 2027 {16, 0x0000da0e}, /* _KSEMInit */ 2028 {11, 0x0001d6f0}, /* _LdrSem */ 2029 {11, 0x0001bc6c}, /* _LDRLibPath */ 2030 {16, 0x00034ad3}, /* _TKSuBuff */ 2031 {16, 0x00034668}, /* _TKFuBuff */ 2032 {16, 0x00034832}, /* _TKFuBufLen */ 2033 {16, 0x00045784}, /* _ldrValidateMteHandle */ 2034 {0 , 0x00000b34}, /* _pTCBCur */ 2035 {0 , 0x00000b30}, /* _pPTDACur */ 2036 {5 , 0x0000f8cc}, /* ptda_start */ 2037 {5 , 0x0000f9da}, /* ptda_environ */ 2038 {5 , 0x0000fe94}, /* ptda_ptdasem */ 2039 {5 , 0x0000ffa2}, /* ptda_module */ 2040 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2041 {11, 0x0001d4b4}, /* _ldrpFileNameBuf */ 2042 {15, 0xffffffff}, /* SecPathFromSFN */ 2043 } 2044 }, 2045 #endif 2046 #ifdef ALLKERNELS 2047 { /* 8260HU.SYM */ 2048 8260, KF_UNI | KF_HALFSTRICT, 16, 2049 { 2050 {15, 0x000092d8}, /* _ldrRead */ 2051 {15, 0x0003bf10}, /* _ldrOpen */ 2052 {15, 0x0003c798}, /* _ldrClose */ 2053 {15, 0x0003c7e8}, /* _LDRQAppType */ 2054 {15, 0x0003a10c}, /* _ldrEnum32bitRelRecs */ 2055 {15, 0x00003a24}, /* _IOSftOpen */ 2056 {15, 0x00003e90}, /* _IOSftClose */ 2057 {15, 0x00003f25}, /* _IOSftTransPath */ 2058 {15, 0x00003cde}, /* _IOSftReadAt */ 2059 {15, 0x00003ce5}, /* _IOSftWriteAt */ 2060 {15, 0x0000403e}, /* _SftFileSize */ 2061 {15, 0x000383d8}, /* _VMAllocMem */ 2062 {15, 0x0001e156}, /* _VMGetOwner */ 2063 {15, 0x00044716}, /* g_tkExecPgm */ 2064 {15, 0x000416e7}, /* _tkStartProcess */ 2065 {11, 0x0000d7a4}, /* f_FuStrLenZ */ 2066 {11, 0x0000d75a}, /* f_FuStrLen */ 2067 {11, 0x0000d898}, /* f_FuBuff */ 2068 {15, 0x0001d4b8}, /* _VMObjHandleInfo */ 2069 {15, 0x000450dc}, /* _ldrASMpMTEFromHandle */ 2070 {15, 0x0003c187}, /* _ldrOpenPath */ 2071 {15, 0x00038b20}, /* _LDRClearSem */ 2072 {15, 0x00040e88}, /* _ldrFindModule */ 2073 {15, 0x0000a74c}, /* _KSEMRequestMutex */ 2074 {15, 0x0000a823}, /* _KSEMReleaseMutex */ 2075 {15, 0x0000a84e}, /* _KSEMQueryMutex */ 2076 {15, 0x0000aaee}, /* _KSEMInit */ 2077 {10, 0x0001c9f4}, /* _LdrSem */ 2078 {10, 0x00019e60}, /* _LDRLibPath */ 2079 {15, 0x00028e15}, /* _TKSuBuff */ 2080 {15, 0x00028a4b}, /* _TKFuBuff */ 2081 {15, 0x00028bd5}, /* _TKFuBufLen */ 2082 {15, 0x00038b5c}, /* _ldrValidateMteHandle */ 2083 {10, 0x000070bc}, /* _pTCBCur */ 2084 {10, 0x000070b8}, /* _pPTDACur */ 2085 {4 , 0x0000f9a8}, /* ptda_start */ 2086 {4 , 0x0000fa4e}, /* ptda_environ */ 2087 {4 , 0x0000fea8}, /* ptda_ptdasem */ 2088 {4 , 0x0000ffaa}, /* ptda_module */ 2089 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2090 {10, 0x0001bd84}, /* _ldrpFileNameBuf */ 2091 {15, 0x0003526b}, /* SecPathFromSFN */ 2092 } 2093 }, 2094 #endif 303 2095 { /* 8260RS.SYM */ 304 8260, 'R', TYPE_SMP, 15,2096 8260, KF_SMP, 15, 305 2097 { 306 2098 {14, 0x0000bdec}, /* _ldrRead */ … … 318 2110 {14, 0x0002743a}, /* _VMGetOwner */ 319 2111 {14, 0x00050b4a}, /* g_tkExecPgm */ 2112 {14, 0x0004d299}, /* _tkStartProcess */ 320 2113 {11, 0x00009f7c}, /* f_FuStrLenZ */ 321 2114 {11, 0x00009efc}, /* f_FuStrLen */ 322 2115 {11, 0x0000a125}, /* f_FuBuff */ 2116 {14, 0x00026093}, /* _VMObjHandleInfo */ 2117 {14, 0x00051550}, /* _ldrASMpMTEFromHandle */ 2118 {14, 0x00046ada}, /* _ldrOpenPath */ 2119 {14, 0x00043304}, /* _LDRClearSem */ 2120 {14, 0x0004c973}, /* _ldrFindModule */ 2121 {14, 0x0000d42c}, /* _KSEMRequestMutex */ 2122 {14, 0x0000d4bf}, /* _KSEMReleaseMutex */ 2123 {14, 0x0000d4ea}, /* _KSEMQueryMutex */ 2124 {14, 0x0000d6ff}, /* _KSEMInit */ 2125 {9 , 0x0000d158}, /* _LdrSem */ 2126 {9 , 0x0000b6dc}, /* _LDRLibPath */ 2127 {14, 0x000332b7}, /* _TKSuBuff */ 2128 {14, 0x00032e4c}, /* _TKFuBuff */ 2129 {14, 0x00033016}, /* _TKFuBufLen */ 2130 {14, 0x00043350}, /* _ldrValidateMteHandle */ 2131 {0 , 0x00000b34}, /* _pTCBCur */ 2132 {0 , 0x00000b30}, /* _pPTDACur */ 2133 {3 , 0x0000f8cc}, /* ptda_start */ 2134 {3 , 0x0000f9da}, /* ptda_environ */ 2135 {3 , 0x0000fe94}, /* ptda_ptdasem */ 2136 {3 , 0x0000ffa2}, /* ptda_module */ 2137 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2138 {9 , 0x0000cf1c}, /* _ldrpFileNameBuf */ 2139 {15, 0xffffffff}, /* SecPathFromSFN */ 323 2140 } 324 2141 }, 325 2142 { /* 8260RU.SYM */ 326 8260, 'R', TYPE_UNI, 14,2143 8260, KF_UNI, 14, 327 2144 { 328 2145 {13, 0x00009244}, /* _ldrRead */ … … 340 2157 {13, 0x0001d2ee}, /* _VMGetOwner */ 341 2158 {13, 0x00042e8a}, /* g_tkExecPgm */ 342 {9, 0x0000d7a4}, /* f_FuStrLenZ */ 343 {9, 0x0000d75a}, /* f_FuStrLen */ 344 {9, 0x0000d898}, /* f_FuBuff */ 345 } 346 }, 2159 {13, 0x0003fe7f}, /* _tkStartProcess */ 2160 {9 , 0x0000d7a4}, /* f_FuStrLenZ */ 2161 {9 , 0x0000d75a}, /* f_FuStrLen */ 2162 {9 , 0x0000d898}, /* f_FuBuff */ 2163 {13, 0x0001c650}, /* _VMObjHandleInfo */ 2164 {13, 0x00043850}, /* _ldrASMpMTEFromHandle */ 2165 {13, 0x0003a88f}, /* _ldrOpenPath */ 2166 {13, 0x00037228}, /* _LDRClearSem */ 2167 {13, 0x0003f620}, /* _ldrFindModule */ 2168 {13, 0x0000a590}, /* _KSEMRequestMutex */ 2169 {13, 0x0000a623}, /* _KSEMReleaseMutex */ 2170 {13, 0x0000a64e}, /* _KSEMQueryMutex */ 2171 {13, 0x0000a863}, /* _KSEMInit */ 2172 {8 , 0x0000c830}, /* _LdrSem */ 2173 {8 , 0x00009ca0}, /* _LDRLibPath */ 2174 {13, 0x00027fad}, /* _TKSuBuff */ 2175 {13, 0x00027be3}, /* _TKFuBuff */ 2176 {13, 0x00027d6d}, /* _TKFuBufLen */ 2177 {13, 0x00037264}, /* _ldrValidateMteHandle */ 2178 {8 , 0x000070bc}, /* _pTCBCur */ 2179 {8 , 0x000070b8}, /* _pPTDACur */ 2180 {2 , 0x0000f9a8}, /* ptda_start */ 2181 {2 , 0x0000fa4e}, /* ptda_environ */ 2182 {2 , 0x0000fea8}, /* ptda_ptdasem */ 2183 {2 , 0x0000ffaa}, /* ptda_module */ 2184 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2185 {8 , 0x0000bbc0}, /* _ldrpFileNameBuf */ 2186 {13, 0x00033973}, /* SecPathFromSFN */ 2187 } 2188 }, 2189 #ifdef ALLKERNELS 2190 { /* 8261AS.SYM */ 2191 8261, KF_SMP | KF_ALLSTRICT, 17, 2192 { 2193 {16, 0x0000d7d8}, /* _ldrRead */ 2194 {16, 0x0005c3d0}, /* _ldrOpen */ 2195 {16, 0x0005cf18}, /* _ldrClose */ 2196 {16, 0x0005cf68}, /* _LDRQAppType */ 2197 {16, 0x0005a674}, /* _ldrEnum32bitRelRecs */ 2198 {16, 0x00006320}, /* _IOSftOpen */ 2199 {16, 0x00006808}, /* _IOSftClose */ 2200 {16, 0x000068c0}, /* _IOSftTransPath */ 2201 {16, 0x0000661c}, /* _IOSftReadAt */ 2202 {16, 0x00006623}, /* _IOSftWriteAt */ 2203 {16, 0x000069f8}, /* _SftFileSize */ 2204 {16, 0x000579d4}, /* _VMAllocMem */ 2205 {16, 0x0002fef6}, /* _VMGetOwner */ 2206 {16, 0x00067a48}, /* g_tkExecPgm */ 2207 {16, 0x00063818}, /* _tkStartProcess */ 2208 {13, 0x0000a824}, /* f_FuStrLenZ */ 2209 {13, 0x0000a7a4}, /* f_FuStrLen */ 2210 {13, 0x0000a9ec}, /* f_FuBuff */ 2211 {16, 0x0002e717}, /* _VMObjHandleInfo */ 2212 {16, 0x00068608}, /* _ldrASMpMTEFromHandle */ 2213 {16, 0x0005c68a}, /* _ldrOpenPath */ 2214 {16, 0x00058670}, /* _LDRClearSem */ 2215 {16, 0x00062e50}, /* _ldrFindModule */ 2216 {16, 0x0000f4fc}, /* _KSEMRequestMutex */ 2217 {16, 0x0000f610}, /* _KSEMReleaseMutex */ 2218 {16, 0x0000f670}, /* _KSEMQueryMutex */ 2219 {16, 0x0000f9f4}, /* _KSEMInit */ 2220 {11, 0x0002c800}, /* _LdrSem */ 2221 {11, 0x0002a20c}, /* _LDRLibPath */ 2222 {16, 0x0003f29c}, /* _TKSuBuff */ 2223 {16, 0x0003eded}, /* _TKFuBuff */ 2224 {16, 0x0003eff9}, /* _TKFuBufLen */ 2225 {16, 0x00058708}, /* _ldrValidateMteHandle */ 2226 {0 , 0x00000b34}, /* _pTCBCur */ 2227 {0 , 0x00000b30}, /* _pPTDACur */ 2228 {5 , 0x0000f8b4}, /* ptda_start */ 2229 {5 , 0x0000f9ce}, /* ptda_environ */ 2230 {5 , 0x0000fe88}, /* ptda_ptdasem */ 2231 {5 , 0x0000ffa2}, /* ptda_module */ 2232 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 2233 {11, 0x0002c3ec}, /* _ldrpFileNameBuf */ 2234 {16, 0x0005362a}, /* SecPathFromSFN */ 2235 } 2236 }, 2237 #endif 2238 #ifdef ALLKERNELS 2239 { /* 8261AU.SYM */ 2240 8261, KF_UNI | KF_ALLSTRICT, 16, 2241 { 2242 {15, 0x0000a328}, /* _ldrRead */ 2243 {15, 0x0004a48c}, /* _ldrOpen */ 2244 {15, 0x0004ae2c}, /* _ldrClose */ 2245 {15, 0x0004ae7c}, /* _LDRQAppType */ 2246 {15, 0x00048394}, /* _ldrEnum32bitRelRecs */ 2247 {15, 0x00004520}, /* _IOSftOpen */ 2248 {15, 0x00004998}, /* _IOSftClose */ 2249 {15, 0x00004a30}, /* _IOSftTransPath */ 2250 {15, 0x000047e4}, /* _IOSftReadAt */ 2251 {15, 0x000047eb}, /* _IOSftWriteAt */ 2252 {15, 0x00004b58}, /* _SftFileSize */ 2253 {15, 0x00045d10}, /* _VMAllocMem */ 2254 {15, 0x0002384a}, /* _VMGetOwner */ 2255 {15, 0x00053f24}, /* g_tkExecPgm */ 2256 {15, 0x0005065c}, /* _tkStartProcess */ 2257 {11, 0x0000ea04}, /* f_FuStrLenZ */ 2258 {11, 0x0000e9b8}, /* f_FuStrLen */ 2259 {11, 0x0000eb1c}, /* f_FuBuff */ 2260 {15, 0x00022794}, /* _VMObjHandleInfo */ 2261 {15, 0x000549ec}, /* _ldrASMpMTEFromHandle */ 2262 {15, 0x0004a717}, /* _ldrOpenPath */ 2263 {15, 0x000467c4}, /* _LDRClearSem */ 2264 {15, 0x0004fd5c}, /* _ldrFindModule */ 2265 {15, 0x0000bc54}, /* _KSEMRequestMutex */ 2266 {15, 0x0000bd68}, /* _KSEMReleaseMutex */ 2267 {15, 0x0000bdc8}, /* _KSEMQueryMutex */ 2268 {15, 0x0000c14c}, /* _KSEMInit */ 2269 {10, 0x0002a394}, /* _LdrSem */ 2270 {10, 0x00026b90}, /* _LDRLibPath */ 2271 {15, 0x000317f0}, /* _TKSuBuff */ 2272 {15, 0x000313e0}, /* _TKFuBuff */ 2273 {15, 0x000315ac}, /* _TKFuBufLen */ 2274 {15, 0x0004684c}, /* _ldrValidateMteHandle */ 2275 {10, 0x0000b84c}, /* _pTCBCur */ 2276 {10, 0x0000b848}, /* _pPTDACur */ 2277 {4 , 0x0000f994}, /* ptda_start */ 2278 {4 , 0x0000fa46}, /* ptda_environ */ 2279 {4 , 0x0000fea0}, /* ptda_ptdasem */ 2280 {4 , 0x0000ffaa}, /* ptda_module */ 2281 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 2282 {10, 0x0002954c}, /* _ldrpFileNameBuf */ 2283 {15, 0x000425d9}, /* SecPathFromSFN */ 2284 } 2285 }, 2286 #endif 2287 #ifdef ALLKERNELS 2288 { /* 8261HS.SYM */ 2289 8261, KF_SMP | KF_HALFSTRICT, 17, 2290 { 2291 {16, 0x0000c2ec}, /* _ldrRead */ 2292 {16, 0x0004c87c}, /* _ldrOpen */ 2293 {16, 0x0004d2a4}, /* _ldrClose */ 2294 {16, 0x0004d2f4}, /* _LDRQAppType */ 2295 {16, 0x0004ad6c}, /* _ldrEnum32bitRelRecs */ 2296 {16, 0x0000547c}, /* _IOSftOpen */ 2297 {16, 0x00005955}, /* _IOSftClose */ 2298 {16, 0x00005a0c}, /* _IOSftTransPath */ 2299 {16, 0x0000576c}, /* _IOSftReadAt */ 2300 {16, 0x00005773}, /* _IOSftWriteAt */ 2301 {16, 0x00005b36}, /* _SftFileSize */ 2302 {16, 0x0004895c}, /* _VMAllocMem */ 2303 {16, 0x000292bc}, /* _VMGetOwner */ 2304 {16, 0x00056d3a}, /* g_tkExecPgm */ 2305 {16, 0x00053415}, /* _tkStartProcess */ 2306 {13, 0x0000a158}, /* f_FuStrLenZ */ 2307 {13, 0x0000a0d8}, /* f_FuStrLen */ 2308 {13, 0x0000a301}, /* f_FuBuff */ 2309 {16, 0x00027f13}, /* _VMObjHandleInfo */ 2310 {16, 0x00057824}, /* _ldrASMpMTEFromHandle */ 2311 {16, 0x0004cb22}, /* _ldrOpenPath */ 2312 {16, 0x00049320}, /* _LDRClearSem */ 2313 {16, 0x00052af1}, /* _ldrFindModule */ 2314 {16, 0x0000da8c}, /* _KSEMRequestMutex */ 2315 {16, 0x0000db63}, /* _KSEMReleaseMutex */ 2316 {16, 0x0000db8e}, /* _KSEMQueryMutex */ 2317 {16, 0x0000de2e}, /* _KSEMInit */ 2318 {11, 0x0001d780}, /* _LdrSem */ 2319 {11, 0x0001bcfc}, /* _LDRLibPath */ 2320 {16, 0x000356e7}, /* _TKSuBuff */ 2321 {16, 0x0003527a}, /* _TKFuBuff */ 2322 {16, 0x00035444}, /* _TKFuBufLen */ 2323 {16, 0x0004936c}, /* _ldrValidateMteHandle */ 2324 {0 , 0x00000b34}, /* _pTCBCur */ 2325 {0 , 0x00000b30}, /* _pPTDACur */ 2326 {5 , 0x0000f8c0}, /* ptda_start */ 2327 {5 , 0x0000f9da}, /* ptda_environ */ 2328 {5 , 0x0000fe94}, /* ptda_ptdasem */ 2329 {5 , 0x0000ffa2}, /* ptda_module */ 2330 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2331 {11, 0x0001d544}, /* _ldrpFileNameBuf */ 2332 {16, 0x00044c8a}, /* SecPathFromSFN */ 2333 } 2334 }, 2335 #endif 2336 #ifdef ALLKERNELS 2337 { /* 8261HU.SYM */ 2338 8261, KF_UNI | KF_HALFSTRICT, 16, 2339 { 2340 {15, 0x00009328}, /* _ldrRead */ 2341 {15, 0x0003c120}, /* _ldrOpen */ 2342 {15, 0x0003c9ac}, /* _ldrClose */ 2343 {15, 0x0003c9fc}, /* _LDRQAppType */ 2344 {15, 0x0003a308}, /* _ldrEnum32bitRelRecs */ 2345 {15, 0x00003a70}, /* _IOSftOpen */ 2346 {15, 0x00003edc}, /* _IOSftClose */ 2347 {15, 0x00003f71}, /* _IOSftTransPath */ 2348 {15, 0x00003d2a}, /* _IOSftReadAt */ 2349 {15, 0x00003d31}, /* _IOSftWriteAt */ 2350 {15, 0x0000408a}, /* _SftFileSize */ 2351 {15, 0x000385d4}, /* _VMAllocMem */ 2352 {15, 0x0001e156}, /* _VMGetOwner */ 2353 {15, 0x00044a9a}, /* g_tkExecPgm */ 2354 {15, 0x00041a0b}, /* _tkStartProcess */ 2355 {11, 0x0000d7d0}, /* f_FuStrLenZ */ 2356 {11, 0x0000d786}, /* f_FuStrLen */ 2357 {11, 0x0000d8c4}, /* f_FuBuff */ 2358 {15, 0x0001d4bc}, /* _VMObjHandleInfo */ 2359 {15, 0x00045490}, /* _ldrASMpMTEFromHandle */ 2360 {15, 0x0003c397}, /* _ldrOpenPath */ 2361 {15, 0x00038d1c}, /* _LDRClearSem */ 2362 {15, 0x000411ac}, /* _ldrFindModule */ 2363 {15, 0x0000a79c}, /* _KSEMRequestMutex */ 2364 {15, 0x0000a873}, /* _KSEMReleaseMutex */ 2365 {15, 0x0000a89e}, /* _KSEMQueryMutex */ 2366 {15, 0x0000ab3e}, /* _KSEMInit */ 2367 {10, 0x0001ca30}, /* _LdrSem */ 2368 {10, 0x00019e9c}, /* _LDRLibPath */ 2369 {15, 0x00028e31}, /* _TKSuBuff */ 2370 {15, 0x00028a67}, /* _TKFuBuff */ 2371 {15, 0x00028bf1}, /* _TKFuBufLen */ 2372 {15, 0x00038d58}, /* _ldrValidateMteHandle */ 2373 {10, 0x000070e4}, /* _pTCBCur */ 2374 {10, 0x000070e0}, /* _pPTDACur */ 2375 {4 , 0x0000f99c}, /* ptda_start */ 2376 {4 , 0x0000fa4e}, /* ptda_environ */ 2377 {4 , 0x0000fea8}, /* ptda_ptdasem */ 2378 {4 , 0x0000ffaa}, /* ptda_module */ 2379 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2380 {10, 0x0001bdc0}, /* _ldrpFileNameBuf */ 2381 {15, 0x00035455}, /* SecPathFromSFN */ 2382 } 2383 }, 2384 #endif 347 2385 { /* 8261RS.SYM */ 348 8261, 'R', TYPE_SMP, 15,2386 8261, KF_SMP, 15, 349 2387 { 350 2388 {14, 0x0000c1dc}, /* _ldrRead */ … … 362 2400 {14, 0x00027aa0}, /* _VMGetOwner */ 363 2401 {14, 0x000547fe}, /* g_tkExecPgm */ 2402 {14, 0x00050ff1}, /* _tkStartProcess */ 364 2403 {11, 0x0000a158}, /* f_FuStrLenZ */ 365 2404 {11, 0x0000a0d8}, /* f_FuStrLen */ 366 2405 {11, 0x0000a301}, /* f_FuBuff */ 2406 {14, 0x000266f7}, /* _VMObjHandleInfo */ 2407 {14, 0x000552e8}, /* _ldrASMpMTEFromHandle */ 2408 {14, 0x0004a712}, /* _ldrOpenPath */ 2409 {14, 0x00046f10}, /* _LDRClearSem */ 2410 {14, 0x000506cd}, /* _ldrFindModule */ 2411 {14, 0x0000d84c}, /* _KSEMRequestMutex */ 2412 {14, 0x0000d8df}, /* _KSEMReleaseMutex */ 2413 {14, 0x0000d90a}, /* _KSEMQueryMutex */ 2414 {14, 0x0000db1f}, /* _KSEMInit */ 2415 {9 , 0x0000d1e8}, /* _LdrSem */ 2416 {9 , 0x0000b76c}, /* _LDRLibPath */ 2417 {14, 0x00033ecb}, /* _TKSuBuff */ 2418 {14, 0x00033a5e}, /* _TKFuBuff */ 2419 {14, 0x00033c28}, /* _TKFuBufLen */ 2420 {14, 0x00046f5c}, /* _ldrValidateMteHandle */ 2421 {0 , 0x00000b34}, /* _pTCBCur */ 2422 {0 , 0x00000b30}, /* _pPTDACur */ 2423 {3 , 0x0000f8c0}, /* ptda_start */ 2424 {3 , 0x0000f9da}, /* ptda_environ */ 2425 {3 , 0x0000fe94}, /* ptda_ptdasem */ 2426 {3 , 0x0000ffa2}, /* ptda_module */ 2427 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2428 {9 , 0x0000cfac}, /* _ldrpFileNameBuf */ 2429 {14, 0x0004287a}, /* SecPathFromSFN */ 367 2430 } 368 2431 }, 369 2432 { /* 8261RU.SYM */ 370 8261, 'R', TYPE_UNI, 14,2433 8261, KF_UNI, 14, 371 2434 { 372 2435 {13, 0x00009294}, /* _ldrRead */ … … 384 2447 {13, 0x0001d2ee}, /* _VMGetOwner */ 385 2448 {13, 0x0004315a}, /* g_tkExecPgm */ 386 {9, 0x0000d7d0}, /* f_FuStrLenZ */ 387 {9, 0x0000d786}, /* f_FuStrLen */ 388 {9, 0x0000d8c4}, /* f_FuBuff */ 389 } 390 }, 2449 {13, 0x000400eb}, /* _tkStartProcess */ 2450 {9 , 0x0000d7d0}, /* f_FuStrLenZ */ 2451 {9 , 0x0000d786}, /* f_FuStrLen */ 2452 {9 , 0x0000d8c4}, /* f_FuBuff */ 2453 {13, 0x0001c654}, /* _VMObjHandleInfo */ 2454 {13, 0x00043b50}, /* _ldrASMpMTEFromHandle */ 2455 {13, 0x0003aab3}, /* _ldrOpenPath */ 2456 {13, 0x00037438}, /* _LDRClearSem */ 2457 {13, 0x0003f88c}, /* _ldrFindModule */ 2458 {13, 0x0000a5e0}, /* _KSEMRequestMutex */ 2459 {13, 0x0000a673}, /* _KSEMReleaseMutex */ 2460 {13, 0x0000a69e}, /* _KSEMQueryMutex */ 2461 {13, 0x0000a8b3}, /* _KSEMInit */ 2462 {8 , 0x0000c86c}, /* _LdrSem */ 2463 {8 , 0x00009cdc}, /* _LDRLibPath */ 2464 {13, 0x00027fc9}, /* _TKSuBuff */ 2465 {13, 0x00027bff}, /* _TKFuBuff */ 2466 {13, 0x00027d89}, /* _TKFuBufLen */ 2467 {13, 0x00037474}, /* _ldrValidateMteHandle */ 2468 {8 , 0x000070e4}, /* _pTCBCur */ 2469 {8 , 0x000070e0}, /* _pPTDACur */ 2470 {2 , 0x0000f99c}, /* ptda_start */ 2471 {2 , 0x0000fa4e}, /* ptda_environ */ 2472 {2 , 0x0000fea8}, /* ptda_ptdasem */ 2473 {2 , 0x0000ffaa}, /* ptda_module */ 2474 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2475 {8 , 0x0000bbfc}, /* _ldrpFileNameBuf */ 2476 {13, 0x00033b71}, /* SecPathFromSFN */ 2477 } 2478 }, 2479 #ifdef ALLKERNELS 2480 { /* 8262AS.SYM */ 2481 8262, KF_SMP | KF_ALLSTRICT, 17, 2482 { 2483 {16, 0x0000d7d8}, /* _ldrRead */ 2484 {16, 0x0005c2d0}, /* _ldrOpen */ 2485 {16, 0x0005ce18}, /* _ldrClose */ 2486 {16, 0x0005ce68}, /* _LDRQAppType */ 2487 {16, 0x0005a574}, /* _ldrEnum32bitRelRecs */ 2488 {16, 0x00006320}, /* _IOSftOpen */ 2489 {16, 0x00006808}, /* _IOSftClose */ 2490 {16, 0x000068c0}, /* _IOSftTransPath */ 2491 {16, 0x0000661c}, /* _IOSftReadAt */ 2492 {16, 0x00006623}, /* _IOSftWriteAt */ 2493 {16, 0x000069f8}, /* _SftFileSize */ 2494 {16, 0x000578d4}, /* _VMAllocMem */ 2495 {16, 0x0002fdf6}, /* _VMGetOwner */ 2496 {16, 0x00067948}, /* g_tkExecPgm */ 2497 {16, 0x00063718}, /* _tkStartProcess */ 2498 {13, 0x0000a824}, /* f_FuStrLenZ */ 2499 {13, 0x0000a7a4}, /* f_FuStrLen */ 2500 {13, 0x0000a9ec}, /* f_FuBuff */ 2501 {16, 0x0002e617}, /* _VMObjHandleInfo */ 2502 {16, 0x00068508}, /* _ldrASMpMTEFromHandle */ 2503 {16, 0x0005c58a}, /* _ldrOpenPath */ 2504 {16, 0x00058570}, /* _LDRClearSem */ 2505 {16, 0x00062d50}, /* _ldrFindModule */ 2506 {16, 0x0000f4fc}, /* _KSEMRequestMutex */ 2507 {16, 0x0000f610}, /* _KSEMReleaseMutex */ 2508 {16, 0x0000f670}, /* _KSEMQueryMutex */ 2509 {16, 0x0000f9f4}, /* _KSEMInit */ 2510 {11, 0x0002c800}, /* _LdrSem */ 2511 {11, 0x0002a20c}, /* _LDRLibPath */ 2512 {16, 0x0003f19c}, /* _TKSuBuff */ 2513 {16, 0x0003eced}, /* _TKFuBuff */ 2514 {16, 0x0003eef9}, /* _TKFuBufLen */ 2515 {16, 0x00058608}, /* _ldrValidateMteHandle */ 2516 {0 , 0x00000b34}, /* _pTCBCur */ 2517 {0 , 0x00000b30}, /* _pPTDACur */ 2518 {5 , 0x0000f8b4}, /* ptda_start */ 2519 {5 , 0x0000f9ce}, /* ptda_environ */ 2520 {5 , 0x0000fe88}, /* ptda_ptdasem */ 2521 {5 , 0x0000ffa2}, /* ptda_module */ 2522 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 2523 {11, 0x0002c3ec}, /* _ldrpFileNameBuf */ 2524 {16, 0x0005352a}, /* SecPathFromSFN */ 2525 } 2526 }, 2527 #endif 2528 #ifdef ALLKERNELS 2529 { /* 8262AU.SYM */ 2530 8262, KF_UNI | KF_ALLSTRICT, 16, 2531 { 2532 {15, 0x0000a328}, /* _ldrRead */ 2533 {15, 0x0004a3a8}, /* _ldrOpen */ 2534 {15, 0x0004ad48}, /* _ldrClose */ 2535 {15, 0x0004ad98}, /* _LDRQAppType */ 2536 {15, 0x000482b0}, /* _ldrEnum32bitRelRecs */ 2537 {15, 0x00004520}, /* _IOSftOpen */ 2538 {15, 0x00004998}, /* _IOSftClose */ 2539 {15, 0x00004a30}, /* _IOSftTransPath */ 2540 {15, 0x000047e4}, /* _IOSftReadAt */ 2541 {15, 0x000047eb}, /* _IOSftWriteAt */ 2542 {15, 0x00004b58}, /* _SftFileSize */ 2543 {15, 0x00045c2c}, /* _VMAllocMem */ 2544 {15, 0x00023766}, /* _VMGetOwner */ 2545 {15, 0x00053e40}, /* g_tkExecPgm */ 2546 {15, 0x00050578}, /* _tkStartProcess */ 2547 {11, 0x0000ea08}, /* f_FuStrLenZ */ 2548 {11, 0x0000e9bc}, /* f_FuStrLen */ 2549 {11, 0x0000eb20}, /* f_FuBuff */ 2550 {15, 0x000226b0}, /* _VMObjHandleInfo */ 2551 {15, 0x00054908}, /* _ldrASMpMTEFromHandle */ 2552 {15, 0x0004a633}, /* _ldrOpenPath */ 2553 {15, 0x000466e0}, /* _LDRClearSem */ 2554 {15, 0x0004fc78}, /* _ldrFindModule */ 2555 {15, 0x0000bc54}, /* _KSEMRequestMutex */ 2556 {15, 0x0000bd68}, /* _KSEMReleaseMutex */ 2557 {15, 0x0000bdc8}, /* _KSEMQueryMutex */ 2558 {15, 0x0000c14c}, /* _KSEMInit */ 2559 {10, 0x0002a394}, /* _LdrSem */ 2560 {10, 0x00026b90}, /* _LDRLibPath */ 2561 {15, 0x0003170c}, /* _TKSuBuff */ 2562 {15, 0x000312fc}, /* _TKFuBuff */ 2563 {15, 0x000314c8}, /* _TKFuBufLen */ 2564 {15, 0x00046768}, /* _ldrValidateMteHandle */ 2565 {10, 0x0000b84c}, /* _pTCBCur */ 2566 {10, 0x0000b848}, /* _pPTDACur */ 2567 {4 , 0x0000f994}, /* ptda_start */ 2568 {4 , 0x0000fa46}, /* ptda_environ */ 2569 {4 , 0x0000fea0}, /* ptda_ptdasem */ 2570 {4 , 0x0000ffaa}, /* ptda_module */ 2571 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 2572 {10, 0x0002954c}, /* _ldrpFileNameBuf */ 2573 {15, 0x000424f5}, /* SecPathFromSFN */ 2574 } 2575 }, 2576 #endif 2577 #ifdef ALLKERNELS 2578 { /* 8262HS.SYM */ 2579 8262, KF_SMP | KF_HALFSTRICT, 17, 2580 { 2581 {16, 0x0000c2ec}, /* _ldrRead */ 2582 {16, 0x0004c77c}, /* _ldrOpen */ 2583 {16, 0x0004d1a4}, /* _ldrClose */ 2584 {16, 0x0004d1f4}, /* _LDRQAppType */ 2585 {16, 0x0004ac6c}, /* _ldrEnum32bitRelRecs */ 2586 {16, 0x0000547c}, /* _IOSftOpen */ 2587 {16, 0x00005955}, /* _IOSftClose */ 2588 {16, 0x00005a0c}, /* _IOSftTransPath */ 2589 {16, 0x0000576c}, /* _IOSftReadAt */ 2590 {16, 0x00005773}, /* _IOSftWriteAt */ 2591 {16, 0x00005b36}, /* _SftFileSize */ 2592 {16, 0x0004885c}, /* _VMAllocMem */ 2593 {16, 0x000291bc}, /* _VMGetOwner */ 2594 {16, 0x00056c3a}, /* g_tkExecPgm */ 2595 {16, 0x00053315}, /* _tkStartProcess */ 2596 {13, 0x0000a15c}, /* f_FuStrLenZ */ 2597 {13, 0x0000a0dc}, /* f_FuStrLen */ 2598 {13, 0x0000a305}, /* f_FuBuff */ 2599 {16, 0x00027e13}, /* _VMObjHandleInfo */ 2600 {16, 0x00057724}, /* _ldrASMpMTEFromHandle */ 2601 {16, 0x0004ca22}, /* _ldrOpenPath */ 2602 {16, 0x00049220}, /* _LDRClearSem */ 2603 {16, 0x000529f1}, /* _ldrFindModule */ 2604 {16, 0x0000da8c}, /* _KSEMRequestMutex */ 2605 {16, 0x0000db63}, /* _KSEMReleaseMutex */ 2606 {16, 0x0000db8e}, /* _KSEMQueryMutex */ 2607 {16, 0x0000de2e}, /* _KSEMInit */ 2608 {11, 0x0001d780}, /* _LdrSem */ 2609 {11, 0x0001bcfc}, /* _LDRLibPath */ 2610 {16, 0x000355e7}, /* _TKSuBuff */ 2611 {16, 0x0003517a}, /* _TKFuBuff */ 2612 {16, 0x00035344}, /* _TKFuBufLen */ 2613 {16, 0x0004926c}, /* _ldrValidateMteHandle */ 2614 {0 , 0x00000b34}, /* _pTCBCur */ 2615 {0 , 0x00000b30}, /* _pPTDACur */ 2616 {5 , 0x0000f8c0}, /* ptda_start */ 2617 {5 , 0x0000f9da}, /* ptda_environ */ 2618 {5 , 0x0000fe94}, /* ptda_ptdasem */ 2619 {5 , 0x0000ffa2}, /* ptda_module */ 2620 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2621 {11, 0x0001d544}, /* _ldrpFileNameBuf */ 2622 {16, 0x00044b8a}, /* SecPathFromSFN */ 2623 } 2624 }, 2625 #endif 2626 #ifdef ALLKERNELS 2627 { /* 8262HU.SYM */ 2628 8262, KF_UNI | KF_HALFSTRICT, 16, 2629 { 2630 {15, 0x00009328}, /* _ldrRead */ 2631 {15, 0x0003c03c}, /* _ldrOpen */ 2632 {15, 0x0003c8c8}, /* _ldrClose */ 2633 {15, 0x0003c918}, /* _LDRQAppType */ 2634 {15, 0x0003a224}, /* _ldrEnum32bitRelRecs */ 2635 {15, 0x00003a70}, /* _IOSftOpen */ 2636 {15, 0x00003edc}, /* _IOSftClose */ 2637 {15, 0x00003f71}, /* _IOSftTransPath */ 2638 {15, 0x00003d2a}, /* _IOSftReadAt */ 2639 {15, 0x00003d31}, /* _IOSftWriteAt */ 2640 {15, 0x0000408a}, /* _SftFileSize */ 2641 {15, 0x000384f0}, /* _VMAllocMem */ 2642 {15, 0x0001e072}, /* _VMGetOwner */ 2643 {15, 0x000449b6}, /* g_tkExecPgm */ 2644 {15, 0x00041927}, /* _tkStartProcess */ 2645 {11, 0x0000d7d4}, /* f_FuStrLenZ */ 2646 {11, 0x0000d78a}, /* f_FuStrLen */ 2647 {11, 0x0000d8c8}, /* f_FuBuff */ 2648 {15, 0x0001d3d8}, /* _VMObjHandleInfo */ 2649 {15, 0x000453ac}, /* _ldrASMpMTEFromHandle */ 2650 {15, 0x0003c2b3}, /* _ldrOpenPath */ 2651 {15, 0x00038c38}, /* _LDRClearSem */ 2652 {15, 0x000410c8}, /* _ldrFindModule */ 2653 {15, 0x0000a79c}, /* _KSEMRequestMutex */ 2654 {15, 0x0000a873}, /* _KSEMReleaseMutex */ 2655 {15, 0x0000a89e}, /* _KSEMQueryMutex */ 2656 {15, 0x0000ab3e}, /* _KSEMInit */ 2657 {10, 0x0001ca30}, /* _LdrSem */ 2658 {10, 0x00019e9c}, /* _LDRLibPath */ 2659 {15, 0x00028d4d}, /* _TKSuBuff */ 2660 {15, 0x00028983}, /* _TKFuBuff */ 2661 {15, 0x00028b0d}, /* _TKFuBufLen */ 2662 {15, 0x00038c74}, /* _ldrValidateMteHandle */ 2663 {10, 0x000070e4}, /* _pTCBCur */ 2664 {10, 0x000070e0}, /* _pPTDACur */ 2665 {4 , 0x0000f99c}, /* ptda_start */ 2666 {4 , 0x0000fa4e}, /* ptda_environ */ 2667 {4 , 0x0000fea8}, /* ptda_ptdasem */ 2668 {4 , 0x0000ffaa}, /* ptda_module */ 2669 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2670 {10, 0x0001bdc0}, /* _ldrpFileNameBuf */ 2671 {15, 0x00035371}, /* SecPathFromSFN */ 2672 } 2673 }, 2674 #endif 391 2675 { /* 8262RS.SYM */ 392 8262, 'R', TYPE_SMP, 15,2676 8262, KF_SMP, 15, 393 2677 { 394 2678 {14, 0x0000c1dc}, /* _ldrRead */ … … 406 2690 {14, 0x000279a0}, /* _VMGetOwner */ 407 2691 {14, 0x000546fe}, /* g_tkExecPgm */ 2692 {14, 0x00050ef1}, /* _tkStartProcess */ 408 2693 {11, 0x0000a15c}, /* f_FuStrLenZ */ 409 2694 {11, 0x0000a0dc}, /* f_FuStrLen */ 410 2695 {11, 0x0000a305}, /* f_FuBuff */ 2696 {14, 0x000265f7}, /* _VMObjHandleInfo */ 2697 {14, 0x000551e8}, /* _ldrASMpMTEFromHandle */ 2698 {14, 0x0004a612}, /* _ldrOpenPath */ 2699 {14, 0x00046e10}, /* _LDRClearSem */ 2700 {14, 0x000505cd}, /* _ldrFindModule */ 2701 {14, 0x0000d84c}, /* _KSEMRequestMutex */ 2702 {14, 0x0000d8df}, /* _KSEMReleaseMutex */ 2703 {14, 0x0000d90a}, /* _KSEMQueryMutex */ 2704 {14, 0x0000db1f}, /* _KSEMInit */ 2705 {9 , 0x0000d1e8}, /* _LdrSem */ 2706 {9 , 0x0000b76c}, /* _LDRLibPath */ 2707 {14, 0x00033dcb}, /* _TKSuBuff */ 2708 {14, 0x0003395e}, /* _TKFuBuff */ 2709 {14, 0x00033b28}, /* _TKFuBufLen */ 2710 {14, 0x00046e5c}, /* _ldrValidateMteHandle */ 2711 {0 , 0x00000b34}, /* _pTCBCur */ 2712 {0 , 0x00000b30}, /* _pPTDACur */ 2713 {3 , 0x0000f8c0}, /* ptda_start */ 2714 {3 , 0x0000f9da}, /* ptda_environ */ 2715 {3 , 0x0000fe94}, /* ptda_ptdasem */ 2716 {3 , 0x0000ffa2}, /* ptda_module */ 2717 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2718 {9 , 0x0000cfac}, /* _ldrpFileNameBuf */ 2719 {14, 0x0004277a}, /* SecPathFromSFN */ 411 2720 } 412 2721 }, 413 2722 { /* 8262RU.SYM */ 414 8262, 'R', TYPE_UNI, 14,2723 8262, KF_UNI, 14, 415 2724 { 416 2725 {13, 0x00009294}, /* _ldrRead */ … … 428 2737 {13, 0x0001d20a}, /* _VMGetOwner */ 429 2738 {13, 0x00043076}, /* g_tkExecPgm */ 430 {9, 0x0000d7d4}, /* f_FuStrLenZ */ 431 {9, 0x0000d78a}, /* f_FuStrLen */ 432 {9, 0x0000d8c8}, /* f_FuBuff */ 433 } 434 }, 2739 {13, 0x00040007}, /* _tkStartProcess */ 2740 {9 , 0x0000d7d4}, /* f_FuStrLenZ */ 2741 {9 , 0x0000d78a}, /* f_FuStrLen */ 2742 {9 , 0x0000d8c8}, /* f_FuBuff */ 2743 {13, 0x0001c570}, /* _VMObjHandleInfo */ 2744 {13, 0x00043a6c}, /* _ldrASMpMTEFromHandle */ 2745 {13, 0x0003a9cf}, /* _ldrOpenPath */ 2746 {13, 0x00037354}, /* _LDRClearSem */ 2747 {13, 0x0003f7a8}, /* _ldrFindModule */ 2748 {13, 0x0000a5e0}, /* _KSEMRequestMutex */ 2749 {13, 0x0000a673}, /* _KSEMReleaseMutex */ 2750 {13, 0x0000a69e}, /* _KSEMQueryMutex */ 2751 {13, 0x0000a8b3}, /* _KSEMInit */ 2752 {8 , 0x0000c86c}, /* _LdrSem */ 2753 {8 , 0x00009cdc}, /* _LDRLibPath */ 2754 {13, 0x00027ee5}, /* _TKSuBuff */ 2755 {13, 0x00027b1b}, /* _TKFuBuff */ 2756 {13, 0x00027ca5}, /* _TKFuBufLen */ 2757 {13, 0x00037390}, /* _ldrValidateMteHandle */ 2758 {8 , 0x000070e4}, /* _pTCBCur */ 2759 {8 , 0x000070e0}, /* _pPTDACur */ 2760 {2 , 0x0000f99c}, /* ptda_start */ 2761 {2 , 0x0000fa4e}, /* ptda_environ */ 2762 {2 , 0x0000fea8}, /* ptda_ptdasem */ 2763 {2 , 0x0000ffaa}, /* ptda_module */ 2764 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2765 {8 , 0x0000bbfc}, /* _ldrpFileNameBuf */ 2766 {13, 0x00033a8d}, /* SecPathFromSFN */ 2767 } 2768 }, 2769 #ifdef ALLKERNELS 2770 { /* 8263AS.SYM */ 2771 8263, KF_SMP | KF_ALLSTRICT, 17, 2772 { 2773 {16, 0x0000d854}, /* _ldrRead */ 2774 {16, 0x0005c3ac}, /* _ldrOpen */ 2775 {16, 0x0005cef4}, /* _ldrClose */ 2776 {16, 0x0005cf44}, /* _LDRQAppType */ 2777 {16, 0x0005a644}, /* _ldrEnum32bitRelRecs */ 2778 {16, 0x0000632c}, /* _IOSftOpen */ 2779 {16, 0x00006814}, /* _IOSftClose */ 2780 {16, 0x000068cc}, /* _IOSftTransPath */ 2781 {16, 0x00006628}, /* _IOSftReadAt */ 2782 {16, 0x0000662f}, /* _IOSftWriteAt */ 2783 {16, 0x00006a04}, /* _SftFileSize */ 2784 {16, 0x000579a4}, /* _VMAllocMem */ 2785 {16, 0x0002fe72}, /* _VMGetOwner */ 2786 {16, 0x00067990}, /* g_tkExecPgm */ 2787 {16, 0x000637f4}, /* _tkStartProcess */ 2788 {13, 0x0000a838}, /* f_FuStrLenZ */ 2789 {13, 0x0000a7b8}, /* f_FuStrLen */ 2790 {13, 0x0000aa00}, /* f_FuBuff */ 2791 {16, 0x0002e693}, /* _VMObjHandleInfo */ 2792 {16, 0x00068550}, /* _ldrASMpMTEFromHandle */ 2793 {16, 0x0005c666}, /* _ldrOpenPath */ 2794 {16, 0x00058640}, /* _LDRClearSem */ 2795 {16, 0x00062e2c}, /* _ldrFindModule */ 2796 {16, 0x0000f578}, /* _KSEMRequestMutex */ 2797 {16, 0x0000f68c}, /* _KSEMReleaseMutex */ 2798 {16, 0x0000f6ec}, /* _KSEMQueryMutex */ 2799 {16, 0x0000fa70}, /* _KSEMInit */ 2800 {11, 0x0002c84c}, /* _LdrSem */ 2801 {11, 0x0002a230}, /* _LDRLibPath */ 2802 {16, 0x0003f218}, /* _TKSuBuff */ 2803 {16, 0x0003ed69}, /* _TKFuBuff */ 2804 {16, 0x0003ef75}, /* _TKFuBufLen */ 2805 {16, 0x000586d8}, /* _ldrValidateMteHandle */ 2806 {0 , 0x00000b34}, /* _pTCBCur */ 2807 {0 , 0x00000b30}, /* _pPTDACur */ 2808 {5 , 0x0000f8b4}, /* ptda_start */ 2809 {5 , 0x0000f9ce}, /* ptda_environ */ 2810 {5 , 0x0000fe88}, /* ptda_ptdasem */ 2811 {5 , 0x0000ffa2}, /* ptda_module */ 2812 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 2813 {11, 0x0002c434}, /* _ldrpFileNameBuf */ 2814 {16, 0x000535dc}, /* SecPathFromSFN */ 2815 } 2816 }, 2817 #endif 2818 #ifdef ALLKERNELS 2819 { /* 8263AU.SYM */ 2820 8263, KF_UNI | KF_ALLSTRICT, 16, 2821 { 2822 {15, 0x0000a3a4}, /* _ldrRead */ 2823 {15, 0x0004a5b0}, /* _ldrOpen */ 2824 {15, 0x0004af50}, /* _ldrClose */ 2825 {15, 0x0004afa0}, /* _LDRQAppType */ 2826 {15, 0x000484b4}, /* _ldrEnum32bitRelRecs */ 2827 {15, 0x0000452c}, /* _IOSftOpen */ 2828 {15, 0x000049a4}, /* _IOSftClose */ 2829 {15, 0x00004a3c}, /* _IOSftTransPath */ 2830 {15, 0x000047f0}, /* _IOSftReadAt */ 2831 {15, 0x000047f7}, /* _IOSftWriteAt */ 2832 {15, 0x00004b64}, /* _SftFileSize */ 2833 {15, 0x00045e30}, /* _VMAllocMem */ 2834 {15, 0x000237e2}, /* _VMGetOwner */ 2835 {15, 0x0005403c}, /* g_tkExecPgm */ 2836 {15, 0x00050754}, /* _tkStartProcess */ 2837 {11, 0x0000ea08}, /* f_FuStrLenZ */ 2838 {11, 0x0000e9bc}, /* f_FuStrLen */ 2839 {11, 0x0000eb20}, /* f_FuBuff */ 2840 {15, 0x0002272c}, /* _VMObjHandleInfo */ 2841 {15, 0x00054b04}, /* _ldrASMpMTEFromHandle */ 2842 {15, 0x0004a83b}, /* _ldrOpenPath */ 2843 {15, 0x000468e4}, /* _LDRClearSem */ 2844 {15, 0x0004fe40}, /* _ldrFindModule */ 2845 {15, 0x0000bcd0}, /* _KSEMRequestMutex */ 2846 {15, 0x0000bde4}, /* _KSEMReleaseMutex */ 2847 {15, 0x0000be44}, /* _KSEMQueryMutex */ 2848 {15, 0x0000c1c8}, /* _KSEMInit */ 2849 {10, 0x0002a3e8}, /* _LdrSem */ 2850 {10, 0x00026bbc}, /* _LDRLibPath */ 2851 {15, 0x00031788}, /* _TKSuBuff */ 2852 {15, 0x00031378}, /* _TKFuBuff */ 2853 {15, 0x00031544}, /* _TKFuBufLen */ 2854 {15, 0x0004696c}, /* _ldrValidateMteHandle */ 2855 {10, 0x0000b868}, /* _pTCBCur */ 2856 {10, 0x0000b864}, /* _pPTDACur */ 2857 {4 , 0x0000f994}, /* ptda_start */ 2858 {4 , 0x0000fa46}, /* ptda_environ */ 2859 {4 , 0x0000fea0}, /* ptda_ptdasem */ 2860 {4 , 0x0000ffaa}, /* ptda_module */ 2861 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 2862 {10, 0x0002959c}, /* _ldrpFileNameBuf */ 2863 {15, 0x000425a7}, /* SecPathFromSFN */ 2864 } 2865 }, 2866 #endif 2867 #ifdef ALLKERNELS 2868 { /* 8263HS.SYM */ 2869 8263, KF_SMP | KF_HALFSTRICT, 17, 2870 { 2871 {16, 0x0000c360}, /* _ldrRead */ 2872 {16, 0x0004c870}, /* _ldrOpen */ 2873 {16, 0x0004d298}, /* _ldrClose */ 2874 {16, 0x0004d2e8}, /* _LDRQAppType */ 2875 {16, 0x0004ad54}, /* _ldrEnum32bitRelRecs */ 2876 {16, 0x00005484}, /* _IOSftOpen */ 2877 {16, 0x0000595d}, /* _IOSftClose */ 2878 {16, 0x00005a14}, /* _IOSftTransPath */ 2879 {16, 0x00005774}, /* _IOSftReadAt */ 2880 {16, 0x0000577b}, /* _IOSftWriteAt */ 2881 {16, 0x00005b3e}, /* _SftFileSize */ 2882 {16, 0x00048944}, /* _VMAllocMem */ 2883 {16, 0x00029230}, /* _VMGetOwner */ 2884 {16, 0x00056cde}, /* g_tkExecPgm */ 2885 {16, 0x000533b5}, /* _tkStartProcess */ 2886 {13, 0x0000a170}, /* f_FuStrLenZ */ 2887 {13, 0x0000a0f0}, /* f_FuStrLen */ 2888 {13, 0x0000a319}, /* f_FuBuff */ 2889 {16, 0x00027e87}, /* _VMObjHandleInfo */ 2890 {16, 0x000577c0}, /* _ldrASMpMTEFromHandle */ 2891 {16, 0x0004cb16}, /* _ldrOpenPath */ 2892 {16, 0x00049308}, /* _LDRClearSem */ 2893 {16, 0x00052a91}, /* _ldrFindModule */ 2894 {16, 0x0000db00}, /* _KSEMRequestMutex */ 2895 {16, 0x0000dbd7}, /* _KSEMReleaseMutex */ 2896 {16, 0x0000dc02}, /* _KSEMQueryMutex */ 2897 {16, 0x0000dea2}, /* _KSEMInit */ 2898 {11, 0x0001d7c0}, /* _LdrSem */ 2899 {11, 0x0001bd14}, /* _LDRLibPath */ 2900 {16, 0x0003565b}, /* _TKSuBuff */ 2901 {16, 0x000351ee}, /* _TKFuBuff */ 2902 {16, 0x000353b8}, /* _TKFuBufLen */ 2903 {16, 0x00049354}, /* _ldrValidateMteHandle */ 2904 {0 , 0x00000b34}, /* _pTCBCur */ 2905 {0 , 0x00000b30}, /* _pPTDACur */ 2906 {5 , 0x0000f8c0}, /* ptda_start */ 2907 {5 , 0x0000f9da}, /* ptda_environ */ 2908 {5 , 0x0000fe94}, /* ptda_ptdasem */ 2909 {5 , 0x0000ffa2}, /* ptda_module */ 2910 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 2911 {11, 0x0001d580}, /* _ldrpFileNameBuf */ 2912 {16, 0x00044c34}, /* SecPathFromSFN */ 2913 } 2914 }, 2915 #endif 2916 #ifdef ALLKERNELS 2917 { /* 8263HU.SYM */ 2918 8263, KF_UNI | KF_HALFSTRICT, 16, 2919 { 2920 {15, 0x0000939c}, /* _ldrRead */ 2921 {15, 0x0003c1c4}, /* _ldrOpen */ 2922 {15, 0x0003ca50}, /* _ldrClose */ 2923 {15, 0x0003caa0}, /* _LDRQAppType */ 2924 {15, 0x0003a3a4}, /* _ldrEnum32bitRelRecs */ 2925 {15, 0x00003a78}, /* _IOSftOpen */ 2926 {15, 0x00003ee4}, /* _IOSftClose */ 2927 {15, 0x00003f79}, /* _IOSftTransPath */ 2928 {15, 0x00003d32}, /* _IOSftReadAt */ 2929 {15, 0x00003d39}, /* _IOSftWriteAt */ 2930 {15, 0x00004092}, /* _SftFileSize */ 2931 {15, 0x00038670}, /* _VMAllocMem */ 2932 {15, 0x0001e0e6}, /* _VMGetOwner */ 2933 {15, 0x00044b5e}, /* g_tkExecPgm */ 2934 {15, 0x00041ac3}, /* _tkStartProcess */ 2935 {11, 0x0000d7d4}, /* f_FuStrLenZ */ 2936 {11, 0x0000d78a}, /* f_FuStrLen */ 2937 {11, 0x0000d8c8}, /* f_FuBuff */ 2938 {15, 0x0001d44c}, /* _VMObjHandleInfo */ 2939 {15, 0x00045554}, /* _ldrASMpMTEFromHandle */ 2940 {15, 0x0003c43b}, /* _ldrOpenPath */ 2941 {15, 0x00038db8}, /* _LDRClearSem */ 2942 {15, 0x00041250}, /* _ldrFindModule */ 2943 {15, 0x0000a810}, /* _KSEMRequestMutex */ 2944 {15, 0x0000a8e7}, /* _KSEMReleaseMutex */ 2945 {15, 0x0000a912}, /* _KSEMQueryMutex */ 2946 {15, 0x0000abb2}, /* _KSEMInit */ 2947 {10, 0x0001ca70}, /* _LdrSem */ 2948 {10, 0x00019eb4}, /* _LDRLibPath */ 2949 {15, 0x00028dc1}, /* _TKSuBuff */ 2950 {15, 0x000289f7}, /* _TKFuBuff */ 2951 {15, 0x00028b81}, /* _TKFuBufLen */ 2952 {15, 0x00038df4}, /* _ldrValidateMteHandle */ 2953 {10, 0x000070ec}, /* _pTCBCur */ 2954 {10, 0x000070e8}, /* _pPTDACur */ 2955 {4 , 0x0000f99c}, /* ptda_start */ 2956 {4 , 0x0000fa4e}, /* ptda_environ */ 2957 {4 , 0x0000fea8}, /* ptda_ptdasem */ 2958 {4 , 0x0000ffaa}, /* ptda_module */ 2959 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 2960 {10, 0x0001bdfc}, /* _ldrpFileNameBuf */ 2961 {15, 0x0003541b}, /* SecPathFromSFN */ 2962 } 2963 }, 2964 #endif 435 2965 { /* 8263RS.SYM */ 436 8263, 'R', TYPE_SMP, 15,2966 8263, KF_SMP, 15, 437 2967 { 438 2968 {14, 0x0000c250}, /* _ldrRead */ … … 450 2980 {14, 0x00027a14}, /* _VMGetOwner */ 451 2981 {14, 0x000547a2}, /* g_tkExecPgm */ 2982 {14, 0x00050f91}, /* _tkStartProcess */ 452 2983 {11, 0x0000a170}, /* f_FuStrLenZ */ 453 2984 {11, 0x0000a0f0}, /* f_FuStrLen */ 454 2985 {11, 0x0000a319}, /* f_FuBuff */ 2986 {14, 0x0002666b}, /* _VMObjHandleInfo */ 2987 {14, 0x00055284}, /* _ldrASMpMTEFromHandle */ 2988 {14, 0x0004a706}, /* _ldrOpenPath */ 2989 {14, 0x00046ef8}, /* _LDRClearSem */ 2990 {14, 0x0005066d}, /* _ldrFindModule */ 2991 {14, 0x0000d8c0}, /* _KSEMRequestMutex */ 2992 {14, 0x0000d953}, /* _KSEMReleaseMutex */ 2993 {14, 0x0000d97e}, /* _KSEMQueryMutex */ 2994 {14, 0x0000db93}, /* _KSEMInit */ 2995 {9 , 0x0000d228}, /* _LdrSem */ 2996 {9 , 0x0000b784}, /* _LDRLibPath */ 2997 {14, 0x00033e3f}, /* _TKSuBuff */ 2998 {14, 0x000339d2}, /* _TKFuBuff */ 2999 {14, 0x00033b9c}, /* _TKFuBufLen */ 3000 {14, 0x00046f44}, /* _ldrValidateMteHandle */ 3001 {0 , 0x00000b34}, /* _pTCBCur */ 3002 {0 , 0x00000b30}, /* _pPTDACur */ 3003 {3 , 0x0000f8c0}, /* ptda_start */ 3004 {3 , 0x0000f9da}, /* ptda_environ */ 3005 {3 , 0x0000fe94}, /* ptda_ptdasem */ 3006 {3 , 0x0000ffa2}, /* ptda_module */ 3007 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 3008 {9 , 0x0000cfe8}, /* _ldrpFileNameBuf */ 3009 {14, 0x00042824}, /* SecPathFromSFN */ 455 3010 } 456 3011 }, 457 3012 { /* 8263RU.SYM */ 458 8263, 'R', TYPE_UNI, 14,3013 8263, KF_UNI, 14, 459 3014 { 460 3015 {13, 0x00009308}, /* _ldrRead */ … … 472 3027 {13, 0x0001d27e}, /* _VMGetOwner */ 473 3028 {13, 0x0004321e}, /* g_tkExecPgm */ 474 {9, 0x0000d7d4}, /* f_FuStrLenZ */ 475 {9, 0x0000d78a}, /* f_FuStrLen */ 476 {9, 0x0000d8c8}, /* f_FuBuff */ 477 } 478 }, 3029 {13, 0x000401a3}, /* _tkStartProcess */ 3030 {9 , 0x0000d7d4}, /* f_FuStrLenZ */ 3031 {9 , 0x0000d78a}, /* f_FuStrLen */ 3032 {9 , 0x0000d8c8}, /* f_FuBuff */ 3033 {13, 0x0001c5e4}, /* _VMObjHandleInfo */ 3034 {13, 0x00043c14}, /* _ldrASMpMTEFromHandle */ 3035 {13, 0x0003ab57}, /* _ldrOpenPath */ 3036 {13, 0x000374d4}, /* _LDRClearSem */ 3037 {13, 0x0003f930}, /* _ldrFindModule */ 3038 {13, 0x0000a654}, /* _KSEMRequestMutex */ 3039 {13, 0x0000a6e7}, /* _KSEMReleaseMutex */ 3040 {13, 0x0000a712}, /* _KSEMQueryMutex */ 3041 {13, 0x0000a927}, /* _KSEMInit */ 3042 {8 , 0x0000c8ac}, /* _LdrSem */ 3043 {8 , 0x00009cf4}, /* _LDRLibPath */ 3044 {13, 0x00027f59}, /* _TKSuBuff */ 3045 {13, 0x00027b8f}, /* _TKFuBuff */ 3046 {13, 0x00027d19}, /* _TKFuBufLen */ 3047 {13, 0x00037510}, /* _ldrValidateMteHandle */ 3048 {8 , 0x000070ec}, /* _pTCBCur */ 3049 {8 , 0x000070e8}, /* _pPTDACur */ 3050 {2 , 0x0000f99c}, /* ptda_start */ 3051 {2 , 0x0000fa4e}, /* ptda_environ */ 3052 {2 , 0x0000fea8}, /* ptda_ptdasem */ 3053 {2 , 0x0000ffaa}, /* ptda_module */ 3054 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 3055 {8 , 0x0000bc38}, /* _ldrpFileNameBuf */ 3056 {13, 0x00033b37}, /* SecPathFromSFN */ 3057 } 3058 }, 3059 #ifdef ALLKERNELS 3060 { /* 8264AS.SYM */ 3061 8264, KF_SMP | KF_ALLSTRICT, 17, 3062 { 3063 {16, 0x0000d854}, /* _ldrRead */ 3064 {16, 0x0005c344}, /* _ldrOpen */ 3065 {16, 0x0005ce84}, /* _ldrClose */ 3066 {16, 0x0005ced4}, /* _LDRQAppType */ 3067 {16, 0x0005a5f0}, /* _ldrEnum32bitRelRecs */ 3068 {16, 0x0000632c}, /* _IOSftOpen */ 3069 {16, 0x00006814}, /* _IOSftClose */ 3070 {16, 0x000068cc}, /* _IOSftTransPath */ 3071 {16, 0x00006628}, /* _IOSftReadAt */ 3072 {16, 0x0000662f}, /* _IOSftWriteAt */ 3073 {16, 0x00006a04}, /* _SftFileSize */ 3074 {16, 0x00057950}, /* _VMAllocMem */ 3075 {16, 0x0002feb6}, /* _VMGetOwner */ 3076 {16, 0x000678cc}, /* g_tkExecPgm */ 3077 {16, 0x00063784}, /* _tkStartProcess */ 3078 {13, 0x0000a840}, /* f_FuStrLenZ */ 3079 {13, 0x0000a7c0}, /* f_FuStrLen */ 3080 {13, 0x0000aa08}, /* f_FuBuff */ 3081 {16, 0x0002e6d7}, /* _VMObjHandleInfo */ 3082 {16, 0x0006848c}, /* _ldrASMpMTEFromHandle */ 3083 {16, 0x0005c5fe}, /* _ldrOpenPath */ 3084 {16, 0x000585ec}, /* _LDRClearSem */ 3085 {16, 0x00062dbc}, /* _ldrFindModule */ 3086 {16, 0x0000f5cc}, /* _KSEMRequestMutex */ 3087 {16, 0x0000f6e0}, /* _KSEMReleaseMutex */ 3088 {16, 0x0000f740}, /* _KSEMQueryMutex */ 3089 {16, 0x0000fac4}, /* _KSEMInit */ 3090 {11, 0x0002c858}, /* _LdrSem */ 3091 {11, 0x0002a23c}, /* _LDRLibPath */ 3092 {16, 0x0003f274}, /* _TKSuBuff */ 3093 {16, 0x0003edc5}, /* _TKFuBuff */ 3094 {16, 0x0003efd1}, /* _TKFuBufLen */ 3095 {16, 0x00058684}, /* _ldrValidateMteHandle */ 3096 {0 , 0x00000b34}, /* _pTCBCur */ 3097 {0 , 0x00000b30}, /* _pPTDACur */ 3098 {5 , 0x0000f8b4}, /* ptda_start */ 3099 {5 , 0x0000f9ce}, /* ptda_environ */ 3100 {5 , 0x0000fe88}, /* ptda_ptdasem */ 3101 {5 , 0x0000ffa2}, /* ptda_module */ 3102 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 3103 {11, 0x0002c440}, /* _ldrpFileNameBuf */ 3104 {16, 0x00053650}, /* SecPathFromSFN */ 3105 } 3106 }, 3107 #endif 3108 #ifdef ALLKERNELS 3109 { /* 8264AU.SYM */ 3110 8264, KF_UNI | KF_ALLSTRICT, 16, 3111 { 3112 {15, 0x0000a3a8}, /* _ldrRead */ 3113 {15, 0x0004a5f0}, /* _ldrOpen */ 3114 {15, 0x0004af88}, /* _ldrClose */ 3115 {15, 0x0004afd8}, /* _LDRQAppType */ 3116 {15, 0x00048508}, /* _ldrEnum32bitRelRecs */ 3117 {15, 0x00004530}, /* _IOSftOpen */ 3118 {15, 0x000049a8}, /* _IOSftClose */ 3119 {15, 0x00004a40}, /* _IOSftTransPath */ 3120 {15, 0x000047f4}, /* _IOSftReadAt */ 3121 {15, 0x000047fb}, /* _IOSftWriteAt */ 3122 {15, 0x00004b68}, /* _SftFileSize */ 3123 {15, 0x00045e84}, /* _VMAllocMem */ 3124 {15, 0x000238ca}, /* _VMGetOwner */ 3125 {15, 0x000540d0}, /* g_tkExecPgm */ 3126 {15, 0x000507d4}, /* _tkStartProcess */ 3127 {11, 0x0000ea10}, /* f_FuStrLenZ */ 3128 {11, 0x0000e9c4}, /* f_FuStrLen */ 3129 {11, 0x0000eb28}, /* f_FuBuff */ 3130 {15, 0x00022814}, /* _VMObjHandleInfo */ 3131 {15, 0x00054b98}, /* _ldrASMpMTEFromHandle */ 3132 {15, 0x0004a87b}, /* _ldrOpenPath */ 3133 {15, 0x00046938}, /* _LDRClearSem */ 3134 {15, 0x0004febf}, /* _ldrFindModule */ 3135 {15, 0x0000bcd4}, /* _KSEMRequestMutex */ 3136 {15, 0x0000bde8}, /* _KSEMReleaseMutex */ 3137 {15, 0x0000be48}, /* _KSEMQueryMutex */ 3138 {15, 0x0000c1cc}, /* _KSEMInit */ 3139 {10, 0x0002a384}, /* _LdrSem */ 3140 {10, 0x00026b58}, /* _LDRLibPath */ 3141 {15, 0x00031888}, /* _TKSuBuff */ 3142 {15, 0x00031478}, /* _TKFuBuff */ 3143 {15, 0x00031644}, /* _TKFuBufLen */ 3144 {15, 0x000469c0}, /* _ldrValidateMteHandle */ 3145 {10, 0x0000b868}, /* _pTCBCur */ 3146 {10, 0x0000b864}, /* _pPTDACur */ 3147 {4 , 0x0000f994}, /* ptda_start */ 3148 {4 , 0x0000fa46}, /* ptda_environ */ 3149 {4 , 0x0000fea0}, /* ptda_ptdasem */ 3150 {4 , 0x0000ffaa}, /* ptda_module */ 3151 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 3152 {10, 0x00029538}, /* _ldrpFileNameBuf */ 3153 {15, 0x000426a7}, /* SecPathFromSFN */ 3154 } 3155 }, 3156 #endif 3157 #ifdef ALLKERNELS 3158 { /* 8264HS.SYM */ 3159 8264, KF_SMP | KF_HALFSTRICT, 17, 3160 { 3161 {16, 0x0000c360}, /* _ldrRead */ 3162 {16, 0x0004c7b0}, /* _ldrOpen */ 3163 {16, 0x0004d1d0}, /* _ldrClose */ 3164 {16, 0x0004d220}, /* _LDRQAppType */ 3165 {16, 0x0004aca8}, /* _ldrEnum32bitRelRecs */ 3166 {16, 0x00005484}, /* _IOSftOpen */ 3167 {16, 0x0000595d}, /* _IOSftClose */ 3168 {16, 0x00005a14}, /* _IOSftTransPath */ 3169 {16, 0x00005774}, /* _IOSftReadAt */ 3170 {16, 0x0000577b}, /* _IOSftWriteAt */ 3171 {16, 0x00005b3e}, /* _SftFileSize */ 3172 {16, 0x00048898}, /* _VMAllocMem */ 3173 {16, 0x00029210}, /* _VMGetOwner */ 3174 {16, 0x00056be2}, /* g_tkExecPgm */ 3175 {16, 0x00053359}, /* _tkStartProcess */ 3176 {13, 0x0000a178}, /* f_FuStrLenZ */ 3177 {13, 0x0000a0f8}, /* f_FuStrLen */ 3178 {13, 0x0000a321}, /* f_FuBuff */ 3179 {16, 0x00027e67}, /* _VMObjHandleInfo */ 3180 {16, 0x000576c4}, /* _ldrASMpMTEFromHandle */ 3181 {16, 0x0004ca56}, /* _ldrOpenPath */ 3182 {16, 0x0004925c}, /* _LDRClearSem */ 3183 {16, 0x00052a35}, /* _ldrFindModule */ 3184 {16, 0x0000db54}, /* _KSEMRequestMutex */ 3185 {16, 0x0000dc2b}, /* _KSEMReleaseMutex */ 3186 {16, 0x0000dc56}, /* _KSEMQueryMutex */ 3187 {16, 0x0000def6}, /* _KSEMInit */ 3188 {11, 0x0001d7c8}, /* _LdrSem */ 3189 {11, 0x0001bd1c}, /* _LDRLibPath */ 3190 {16, 0x00035653}, /* _TKSuBuff */ 3191 {16, 0x000351e6}, /* _TKFuBuff */ 3192 {16, 0x000353b0}, /* _TKFuBufLen */ 3193 {16, 0x000492a8}, /* _ldrValidateMteHandle */ 3194 {0 , 0x00000b34}, /* _pTCBCur */ 3195 {0 , 0x00000b30}, /* _pPTDACur */ 3196 {5 , 0x0000f8c0}, /* ptda_start */ 3197 {5 , 0x0000f9da}, /* ptda_environ */ 3198 {5 , 0x0000fe94}, /* ptda_ptdasem */ 3199 {5 , 0x0000ffa2}, /* ptda_module */ 3200 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 3201 {11, 0x0001d588}, /* _ldrpFileNameBuf */ 3202 {16, 0x00044c58}, /* SecPathFromSFN */ 3203 } 3204 }, 3205 #endif 3206 #ifdef ALLKERNELS 3207 { /* 8264HU.SYM */ 3208 8264, KF_UNI | KF_HALFSTRICT, 16, 3209 { 3210 {15, 0x000093a0}, /* _ldrRead */ 3211 {15, 0x0003c204}, /* _ldrOpen */ 3212 {15, 0x0003ca88}, /* _ldrClose */ 3213 {15, 0x0003cad8}, /* _LDRQAppType */ 3214 {15, 0x0003a3f8}, /* _ldrEnum32bitRelRecs */ 3215 {15, 0x00003a7c}, /* _IOSftOpen */ 3216 {15, 0x00003ee8}, /* _IOSftClose */ 3217 {15, 0x00003f7d}, /* _IOSftTransPath */ 3218 {15, 0x00003d36}, /* _IOSftReadAt */ 3219 {15, 0x00003d3d}, /* _IOSftWriteAt */ 3220 {15, 0x00004096}, /* _SftFileSize */ 3221 {15, 0x000386c4}, /* _VMAllocMem */ 3222 {15, 0x0001e20e}, /* _VMGetOwner */ 3223 {15, 0x00044c02}, /* g_tkExecPgm */ 3224 {15, 0x00041b67}, /* _tkStartProcess */ 3225 {11, 0x0000d7e0}, /* f_FuStrLenZ */ 3226 {11, 0x0000d796}, /* f_FuStrLen */ 3227 {11, 0x0000d8d4}, /* f_FuBuff */ 3228 {15, 0x0001d574}, /* _VMObjHandleInfo */ 3229 {15, 0x000455f8}, /* _ldrASMpMTEFromHandle */ 3230 {15, 0x0003c47b}, /* _ldrOpenPath */ 3231 {15, 0x00038e0c}, /* _LDRClearSem */ 3232 {15, 0x000412f2}, /* _ldrFindModule */ 3233 {15, 0x0000a814}, /* _KSEMRequestMutex */ 3234 {15, 0x0000a8eb}, /* _KSEMReleaseMutex */ 3235 {15, 0x0000a916}, /* _KSEMQueryMutex */ 3236 {15, 0x0000abb6}, /* _KSEMInit */ 3237 {10, 0x0001ca70}, /* _LdrSem */ 3238 {10, 0x00019eb4}, /* _LDRLibPath */ 3239 {15, 0x00028f15}, /* _TKSuBuff */ 3240 {15, 0x00028b49}, /* _TKFuBuff */ 3241 {15, 0x00028cd3}, /* _TKFuBufLen */ 3242 {15, 0x00038e48}, /* _ldrValidateMteHandle */ 3243 {10, 0x000070ec}, /* _pTCBCur */ 3244 {10, 0x000070e8}, /* _pPTDACur */ 3245 {4 , 0x0000f99c}, /* ptda_start */ 3246 {4 , 0x0000fa4e}, /* ptda_environ */ 3247 {4 , 0x0000fea8}, /* ptda_ptdasem */ 3248 {4 , 0x0000ffaa}, /* ptda_module */ 3249 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 3250 {10, 0x0001bdfc}, /* _ldrpFileNameBuf */ 3251 {15, 0x0003553b}, /* SecPathFromSFN */ 3252 } 3253 }, 3254 #endif 479 3255 { /* 8264RS.SYM */ 480 8264, 'R', TYPE_SMP, 15,3256 8264, KF_SMP, 15, 481 3257 { 482 3258 {14, 0x0000c250}, /* _ldrRead */ … … 494 3270 {14, 0x000279f4}, /* _VMGetOwner */ 495 3271 {14, 0x00054942}, /* g_tkExecPgm */ 3272 {14, 0x0005103d}, /* _tkStartProcess */ 496 3273 {11, 0x0000a178}, /* f_FuStrLenZ */ 497 3274 {11, 0x0000a0f8}, /* f_FuStrLen */ 498 3275 {11, 0x0000a321}, /* f_FuBuff */ 3276 {14, 0x0002664b}, /* _VMObjHandleInfo */ 3277 {14, 0x00055424}, /* _ldrASMpMTEFromHandle */ 3278 {14, 0x0004a7ca}, /* _ldrOpenPath */ 3279 {14, 0x00046fd0}, /* _LDRClearSem */ 3280 {14, 0x00050719}, /* _ldrFindModule */ 3281 {14, 0x0000d914}, /* _KSEMRequestMutex */ 3282 {14, 0x0000d9a7}, /* _KSEMReleaseMutex */ 3283 {14, 0x0000d9d2}, /* _KSEMQueryMutex */ 3284 {14, 0x0000dbe7}, /* _KSEMInit */ 3285 {9 , 0x0000d238}, /* _LdrSem */ 3286 {9 , 0x0000b794}, /* _LDRLibPath */ 3287 {14, 0x00033e37}, /* _TKSuBuff */ 3288 {14, 0x000339ca}, /* _TKFuBuff */ 3289 {14, 0x00033b94}, /* _TKFuBufLen */ 3290 {14, 0x0004701c}, /* _ldrValidateMteHandle */ 3291 {0 , 0x00000b34}, /* _pTCBCur */ 3292 {0 , 0x00000b30}, /* _pPTDACur */ 3293 {3 , 0x0000f8c0}, /* ptda_start */ 3294 {3 , 0x0000f9da}, /* ptda_environ */ 3295 {3 , 0x0000fe94}, /* ptda_ptdasem */ 3296 {3 , 0x0000ffa2}, /* ptda_module */ 3297 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 3298 {9 , 0x0000cff8}, /* _ldrpFileNameBuf */ 3299 {14, 0x000429cc}, /* SecPathFromSFN */ 499 3300 } 500 3301 }, 501 3302 { /* 8264RU.SYM */ 502 8264, 'R', TYPE_UNI, 14,3303 8264, KF_UNI, 14, 503 3304 { 504 3305 {13, 0x0000930c}, /* _ldrRead */ … … 516 3317 {13, 0x0001d3a6}, /* _VMGetOwner */ 517 3318 {13, 0x00043432}, /* g_tkExecPgm */ 518 {9, 0x0000d7e0}, /* f_FuStrLenZ */ 519 {9, 0x0000d796}, /* f_FuStrLen */ 520 {9, 0x0000d8d4}, /* f_FuBuff */ 521 } 522 }, 3319 {13, 0x000403bb}, /* _tkStartProcess */ 3320 {9 , 0x0000d7e0}, /* f_FuStrLenZ */ 3321 {9 , 0x0000d796}, /* f_FuStrLen */ 3322 {9 , 0x0000d8d4}, /* f_FuBuff */ 3323 {13, 0x0001c70c}, /* _VMObjHandleInfo */ 3324 {13, 0x00043e28}, /* _ldrASMpMTEFromHandle */ 3325 {13, 0x0003ad0b}, /* _ldrOpenPath */ 3326 {13, 0x0003769c}, /* _LDRClearSem */ 3327 {13, 0x0003fb46}, /* _ldrFindModule */ 3328 {13, 0x0000a658}, /* _KSEMRequestMutex */ 3329 {13, 0x0000a6eb}, /* _KSEMReleaseMutex */ 3330 {13, 0x0000a716}, /* _KSEMQueryMutex */ 3331 {13, 0x0000a92b}, /* _KSEMInit */ 3332 {8 , 0x0000c8b4}, /* _LdrSem */ 3333 {8 , 0x00009cfc}, /* _LDRLibPath */ 3334 {13, 0x000280ad}, /* _TKSuBuff */ 3335 {13, 0x00027ce1}, /* _TKFuBuff */ 3336 {13, 0x00027e6b}, /* _TKFuBufLen */ 3337 {13, 0x000376d8}, /* _ldrValidateMteHandle */ 3338 {8 , 0x000070ec}, /* _pTCBCur */ 3339 {8 , 0x000070e8}, /* _pPTDACur */ 3340 {2 , 0x0000f99c}, /* ptda_start */ 3341 {2 , 0x0000fa4e}, /* ptda_environ */ 3342 {2 , 0x0000fea8}, /* ptda_ptdasem */ 3343 {2 , 0x0000ffaa}, /* ptda_module */ 3344 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 3345 {8 , 0x0000bc40}, /* _ldrpFileNameBuf */ 3346 {13, 0x00033dcb}, /* SecPathFromSFN */ 3347 } 3348 }, 3349 #ifdef ALLKERNELS 3350 { /* 8265AS.SYM */ 3351 8265, KF_SMP | KF_ALLSTRICT, 17, 3352 { 3353 {16, 0x0000d854}, /* _ldrRead */ 3354 {16, 0x0005c394}, /* _ldrOpen */ 3355 {16, 0x0005ced4}, /* _ldrClose */ 3356 {16, 0x0005cf24}, /* _LDRQAppType */ 3357 {16, 0x0005a62c}, /* _ldrEnum32bitRelRecs */ 3358 {16, 0x0000632c}, /* _IOSftOpen */ 3359 {16, 0x00006814}, /* _IOSftClose */ 3360 {16, 0x000068cc}, /* _IOSftTransPath */ 3361 {16, 0x00006628}, /* _IOSftReadAt */ 3362 {16, 0x0000662f}, /* _IOSftWriteAt */ 3363 {16, 0x00006a04}, /* _SftFileSize */ 3364 {16, 0x0005798c}, /* _VMAllocMem */ 3365 {16, 0x0002fede}, /* _VMGetOwner */ 3366 {16, 0x0006791c}, /* g_tkExecPgm */ 3367 {16, 0x000637d4}, /* _tkStartProcess */ 3368 {13, 0x0000a840}, /* f_FuStrLenZ */ 3369 {13, 0x0000a7c0}, /* f_FuStrLen */ 3370 {13, 0x0000aa08}, /* f_FuBuff */ 3371 {16, 0x0002e6ff}, /* _VMObjHandleInfo */ 3372 {16, 0x000684dc}, /* _ldrASMpMTEFromHandle */ 3373 {16, 0x0005c64e}, /* _ldrOpenPath */ 3374 {16, 0x00058628}, /* _LDRClearSem */ 3375 {16, 0x00062e0c}, /* _ldrFindModule */ 3376 {16, 0x0000f5b8}, /* _KSEMRequestMutex */ 3377 {16, 0x0000f6cc}, /* _KSEMReleaseMutex */ 3378 {16, 0x0000f72c}, /* _KSEMQueryMutex */ 3379 {16, 0x0000fab0}, /* _KSEMInit */ 3380 {11, 0x0002c834}, /* _LdrSem */ 3381 {11, 0x0002a218}, /* _LDRLibPath */ 3382 {16, 0x0003f29c}, /* _TKSuBuff */ 3383 {16, 0x0003eded}, /* _TKFuBuff */ 3384 {16, 0x0003eff9}, /* _TKFuBufLen */ 3385 {16, 0x000586c0}, /* _ldrValidateMteHandle */ 3386 {0 , 0x00000b34}, /* _pTCBCur */ 3387 {0 , 0x00000b30}, /* _pPTDACur */ 3388 {5 , 0x0000f8b4}, /* ptda_start */ 3389 {5 , 0x0000f9ce}, /* ptda_environ */ 3390 {5 , 0x0000fe88}, /* ptda_ptdasem */ 3391 {5 , 0x0000ffa2}, /* ptda_module */ 3392 {5 , 0x0000f9d0}, /* ptda_pBeginLIBPATH */ 3393 {11, 0x0002c41c}, /* _ldrpFileNameBuf */ 3394 {16, 0x0005368c}, /* SecPathFromSFN */ 3395 } 3396 }, 3397 #endif 3398 #ifdef ALLKERNELS 3399 { /* 8265AU.SYM */ 3400 8265, KF_UNI | KF_ALLSTRICT, 16, 3401 { 3402 {15, 0x0000a3a8}, /* _ldrRead */ 3403 {15, 0x0004a658}, /* _ldrOpen */ 3404 {15, 0x0004aff0}, /* _ldrClose */ 3405 {15, 0x0004b040}, /* _LDRQAppType */ 3406 {15, 0x00048558}, /* _ldrEnum32bitRelRecs */ 3407 {15, 0x00004530}, /* _IOSftOpen */ 3408 {15, 0x000049a8}, /* _IOSftClose */ 3409 {15, 0x00004a40}, /* _IOSftTransPath */ 3410 {15, 0x000047f4}, /* _IOSftReadAt */ 3411 {15, 0x000047fb}, /* _IOSftWriteAt */ 3412 {15, 0x00004b68}, /* _SftFileSize */ 3413 {15, 0x00045ed4}, /* _VMAllocMem */ 3414 {15, 0x0002390e}, /* _VMGetOwner */ 3415 {15, 0x00054138}, /* g_tkExecPgm */ 3416 {15, 0x0005083c}, /* _tkStartProcess */ 3417 {11, 0x0000ea50}, /* f_FuStrLenZ */ 3418 {11, 0x0000ea04}, /* f_FuStrLen */ 3419 {11, 0x0000eb68}, /* f_FuBuff */ 3420 {15, 0x00022858}, /* _VMObjHandleInfo */ 3421 {15, 0x00054c00}, /* _ldrASMpMTEFromHandle */ 3422 {15, 0x0004a8e3}, /* _ldrOpenPath */ 3423 {15, 0x00046988}, /* _LDRClearSem */ 3424 {15, 0x0004ff27}, /* _ldrFindModule */ 3425 {15, 0x0000bccc}, /* _KSEMRequestMutex */ 3426 {15, 0x0000bde0}, /* _KSEMReleaseMutex */ 3427 {15, 0x0000be40}, /* _KSEMQueryMutex */ 3428 {15, 0x0000c1c4}, /* _KSEMInit */ 3429 {10, 0x0002a360}, /* _LdrSem */ 3430 {10, 0x00026b34}, /* _LDRLibPath */ 3431 {15, 0x000318c8}, /* _TKSuBuff */ 3432 {15, 0x000314b8}, /* _TKFuBuff */ 3433 {15, 0x00031684}, /* _TKFuBufLen */ 3434 {15, 0x00046a10}, /* _ldrValidateMteHandle */ 3435 {10, 0x0000b868}, /* _pTCBCur */ 3436 {10, 0x0000b864}, /* _pPTDACur */ 3437 {4 , 0x0000f994}, /* ptda_start */ 3438 {4 , 0x0000fa46}, /* ptda_environ */ 3439 {4 , 0x0000fea0}, /* ptda_ptdasem */ 3440 {4 , 0x0000ffaa}, /* ptda_module */ 3441 {4 , 0x0000fa48}, /* ptda_pBeginLIBPATH */ 3442 {10, 0x00029514}, /* _ldrpFileNameBuf */ 3443 {15, 0x000426f7}, /* SecPathFromSFN */ 3444 } 3445 }, 3446 #endif 3447 #ifdef ALLKERNELS 3448 { /* 8265HS.SYM */ 3449 8265, KF_SMP | KF_HALFSTRICT, 17, 3450 { 3451 {16, 0x0000c360}, /* _ldrRead */ 3452 {16, 0x0004c86c}, /* _ldrOpen */ 3453 {16, 0x0004d28c}, /* _ldrClose */ 3454 {16, 0x0004d2dc}, /* _LDRQAppType */ 3455 {16, 0x0004ad50}, /* _ldrEnum32bitRelRecs */ 3456 {16, 0x00005484}, /* _IOSftOpen */ 3457 {16, 0x0000595d}, /* _IOSftClose */ 3458 {16, 0x00005a14}, /* _IOSftTransPath */ 3459 {16, 0x00005774}, /* _IOSftReadAt */ 3460 {16, 0x0000577b}, /* _IOSftWriteAt */ 3461 {16, 0x00005b3e}, /* _SftFileSize */ 3462 {16, 0x00048940}, /* _VMAllocMem */ 3463 {16, 0x000292a4}, /* _VMGetOwner */ 3464 {16, 0x00056c8e}, /* g_tkExecPgm */ 3465 {16, 0x00053405}, /* _tkStartProcess */ 3466 {13, 0x0000a178}, /* f_FuStrLenZ */ 3467 {13, 0x0000a0f8}, /* f_FuStrLen */ 3468 {13, 0x0000a321}, /* f_FuBuff */ 3469 {16, 0x00027efb}, /* _VMObjHandleInfo */ 3470 {16, 0x00057770}, /* _ldrASMpMTEFromHandle */ 3471 {16, 0x0004cb12}, /* _ldrOpenPath */ 3472 {16, 0x00049304}, /* _LDRClearSem */ 3473 {16, 0x00052ae1}, /* _ldrFindModule */ 3474 {16, 0x0000db44}, /* _KSEMRequestMutex */ 3475 {16, 0x0000dc1b}, /* _KSEMReleaseMutex */ 3476 {16, 0x0000dc46}, /* _KSEMQueryMutex */ 3477 {16, 0x0000dee6}, /* _KSEMInit */ 3478 {11, 0x0001d7c8}, /* _LdrSem */ 3479 {11, 0x0001bd1c}, /* _LDRLibPath */ 3480 {16, 0x000356e7}, /* _TKSuBuff */ 3481 {16, 0x0003527a}, /* _TKFuBuff */ 3482 {16, 0x00035444}, /* _TKFuBufLen */ 3483 {16, 0x00049350}, /* _ldrValidateMteHandle */ 3484 {0 , 0x00000b34}, /* _pTCBCur */ 3485 {0 , 0x00000b30}, /* _pPTDACur */ 3486 {5 , 0x0000f8c0}, /* ptda_start */ 3487 {5 , 0x0000f9da}, /* ptda_environ */ 3488 {5 , 0x0000fe94}, /* ptda_ptdasem */ 3489 {5 , 0x0000ffa2}, /* ptda_module */ 3490 {5 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 3491 {11, 0x0001d588}, /* _ldrpFileNameBuf */ 3492 {16, 0x00044d00}, /* SecPathFromSFN */ 3493 } 3494 }, 3495 #endif 3496 #ifdef ALLKERNELS 3497 { /* 8265HU.SYM */ 3498 8265, KF_UNI | KF_HALFSTRICT, 16, 3499 { 3500 {15, 0x000093a0}, /* _ldrRead */ 3501 {15, 0x0003c12c}, /* _ldrOpen */ 3502 {15, 0x0003c9b0}, /* _ldrClose */ 3503 {15, 0x0003ca00}, /* _LDRQAppType */ 3504 {15, 0x0003a30c}, /* _ldrEnum32bitRelRecs */ 3505 {15, 0x00003a7c}, /* _IOSftOpen */ 3506 {15, 0x00003ee8}, /* _IOSftClose */ 3507 {15, 0x00003f7d}, /* _IOSftTransPath */ 3508 {15, 0x00003d36}, /* _IOSftReadAt */ 3509 {15, 0x00003d3d}, /* _IOSftWriteAt */ 3510 {15, 0x00004096}, /* _SftFileSize */ 3511 {15, 0x000385d8}, /* _VMAllocMem */ 3512 {15, 0x0001e116}, /* _VMGetOwner */ 3513 {15, 0x00044b2a}, /* g_tkExecPgm */ 3514 {15, 0x00041a8f}, /* _tkStartProcess */ 3515 {11, 0x0000d830}, /* f_FuStrLenZ */ 3516 {11, 0x0000d7e6}, /* f_FuStrLen */ 3517 {11, 0x0000d924}, /* f_FuBuff */ 3518 {15, 0x0001d47c}, /* _VMObjHandleInfo */ 3519 {15, 0x00045520}, /* _ldrASMpMTEFromHandle */ 3520 {15, 0x0003c3a3}, /* _ldrOpenPath */ 3521 {15, 0x00038d20}, /* _LDRClearSem */ 3522 {15, 0x0004121a}, /* _ldrFindModule */ 3523 {15, 0x0000a808}, /* _KSEMRequestMutex */ 3524 {15, 0x0000a8df}, /* _KSEMReleaseMutex */ 3525 {15, 0x0000a90a}, /* _KSEMQueryMutex */ 3526 {15, 0x0000abaa}, /* _KSEMInit */ 3527 {10, 0x0001ca70}, /* _LdrSem */ 3528 {10, 0x00019eb4}, /* _LDRLibPath */ 3529 {15, 0x00028e1d}, /* _TKSuBuff */ 3530 {15, 0x00028a51}, /* _TKFuBuff */ 3531 {15, 0x00028bdb}, /* _TKFuBufLen */ 3532 {15, 0x00038d5c}, /* _ldrValidateMteHandle */ 3533 {10, 0x000070ec}, /* _pTCBCur */ 3534 {10, 0x000070e8}, /* _pPTDACur */ 3535 {4 , 0x0000f99c}, /* ptda_start */ 3536 {4 , 0x0000fa4e}, /* ptda_environ */ 3537 {4 , 0x0000fea8}, /* ptda_ptdasem */ 3538 {4 , 0x0000ffaa}, /* ptda_module */ 3539 {4 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 3540 {10, 0x0001bdfc}, /* _ldrpFileNameBuf */ 3541 {15, 0x00035453}, /* SecPathFromSFN */ 3542 } 3543 }, 3544 #endif 523 3545 { /* 8265RS.SYM */ 524 8265, 'R', TYPE_SMP, 15,3546 8265, KF_SMP, 15, 525 3547 { 526 3548 {14, 0x0000c250}, /* _ldrRead */ … … 538 3560 {14, 0x00027a7c}, /* _VMGetOwner */ 539 3561 {14, 0x000549e2}, /* g_tkExecPgm */ 3562 {14, 0x000510dd}, /* _tkStartProcess */ 540 3563 {11, 0x0000a178}, /* f_FuStrLenZ */ 541 3564 {11, 0x0000a0f8}, /* f_FuStrLen */ 542 3565 {11, 0x0000a321}, /* f_FuBuff */ 3566 {14, 0x000266d3}, /* _VMObjHandleInfo */ 3567 {14, 0x000554c4}, /* _ldrASMpMTEFromHandle */ 3568 {14, 0x0004a87a}, /* _ldrOpenPath */ 3569 {14, 0x0004706c}, /* _LDRClearSem */ 3570 {14, 0x000507b9}, /* _ldrFindModule */ 3571 {14, 0x0000d914}, /* _KSEMRequestMutex */ 3572 {14, 0x0000d9a7}, /* _KSEMReleaseMutex */ 3573 {14, 0x0000d9d2}, /* _KSEMQueryMutex */ 3574 {14, 0x0000dbe7}, /* _KSEMInit */ 3575 {9 , 0x0000d238}, /* _LdrSem */ 3576 {9 , 0x0000b794}, /* _LDRLibPath */ 3577 {14, 0x00033ebf}, /* _TKSuBuff */ 3578 {14, 0x00033a52}, /* _TKFuBuff */ 3579 {14, 0x00033c1c}, /* _TKFuBufLen */ 3580 {14, 0x000470b8}, /* _ldrValidateMteHandle */ 3581 {0 , 0x00000b34}, /* _pTCBCur */ 3582 {0 , 0x00000b30}, /* _pPTDACur */ 3583 {3 , 0x0000f8c0}, /* ptda_start */ 3584 {3 , 0x0000f9da}, /* ptda_environ */ 3585 {3 , 0x0000fe94}, /* ptda_ptdasem */ 3586 {3 , 0x0000ffa2}, /* ptda_module */ 3587 {3 , 0x0000f9dc}, /* ptda_pBeginLIBPATH */ 3588 {9 , 0x0000cff8}, /* _ldrpFileNameBuf */ 3589 {14, 0x00042a68}, /* SecPathFromSFN */ 543 3590 } 544 3591 }, 545 3592 { /* 8265RU.SYM */ 546 8265, 'R', TYPE_UNI, 14,3593 8265, KF_UNI, 14, 547 3594 { 548 3595 {13, 0x0000930c}, /* _ldrRead */ … … 560 3607 {13, 0x0001d2a6}, /* _VMGetOwner */ 561 3608 {13, 0x00043352}, /* g_tkExecPgm */ 562 {9, 0x0000d830}, /* f_FuStrLenZ */ 563 {9, 0x0000d7e6}, /* f_FuStrLen */ 564 {9, 0x0000d924}, /* f_FuBuff */ 565 } 566 }, 3609 {13, 0x000402db}, /* _tkStartProcess */ 3610 {9 , 0x0000d830}, /* f_FuStrLenZ */ 3611 {9 , 0x0000d7e6}, /* f_FuStrLen */ 3612 {9 , 0x0000d924}, /* f_FuBuff */ 3613 {13, 0x0001c60c}, /* _VMObjHandleInfo */ 3614 {13, 0x00043d48}, /* _ldrASMpMTEFromHandle */ 3615 {13, 0x0003ac2b}, /* _ldrOpenPath */ 3616 {13, 0x000375a8}, /* _LDRClearSem */ 3617 {13, 0x0003fa66}, /* _ldrFindModule */ 3618 {13, 0x0000a65c}, /* _KSEMRequestMutex */ 3619 {13, 0x0000a6ef}, /* _KSEMReleaseMutex */ 3620 {13, 0x0000a71a}, /* _KSEMQueryMutex */ 3621 {13, 0x0000a92f}, /* _KSEMInit */ 3622 {8 , 0x0000c8b4}, /* _LdrSem */ 3623 {8 , 0x00009cfc}, /* _LDRLibPath */ 3624 {13, 0x00027fad}, /* _TKSuBuff */ 3625 {13, 0x00027be1}, /* _TKFuBuff */ 3626 {13, 0x00027d6b}, /* _TKFuBufLen */ 3627 {13, 0x000375e4}, /* _ldrValidateMteHandle */ 3628 {8 , 0x000070ec}, /* _pTCBCur */ 3629 {8 , 0x000070e8}, /* _pPTDACur */ 3630 {2 , 0x0000f99c}, /* ptda_start */ 3631 {2 , 0x0000fa4e}, /* ptda_environ */ 3632 {2 , 0x0000fea8}, /* ptda_ptdasem */ 3633 {2 , 0x0000ffaa}, /* ptda_module */ 3634 {2 , 0x0000fa50}, /* ptda_pBeginLIBPATH */ 3635 {8 , 0x0000bc40}, /* _ldrpFileNameBuf */ 3636 {13, 0x00033cdb}, /* SecPathFromSFN */ 3637 } 3638 }, 3639 #ifdef ALLKERNELS 3640 { /* 9024AU.SYM */ 3641 9024, KF_UNI | KF_ALLSTRICT, 15, 3642 { 3643 {14, 0x00008c0c}, /* _ldrRead */ 3644 {14, 0x000463f4}, /* _ldrOpen */ 3645 {14, 0x00046d8c}, /* _ldrClose */ 3646 {14, 0x00046ddc}, /* _LDRQAppType */ 3647 {14, 0x000443ec}, /* _ldrEnum32bitRelRecs */ 3648 {14, 0x00003da8}, /* _IOSftOpen */ 3649 {14, 0x0000425c}, /* _IOSftClose */ 3650 {14, 0x00004304}, /* _IOSftTransPath */ 3651 {14, 0x0000407c}, /* _IOSftReadAt */ 3652 {14, 0x00004083}, /* _IOSftWriteAt */ 3653 {14, 0x0000442c}, /* _SftFileSize */ 3654 {14, 0x00041db8}, /* _VMAllocMem */ 3655 {14, 0x0002165e}, /* _VMGetOwner */ 3656 {14, 0x0004f97c}, /* g_tkExecPgm */ 3657 {14, 0x0004c120}, /* _tkStartProcess */ 3658 {11, 0x0000f8d4}, /* f_FuStrLenZ */ 3659 {11, 0x0000f888}, /* f_FuStrLen */ 3660 {11, 0x0000f9ec}, /* f_FuBuff */ 3661 {14, 0x000205bc}, /* _VMObjHandleInfo */ 3662 {14, 0x00050404}, /* _ldrASMpMTEFromHandle */ 3663 {14, 0x0004667f}, /* _ldrOpenPath */ 3664 {14, 0x00042864}, /* _LDRClearSem */ 3665 {14, 0x0004b812}, /* _ldrFindModule */ 3666 {14, 0x0000a5b4}, /* _KSEMRequestMutex */ 3667 {14, 0x0000a6c8}, /* _KSEMReleaseMutex */ 3668 {14, 0x0000a728}, /* _KSEMQueryMutex */ 3669 {14, 0x0000aaac}, /* _KSEMInit */ 3670 {10, 0x000159f0}, /* _LdrSem */ 3671 {10, 0x00015a7c}, /* _LDRLibPath */ 3672 {14, 0x0002ec48}, /* _TKSuBuff */ 3673 {14, 0x0002e83a}, /* _TKFuBuff */ 3674 {14, 0x0002ea06}, /* _TKFuBufLen */ 3675 {14, 0x000428ec}, /* _ldrValidateMteHandle */ 3676 {10, 0x0000b920}, /* _pTCBCur */ 3677 {10, 0x0000b91c}, /* _pPTDACur */ 3678 {4 , 0x0000f9f4}, /* ptda_start */ 3679 {4 , 0x0000fa9a}, /* ptda_environ */ 3680 {4 , 0x0000fecc}, /* ptda_ptdasem */ 3681 {4 , 0x0000ffaa}, /* ptda_module */ 3682 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 3683 {10, 0x00017ebc}, /* _ldrpFileNameBuf */ 3684 {14, 0x0003e13e}, /* SecPathFromSFN */ 3685 } 3686 }, 3687 #endif 3688 { /* 9024RU.SYM */ 3689 9024, KF_UNI, 13, 3690 { 3691 {12, 0x00007d68}, /* _ldrRead */ 3692 {12, 0x00036c2c}, /* _ldrOpen */ 3693 {12, 0x000374b4}, /* _ldrClose */ 3694 {12, 0x00037504}, /* _LDRQAppType */ 3695 {12, 0x00034ef8}, /* _ldrEnum32bitRelRecs */ 3696 {12, 0x00003494}, /* _IOSftOpen */ 3697 {12, 0x0000393a}, /* _IOSftClose */ 3698 {12, 0x000039e1}, /* _IOSftTransPath */ 3699 {12, 0x0000375b}, /* _IOSftReadAt */ 3700 {12, 0x00003762}, /* _IOSftWriteAt */ 3701 {12, 0x00003afa}, /* _SftFileSize */ 3702 {12, 0x00033214}, /* _VMAllocMem */ 3703 {12, 0x0001b218}, /* _VMGetOwner */ 3704 {12, 0x0003f196}, /* g_tkExecPgm */ 3705 {12, 0x0003c177}, /* _tkStartProcess */ 3706 {9 , 0x0000e60c}, /* f_FuStrLenZ */ 3707 {9 , 0x0000e5c2}, /* f_FuStrLen */ 3708 {9 , 0x0000e700}, /* f_FuBuff */ 3709 {12, 0x0001a58c}, /* _VMObjHandleInfo */ 3710 {12, 0x0003fb4c}, /* _ldrASMpMTEFromHandle */ 3711 {12, 0x00036ea3}, /* _ldrOpenPath */ 3712 {12, 0x00033954}, /* _LDRClearSem */ 3713 {12, 0x0003b907}, /* _ldrFindModule */ 3714 {12, 0x000090ec}, /* _KSEMRequestMutex */ 3715 {12, 0x0000917f}, /* _KSEMReleaseMutex */ 3716 {12, 0x000091aa}, /* _KSEMQueryMutex */ 3717 {12, 0x000093bf}, /* _KSEMInit */ 3718 {8 , 0x0000a020}, /* _LdrSem */ 3719 {8 , 0x0000a0a0}, /* _LDRLibPath */ 3720 {12, 0x000256b5}, /* _TKSuBuff */ 3721 {12, 0x000252eb}, /* _TKFuBuff */ 3722 {12, 0x00025475}, /* _TKFuBufLen */ 3723 {12, 0x00033990}, /* _ldrValidateMteHandle */ 3724 {8 , 0x000072a8}, /* _pTCBCur */ 3725 {8 , 0x000072a4}, /* _pPTDACur */ 3726 {2 , 0x0000f9fc}, /* ptda_start */ 3727 {2 , 0x0000faa2}, /* ptda_environ */ 3728 {2 , 0x0000fed4}, /* ptda_ptdasem */ 3729 {2 , 0x0000ffaa}, /* ptda_module */ 3730 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 3731 {8 , 0x0000ba4c}, /* _ldrpFileNameBuf */ 3732 {12, 0x0002fcea}, /* SecPathFromSFN */ 3733 } 3734 }, 3735 #ifdef ALLKERNELS 3736 { /* 9026AU.SYM */ 3737 9026, KF_UNI | KF_ALLSTRICT, 15, 3738 { 3739 {14, 0x00008c8c}, /* _ldrRead */ 3740 {14, 0x0004653c}, /* _ldrOpen */ 3741 {14, 0x00046ed4}, /* _ldrClose */ 3742 {14, 0x00046f24}, /* _LDRQAppType */ 3743 {14, 0x00044534}, /* _ldrEnum32bitRelRecs */ 3744 {14, 0x00003da8}, /* _IOSftOpen */ 3745 {14, 0x0000425c}, /* _IOSftClose */ 3746 {14, 0x00004304}, /* _IOSftTransPath */ 3747 {14, 0x0000407c}, /* _IOSftReadAt */ 3748 {14, 0x00004083}, /* _IOSftWriteAt */ 3749 {14, 0x0000442c}, /* _SftFileSize */ 3750 {14, 0x00041f00}, /* _VMAllocMem */ 3751 {14, 0x00021752}, /* _VMGetOwner */ 3752 {14, 0x0004fadc}, /* g_tkExecPgm */ 3753 {14, 0x0004c280}, /* _tkStartProcess */ 3754 {11, 0x0000f904}, /* f_FuStrLenZ */ 3755 {11, 0x0000f8b8}, /* f_FuStrLen */ 3756 {11, 0x0000fa1c}, /* f_FuBuff */ 3757 {14, 0x0002069c}, /* _VMObjHandleInfo */ 3758 {14, 0x00050560}, /* _ldrASMpMTEFromHandle */ 3759 {14, 0x000467c7}, /* _ldrOpenPath */ 3760 {14, 0x000429ac}, /* _LDRClearSem */ 3761 {14, 0x0004b95a}, /* _ldrFindModule */ 3762 {14, 0x0000a634}, /* _KSEMRequestMutex */ 3763 {14, 0x0000a748}, /* _KSEMReleaseMutex */ 3764 {14, 0x0000a7a8}, /* _KSEMQueryMutex */ 3765 {14, 0x0000ab2c}, /* _KSEMInit */ 3766 {10, 0x000159f8}, /* _LdrSem */ 3767 {10, 0x00015a84}, /* _LDRLibPath */ 3768 {14, 0x0002ed3c}, /* _TKSuBuff */ 3769 {14, 0x0002e92e}, /* _TKFuBuff */ 3770 {14, 0x0002eafa}, /* _TKFuBufLen */ 3771 {14, 0x00042a34}, /* _ldrValidateMteHandle */ 3772 {10, 0x0000b858}, /* _pTCBCur */ 3773 {10, 0x0000b854}, /* _pPTDACur */ 3774 {4 , 0x0000f9f4}, /* ptda_start */ 3775 {4 , 0x0000fa9a}, /* ptda_environ */ 3776 {4 , 0x0000fecc}, /* ptda_ptdasem */ 3777 {4 , 0x0000ffaa}, /* ptda_module */ 3778 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 3779 {10, 0x00017ec4}, /* _ldrpFileNameBuf */ 3780 {14, 0x0003e27e}, /* SecPathFromSFN */ 3781 } 3782 }, 3783 #endif 3784 { /* 9026RU.SYM */ 3785 9026, KF_UNI, 13, 3786 { 3787 {12, 0x00007de0}, /* _ldrRead */ 3788 {12, 0x00036d3c}, /* _ldrOpen */ 3789 {12, 0x000375c4}, /* _ldrClose */ 3790 {12, 0x00037614}, /* _LDRQAppType */ 3791 {12, 0x00035008}, /* _ldrEnum32bitRelRecs */ 3792 {12, 0x00003494}, /* _IOSftOpen */ 3793 {12, 0x0000393a}, /* _IOSftClose */ 3794 {12, 0x000039e1}, /* _IOSftTransPath */ 3795 {12, 0x0000375b}, /* _IOSftReadAt */ 3796 {12, 0x00003762}, /* _IOSftWriteAt */ 3797 {12, 0x00003afa}, /* _SftFileSize */ 3798 {12, 0x00033324}, /* _VMAllocMem */ 3799 {12, 0x0001b2dc}, /* _VMGetOwner */ 3800 {12, 0x0003f2ba}, /* g_tkExecPgm */ 3801 {12, 0x0003c29b}, /* _tkStartProcess */ 3802 {9 , 0x0000e644}, /* f_FuStrLenZ */ 3803 {9 , 0x0000e5fa}, /* f_FuStrLen */ 3804 {9 , 0x0000e738}, /* f_FuBuff */ 3805 {12, 0x0001a63c}, /* _VMObjHandleInfo */ 3806 {12, 0x0003fc6c}, /* _ldrASMpMTEFromHandle */ 3807 {12, 0x00036fb3}, /* _ldrOpenPath */ 3808 {12, 0x00033a64}, /* _LDRClearSem */ 3809 {12, 0x0003ba17}, /* _ldrFindModule */ 3810 {12, 0x00009164}, /* _KSEMRequestMutex */ 3811 {12, 0x000091f7}, /* _KSEMReleaseMutex */ 3812 {12, 0x00009222}, /* _KSEMQueryMutex */ 3813 {12, 0x00009437}, /* _KSEMInit */ 3814 {8 , 0x0000a028}, /* _LdrSem */ 3815 {8 , 0x0000a0a8}, /* _LDRLibPath */ 3816 {12, 0x00025775}, /* _TKSuBuff */ 3817 {12, 0x000253ab}, /* _TKFuBuff */ 3818 {12, 0x00025535}, /* _TKFuBufLen */ 3819 {12, 0x00033aa0}, /* _ldrValidateMteHandle */ 3820 {8 , 0x000072ac}, /* _pTCBCur */ 3821 {8 , 0x000072a8}, /* _pPTDACur */ 3822 {2 , 0x0000f9fc}, /* ptda_start */ 3823 {2 , 0x0000faa2}, /* ptda_environ */ 3824 {2 , 0x0000fed4}, /* ptda_ptdasem */ 3825 {2 , 0x0000ffaa}, /* ptda_module */ 3826 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 3827 {8 , 0x0000ba54}, /* _ldrpFileNameBuf */ 3828 {12, 0x0002fdf2}, /* SecPathFromSFN */ 3829 } 3830 }, 3831 #ifdef ALLKERNELS 3832 { /* 9027AU.SYM */ 3833 9027, KF_UNI | KF_ALLSTRICT, 15, 3834 { 3835 {14, 0x0000a2f0}, /* _ldrRead */ 3836 {14, 0x00049ab4}, /* _ldrOpen */ 3837 {14, 0x0004a44c}, /* _ldrClose */ 3838 {14, 0x0004a49c}, /* _LDRQAppType */ 3839 {14, 0x00047a78}, /* _ldrEnum32bitRelRecs */ 3840 {14, 0x00003e34}, /* _IOSftOpen */ 3841 {14, 0x000042e8}, /* _IOSftClose */ 3842 {14, 0x00004390}, /* _IOSftTransPath */ 3843 {14, 0x00004108}, /* _IOSftReadAt */ 3844 {14, 0x0000410f}, /* _IOSftWriteAt */ 3845 {14, 0x000044b8}, /* _SftFileSize */ 3846 {14, 0x00044be8}, /* _VMAllocMem */ 3847 {14, 0x00022bd2}, /* _VMGetOwner */ 3848 {14, 0x00052efc}, /* g_tkExecPgm */ 3849 {14, 0x0004f6b8}, /* _tkStartProcess */ 3850 {11, 0x0000f91c}, /* f_FuStrLenZ */ 3851 {11, 0x0000f8d0}, /* f_FuStrLen */ 3852 {11, 0x0000fa34}, /* f_FuBuff */ 3853 {14, 0x00021b1c}, /* _VMObjHandleInfo */ 3854 {14, 0x00053980}, /* _ldrASMpMTEFromHandle */ 3855 {14, 0x00049d3f}, /* _ldrOpenPath */ 3856 {14, 0x00045694}, /* _LDRClearSem */ 3857 {14, 0x0004ed92}, /* _ldrFindModule */ 3858 {14, 0x0000bc9c}, /* _KSEMRequestMutex */ 3859 {14, 0x0000bdb0}, /* _KSEMReleaseMutex */ 3860 {14, 0x0000be10}, /* _KSEMQueryMutex */ 3861 {14, 0x0000c194}, /* _KSEMInit */ 3862 {10, 0x00016030}, /* _LdrSem */ 3863 {10, 0x000160bc}, /* _LDRLibPath */ 3864 {14, 0x00030668}, /* _TKSuBuff */ 3865 {14, 0x0003025a}, /* _TKFuBuff */ 3866 {14, 0x00030426}, /* _TKFuBufLen */ 3867 {14, 0x0004571c}, /* _ldrValidateMteHandle */ 3868 {10, 0x0000b8c4}, /* _pTCBCur */ 3869 {10, 0x0000b8c0}, /* _pPTDACur */ 3870 {4 , 0x0000f9f4}, /* ptda_start */ 3871 {4 , 0x0000fa9a}, /* ptda_environ */ 3872 {4 , 0x0000fecc}, /* ptda_ptdasem */ 3873 {4 , 0x0000ffaa}, /* ptda_module */ 3874 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 3875 {10, 0x0001862c}, /* _ldrpFileNameBuf */ 3876 {14, 0x00040f46}, /* SecPathFromSFN */ 3877 } 3878 }, 3879 #endif 3880 { /* 9027RU.SYM */ 3881 9027, KF_UNI, 13, 3882 { 3883 {12, 0x0000941c}, /* _ldrRead */ 3884 {12, 0x0003a044}, /* _ldrOpen */ 3885 {12, 0x0003a8cc}, /* _ldrClose */ 3886 {12, 0x0003a91c}, /* _LDRQAppType */ 3887 {12, 0x00038314}, /* _ldrEnum32bitRelRecs */ 3888 {12, 0x00003504}, /* _IOSftOpen */ 3889 {12, 0x000039aa}, /* _IOSftClose */ 3890 {12, 0x00003a51}, /* _IOSftTransPath */ 3891 {12, 0x000037cb}, /* _IOSftReadAt */ 3892 {12, 0x000037d2}, /* _IOSftWriteAt */ 3893 {12, 0x00003b6a}, /* _SftFileSize */ 3894 {12, 0x00035f98}, /* _VMAllocMem */ 3895 {12, 0x0001c924}, /* _VMGetOwner */ 3896 {12, 0x0004245e}, /* g_tkExecPgm */ 3897 {12, 0x0003f3e3}, /* _tkStartProcess */ 3898 {9 , 0x0000e660}, /* f_FuStrLenZ */ 3899 {9 , 0x0000e616}, /* f_FuStrLen */ 3900 {9 , 0x0000e754}, /* f_FuBuff */ 3901 {12, 0x0001bc84}, /* _VMObjHandleInfo */ 3902 {12, 0x00042e10}, /* _ldrASMpMTEFromHandle */ 3903 {12, 0x0003a2bb}, /* _ldrOpenPath */ 3904 {12, 0x000366d8}, /* _LDRClearSem */ 3905 {12, 0x0003eb5d}, /* _ldrFindModule */ 3906 {12, 0x0000a7a4}, /* _KSEMRequestMutex */ 3907 {12, 0x0000a837}, /* _KSEMReleaseMutex */ 3908 {12, 0x0000a862}, /* _KSEMQueryMutex */ 3909 {12, 0x0000aa77}, /* _KSEMInit */ 3910 {8 , 0x0000a3a0}, /* _LdrSem */ 3911 {8 , 0x0000a420}, /* _LDRLibPath */ 3912 {12, 0x0002728d}, /* _TKSuBuff */ 3913 {12, 0x00026ec1}, /* _TKFuBuff */ 3914 {12, 0x0002704b}, /* _TKFuBufLen */ 3915 {12, 0x00036714}, /* _ldrValidateMteHandle */ 3916 {8 , 0x000072b4}, /* _pTCBCur */ 3917 {8 , 0x000072b0}, /* _pPTDACur */ 3918 {2 , 0x0000f9fc}, /* ptda_start */ 3919 {2 , 0x0000faa2}, /* ptda_environ */ 3920 {2 , 0x0000fed4}, /* ptda_ptdasem */ 3921 {2 , 0x0000ffaa}, /* ptda_module */ 3922 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 3923 {8 , 0x0000bee4}, /* _ldrpFileNameBuf */ 3924 {12, 0x00032a46}, /* SecPathFromSFN */ 3925 } 3926 }, 3927 #ifdef ALLKERNELS 3928 { /* 9028AU.SYM */ 3929 9028, KF_UNI | KF_ALLSTRICT, 15, 3930 { 3931 {14, 0x0000a2fc}, /* _ldrRead */ 3932 {14, 0x0004929c}, /* _ldrOpen */ 3933 {14, 0x00049c34}, /* _ldrClose */ 3934 {14, 0x00049c84}, /* _LDRQAppType */ 3935 {14, 0x00047294}, /* _ldrEnum32bitRelRecs */ 3936 {14, 0x00003e40}, /* _IOSftOpen */ 3937 {14, 0x000042f4}, /* _IOSftClose */ 3938 {14, 0x0000439c}, /* _IOSftTransPath */ 3939 {14, 0x00004114}, /* _IOSftReadAt */ 3940 {14, 0x0000411b}, /* _IOSftWriteAt */ 3941 {14, 0x000044c4}, /* _SftFileSize */ 3942 {14, 0x00044c18}, /* _VMAllocMem */ 3943 {14, 0x00022bf6}, /* _VMGetOwner */ 3944 {14, 0x0005297c}, /* g_tkExecPgm */ 3945 {14, 0x0004f110}, /* _tkStartProcess */ 3946 {11, 0x0000f88c}, /* f_FuStrLenZ */ 3947 {11, 0x0000f840}, /* f_FuStrLen */ 3948 {11, 0x0000f9a4}, /* f_FuBuff */ 3949 {14, 0x00021b40}, /* _VMObjHandleInfo */ 3950 {14, 0x00053400}, /* _ldrASMpMTEFromHandle */ 3951 {14, 0x00049527}, /* _ldrOpenPath */ 3952 {14, 0x000456c4}, /* _LDRClearSem */ 3953 {14, 0x0004e7ea}, /* _ldrFindModule */ 3954 {14, 0x0000bca8}, /* _KSEMRequestMutex */ 3955 {14, 0x0000bdbc}, /* _KSEMReleaseMutex */ 3956 {14, 0x0000be1c}, /* _KSEMQueryMutex */ 3957 {14, 0x0000c1a0}, /* _KSEMInit */ 3958 {10, 0x00015df4}, /* _LdrSem */ 3959 {10, 0x00015e80}, /* _LDRLibPath */ 3960 {14, 0x000306a4}, /* _TKSuBuff */ 3961 {14, 0x00030296}, /* _TKFuBuff */ 3962 {14, 0x00030462}, /* _TKFuBufLen */ 3963 {14, 0x0004574c}, /* _ldrValidateMteHandle */ 3964 {10, 0x0000b8d0}, /* _pTCBCur */ 3965 {10, 0x0000b8cc}, /* _pPTDACur */ 3966 {4 , 0x0000f9f4}, /* ptda_start */ 3967 {4 , 0x0000fa9a}, /* ptda_environ */ 3968 {4 , 0x0000fecc}, /* ptda_ptdasem */ 3969 {4 , 0x0000ffaa}, /* ptda_module */ 3970 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 3971 {10, 0x000183d4}, /* _ldrpFileNameBuf */ 3972 {14, 0x00040f46}, /* SecPathFromSFN */ 3973 } 3974 }, 3975 #endif 3976 { /* 9028RU.SYM */ 3977 9028, KF_UNI, 13, 3978 { 3979 {12, 0x00009424}, /* _ldrRead */ 3980 {12, 0x000398cc}, /* _ldrOpen */ 3981 {12, 0x0003a154}, /* _ldrClose */ 3982 {12, 0x0003a1a4}, /* _LDRQAppType */ 3983 {12, 0x00037ba4}, /* _ldrEnum32bitRelRecs */ 3984 {12, 0x0000350c}, /* _IOSftOpen */ 3985 {12, 0x000039b2}, /* _IOSftClose */ 3986 {12, 0x00003a59}, /* _IOSftTransPath */ 3987 {12, 0x000037d3}, /* _IOSftReadAt */ 3988 {12, 0x000037da}, /* _IOSftWriteAt */ 3989 {12, 0x00003b72}, /* _SftFileSize */ 3990 {12, 0x00035e78}, /* _VMAllocMem */ 3991 {12, 0x0001c9b0}, /* _VMGetOwner */ 3992 {12, 0x00041e62}, /* g_tkExecPgm */ 3993 {12, 0x0003ee2f}, /* _tkStartProcess */ 3994 {9 , 0x0000e5bc}, /* f_FuStrLenZ */ 3995 {9 , 0x0000e572}, /* f_FuStrLen */ 3996 {9 , 0x0000e6b0}, /* f_FuBuff */ 3997 {12, 0x0001bd10}, /* _VMObjHandleInfo */ 3998 {12, 0x00042814}, /* _ldrASMpMTEFromHandle */ 3999 {12, 0x00039b43}, /* _ldrOpenPath */ 4000 {12, 0x000365b8}, /* _LDRClearSem */ 4001 {12, 0x0003e5a9}, /* _ldrFindModule */ 4002 {12, 0x0000a7ac}, /* _KSEMRequestMutex */ 4003 {12, 0x0000a83f}, /* _KSEMReleaseMutex */ 4004 {12, 0x0000a86a}, /* _KSEMQueryMutex */ 4005 {12, 0x0000aa7f}, /* _KSEMInit */ 4006 {8 , 0x0000a33c}, /* _LdrSem */ 4007 {8 , 0x0000a3bc}, /* _LDRLibPath */ 4008 {12, 0x0002731d}, /* _TKSuBuff */ 4009 {12, 0x00026f51}, /* _TKFuBuff */ 4010 {12, 0x000270db}, /* _TKFuBufLen */ 4011 {12, 0x000365f4}, /* _ldrValidateMteHandle */ 4012 {8 , 0x000072b8}, /* _pTCBCur */ 4013 {8 , 0x000072b4}, /* _pPTDACur */ 4014 {2 , 0x0000f9fc}, /* ptda_start */ 4015 {2 , 0x0000faa2}, /* ptda_environ */ 4016 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4017 {2 , 0x0000ffaa}, /* ptda_module */ 4018 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4019 {8 , 0x0000be7c}, /* _ldrpFileNameBuf */ 4020 {12, 0x00032a37}, /* SecPathFromSFN */ 4021 } 4022 }, 4023 #ifdef ALLKERNELS 4024 { /* 9029AU.SYM */ 4025 9029, KF_UNI | KF_ALLSTRICT, 15, 4026 { 4027 {14, 0x0000a2d4}, /* _ldrRead */ 4028 {14, 0x000493ac}, /* _ldrOpen */ 4029 {14, 0x00049d44}, /* _ldrClose */ 4030 {14, 0x00049d94}, /* _LDRQAppType */ 4031 {14, 0x000473a4}, /* _ldrEnum32bitRelRecs */ 4032 {14, 0x00003e18}, /* _IOSftOpen */ 4033 {14, 0x000042cc}, /* _IOSftClose */ 4034 {14, 0x00004374}, /* _IOSftTransPath */ 4035 {14, 0x000040ec}, /* _IOSftReadAt */ 4036 {14, 0x000040f3}, /* _IOSftWriteAt */ 4037 {14, 0x0000449c}, /* _SftFileSize */ 4038 {14, 0x00044d2c}, /* _VMAllocMem */ 4039 {14, 0x00022b9a}, /* _VMGetOwner */ 4040 {14, 0x00052ae0}, /* g_tkExecPgm */ 4041 {14, 0x0004f268}, /* _tkStartProcess */ 4042 {11, 0x0000f864}, /* f_FuStrLenZ */ 4043 {11, 0x0000f818}, /* f_FuStrLen */ 4044 {11, 0x0000f97c}, /* f_FuBuff */ 4045 {14, 0x00021ae4}, /* _VMObjHandleInfo */ 4046 {14, 0x00053564}, /* _ldrASMpMTEFromHandle */ 4047 {14, 0x00049637}, /* _ldrOpenPath */ 4048 {14, 0x000457d8}, /* _LDRClearSem */ 4049 {14, 0x0004e942}, /* _ldrFindModule */ 4050 {14, 0x0000bc80}, /* _KSEMRequestMutex */ 4051 {14, 0x0000bd94}, /* _KSEMReleaseMutex */ 4052 {14, 0x0000bdf4}, /* _KSEMQueryMutex */ 4053 {14, 0x0000c178}, /* _KSEMInit */ 4054 {10, 0x00015e48}, /* _LdrSem */ 4055 {10, 0x00015ed4}, /* _LDRLibPath */ 4056 {14, 0x00030640}, /* _TKSuBuff */ 4057 {14, 0x00030232}, /* _TKFuBuff */ 4058 {14, 0x000303fe}, /* _TKFuBufLen */ 4059 {14, 0x00045860}, /* _ldrValidateMteHandle */ 4060 {10, 0x0000b8bc}, /* _pTCBCur */ 4061 {10, 0x0000b8b8}, /* _pPTDACur */ 4062 {4 , 0x0000f9f4}, /* ptda_start */ 4063 {4 , 0x0000fa9a}, /* ptda_environ */ 4064 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4065 {4 , 0x0000ffaa}, /* ptda_module */ 4066 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4067 {10, 0x00018428}, /* _ldrpFileNameBuf */ 4068 {14, 0x0004102a}, /* SecPathFromSFN */ 4069 } 4070 }, 4071 #endif 4072 #ifdef ALLKERNELS 4073 { /* 9029HU.SYM */ 4074 9029, KF_UNI | KF_HALFSTRICT, 15, 4075 { 4076 {14, 0x0000947c}, /* _ldrRead */ 4077 {14, 0x0003b03c}, /* _ldrOpen */ 4078 {14, 0x0003b8c4}, /* _ldrClose */ 4079 {14, 0x0003b914}, /* _LDRQAppType */ 4080 {14, 0x0003930c}, /* _ldrEnum32bitRelRecs */ 4081 {14, 0x0000355c}, /* _IOSftOpen */ 4082 {14, 0x00003a02}, /* _IOSftClose */ 4083 {14, 0x00003aa9}, /* _IOSftTransPath */ 4084 {14, 0x00003823}, /* _IOSftReadAt */ 4085 {14, 0x0000382a}, /* _IOSftWriteAt */ 4086 {14, 0x00003bc2}, /* _SftFileSize */ 4087 {14, 0x000375e0}, /* _VMAllocMem */ 4088 {14, 0x0001d618}, /* _VMGetOwner */ 4089 {14, 0x0004361a}, /* g_tkExecPgm */ 4090 {14, 0x000405bf}, /* _tkStartProcess */ 4091 {11, 0x0000e594}, /* f_FuStrLenZ */ 4092 {11, 0x0000e54a}, /* f_FuStrLen */ 4093 {11, 0x0000e688}, /* f_FuBuff */ 4094 {14, 0x0001c978}, /* _VMObjHandleInfo */ 4095 {14, 0x00043fcc}, /* _ldrASMpMTEFromHandle */ 4096 {14, 0x0003b2b3}, /* _ldrOpenPath */ 4097 {14, 0x00037d20}, /* _LDRClearSem */ 4098 {14, 0x0003fd39}, /* _ldrFindModule */ 4099 {14, 0x0000a92c}, /* _KSEMRequestMutex */ 4100 {14, 0x0000aa03}, /* _KSEMReleaseMutex */ 4101 {14, 0x0000aa2e}, /* _KSEMQueryMutex */ 4102 {14, 0x0000acce}, /* _KSEMInit */ 4103 {10, 0x0000a550}, /* _LdrSem */ 4104 {10, 0x0000a5d0}, /* _LDRLibPath */ 4105 {14, 0x00027f8d}, /* _TKSuBuff */ 4106 {14, 0x00027bc1}, /* _TKFuBuff */ 4107 {14, 0x00027d4b}, /* _TKFuBufLen */ 4108 {14, 0x00037d5c}, /* _ldrValidateMteHandle */ 4109 {10, 0x000072b4}, /* _pTCBCur */ 4110 {10, 0x000072b0}, /* _pPTDACur */ 4111 {4 , 0x0000f9fc}, /* ptda_start */ 4112 {4 , 0x0000faa2}, /* ptda_environ */ 4113 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4114 {4 , 0x0000ffaa}, /* ptda_module */ 4115 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4116 {10, 0x0000c094}, /* _ldrpFileNameBuf */ 4117 {14, 0x0003419f}, /* SecPathFromSFN */ 4118 } 4119 }, 4120 #endif 567 4121 { /* 9029RU.SYM */ 568 9029, 'R', TYPE_UNI, 13,4122 9029, KF_UNI, 13, 569 4123 { 570 4124 {12, 0x00009404}, /* _ldrRead */ … … 582 4136 {12, 0x0001c8f0}, /* _VMGetOwner */ 583 4137 {12, 0x00041eb6}, /* g_tkExecPgm */ 584 {9, 0x0000e594}, /* f_FuStrLenZ */ 585 {9, 0x0000e54a}, /* f_FuStrLen */ 586 {9, 0x0000e688}, /* f_FuBuff */ 587 } 588 }, 4138 {12, 0x0003ee7f}, /* _tkStartProcess */ 4139 {9 , 0x0000e594}, /* f_FuStrLenZ */ 4140 {9 , 0x0000e54a}, /* f_FuStrLen */ 4141 {9 , 0x0000e688}, /* f_FuBuff */ 4142 {12, 0x0001bc50}, /* _VMObjHandleInfo */ 4143 {12, 0x00042868}, /* _ldrASMpMTEFromHandle */ 4144 {12, 0x00039b77}, /* _ldrOpenPath */ 4145 {12, 0x000365e0}, /* _LDRClearSem */ 4146 {12, 0x0003e5f9}, /* _ldrFindModule */ 4147 {12, 0x0000a78c}, /* _KSEMRequestMutex */ 4148 {12, 0x0000a81f}, /* _KSEMReleaseMutex */ 4149 {12, 0x0000a84a}, /* _KSEMQueryMutex */ 4150 {12, 0x0000aa5f}, /* _KSEMInit */ 4151 {8 , 0x0000a398}, /* _LdrSem */ 4152 {8 , 0x0000a418}, /* _LDRLibPath */ 4153 {12, 0x00027265}, /* _TKSuBuff */ 4154 {12, 0x00026e99}, /* _TKFuBuff */ 4155 {12, 0x00027023}, /* _TKFuBufLen */ 4156 {12, 0x0003661c}, /* _ldrValidateMteHandle */ 4157 {8 , 0x000072b4}, /* _pTCBCur */ 4158 {8 , 0x000072b0}, /* _pPTDACur */ 4159 {2 , 0x0000f9fc}, /* ptda_start */ 4160 {2 , 0x0000faa2}, /* ptda_environ */ 4161 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4162 {2 , 0x0000ffaa}, /* ptda_module */ 4163 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4164 {8 , 0x0000bed8}, /* _ldrpFileNameBuf */ 4165 {12, 0x00032a5f}, /* SecPathFromSFN */ 4166 } 4167 }, 4168 #ifdef ALLKERNELS 4169 { /* 9030AU.SYM */ 4170 9030, KF_UNI | KF_ALLSTRICT, 16, 4171 { 4172 {15, 0x0000a7b4}, /* _ldrRead */ 4173 {15, 0x00049c60}, /* _ldrOpen */ 4174 {15, 0x0004a5f8}, /* _ldrClose */ 4175 {15, 0x0004a648}, /* _LDRQAppType */ 4176 {15, 0x00047b7c}, /* _ldrEnum32bitRelRecs */ 4177 {15, 0x00004318}, /* _IOSftOpen */ 4178 {15, 0x000047cc}, /* _IOSftClose */ 4179 {15, 0x00004874}, /* _IOSftTransPath */ 4180 {15, 0x000045ec}, /* _IOSftReadAt */ 4181 {15, 0x000045f3}, /* _IOSftWriteAt */ 4182 {15, 0x0000499c}, /* _SftFileSize */ 4183 {15, 0x00045510}, /* _VMAllocMem */ 4184 {15, 0x00023390}, /* _VMGetOwner */ 4185 {15, 0x00053590}, /* g_tkExecPgm */ 4186 {15, 0x0004fcd8}, /* _tkStartProcess */ 4187 {11, 0x0000ecfc}, /* f_FuStrLenZ */ 4188 {11, 0x0000ecb0}, /* f_FuStrLen */ 4189 {11, 0x0000ee14}, /* f_FuBuff */ 4190 {15, 0x000222d8}, /* _VMObjHandleInfo */ 4191 {15, 0x00054014}, /* _ldrASMpMTEFromHandle */ 4192 {15, 0x00049eeb}, /* _ldrOpenPath */ 4193 {15, 0x00045fc4}, /* _LDRClearSem */ 4194 {15, 0x0004f3b6}, /* _ldrFindModule */ 4195 {15, 0x0000c160}, /* _KSEMRequestMutex */ 4196 {15, 0x0000c274}, /* _KSEMReleaseMutex */ 4197 {15, 0x0000c2d4}, /* _KSEMQueryMutex */ 4198 {15, 0x0000c658}, /* _KSEMInit */ 4199 {10, 0x00016f2c}, /* _LdrSem */ 4200 {10, 0x00016fb8}, /* _LDRLibPath */ 4201 {15, 0x00030e98}, /* _TKSuBuff */ 4202 {15, 0x00030a88}, /* _TKFuBuff */ 4203 {15, 0x00030c54}, /* _TKFuBufLen */ 4204 {15, 0x0004604c}, /* _ldrValidateMteHandle */ 4205 {10, 0x0000b8ac}, /* _pTCBCur */ 4206 {10, 0x0000b8a8}, /* _pPTDACur */ 4207 {4 , 0x0000f9f4}, /* ptda_start */ 4208 {4 , 0x0000fa9a}, /* ptda_environ */ 4209 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4210 {4 , 0x0000ffaa}, /* ptda_module */ 4211 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4212 {10, 0x0001951c}, /* _ldrpFileNameBuf */ 4213 {15, 0x000418e2}, /* SecPathFromSFN */ 4214 } 4215 }, 4216 #endif 4217 #ifdef ALLKERNELS 4218 { /* 9030HU.SYM */ 4219 9030, KF_UNI | KF_HALFSTRICT, 16, 4220 { 4221 {15, 0x0000980c}, /* _ldrRead */ 4222 {15, 0x0003b8c4}, /* _ldrOpen */ 4223 {15, 0x0003c14c}, /* _ldrClose */ 4224 {15, 0x0003c19c}, /* _LDRQAppType */ 4225 {15, 0x00039acc}, /* _ldrEnum32bitRelRecs */ 4226 {15, 0x0000390c}, /* _IOSftOpen */ 4227 {15, 0x00003db2}, /* _IOSftClose */ 4228 {15, 0x00003e59}, /* _IOSftTransPath */ 4229 {15, 0x00003bd3}, /* _IOSftReadAt */ 4230 {15, 0x00003bda}, /* _IOSftWriteAt */ 4231 {15, 0x00003f72}, /* _SftFileSize */ 4232 {15, 0x00037d98}, /* _VMAllocMem */ 4233 {15, 0x0001dd38}, /* _VMGetOwner */ 4234 {15, 0x0004406e}, /* g_tkExecPgm */ 4235 {15, 0x00040ffb}, /* _tkStartProcess */ 4236 {11, 0x0000db08}, /* f_FuStrLenZ */ 4237 {11, 0x0000dabe}, /* f_FuStrLen */ 4238 {11, 0x0000dbfc}, /* f_FuBuff */ 4239 {15, 0x0001d094}, /* _VMObjHandleInfo */ 4240 {15, 0x00044a20}, /* _ldrASMpMTEFromHandle */ 4241 {15, 0x0003bb3b}, /* _ldrOpenPath */ 4242 {15, 0x000384e0}, /* _LDRClearSem */ 4243 {15, 0x00040775}, /* _ldrFindModule */ 4244 {15, 0x0000acbc}, /* _KSEMRequestMutex */ 4245 {15, 0x0000ad93}, /* _KSEMReleaseMutex */ 4246 {15, 0x0000adbe}, /* _KSEMQueryMutex */ 4247 {15, 0x0000b05e}, /* _KSEMInit */ 4248 {10, 0x0000a56c}, /* _LdrSem */ 4249 {10, 0x0000a5ec}, /* _LDRLibPath */ 4250 {15, 0x000286d9}, /* _TKSuBuff */ 4251 {15, 0x0002830f}, /* _TKFuBuff */ 4252 {15, 0x00028499}, /* _TKFuBufLen */ 4253 {15, 0x0003851c}, /* _ldrValidateMteHandle */ 4254 {10, 0x000072b8}, /* _pTCBCur */ 4255 {10, 0x000072b4}, /* _pPTDACur */ 4256 {4 , 0x0000f9fc}, /* ptda_start */ 4257 {4 , 0x0000faa2}, /* ptda_environ */ 4258 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4259 {4 , 0x0000ffaa}, /* ptda_module */ 4260 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4261 {10, 0x0000c0c0}, /* _ldrpFileNameBuf */ 4262 {15, 0x00034957}, /* SecPathFromSFN */ 4263 } 4264 }, 4265 #endif 589 4266 { /* 9030RU.SYM */ 590 9030, 'R', TYPE_UNI, 14,4267 9030, KF_UNI, 14, 591 4268 { 592 4269 {13, 0x00009784}, /* _ldrRead */ … … 604 4281 {13, 0x0001d000}, /* _VMGetOwner */ 605 4282 {13, 0x0004288a}, /* g_tkExecPgm */ 606 {9, 0x0000db08}, /* f_FuStrLenZ */ 607 {9, 0x0000dabe}, /* f_FuStrLen */ 608 {9, 0x0000dbfc}, /* f_FuBuff */ 609 } 610 }, 4283 {13, 0x0003f83b}, /* _tkStartProcess */ 4284 {9 , 0x0000db08}, /* f_FuStrLenZ */ 4285 {9 , 0x0000dabe}, /* f_FuStrLen */ 4286 {9 , 0x0000dbfc}, /* f_FuBuff */ 4287 {13, 0x0001c35c}, /* _VMObjHandleInfo */ 4288 {13, 0x0004323c}, /* _ldrASMpMTEFromHandle */ 4289 {13, 0x0003a38b}, /* _ldrOpenPath */ 4290 {13, 0x00036d30}, /* _LDRClearSem */ 4291 {13, 0x0003efb5}, /* _ldrFindModule */ 4292 {13, 0x0000ab0c}, /* _KSEMRequestMutex */ 4293 {13, 0x0000ab9f}, /* _KSEMReleaseMutex */ 4294 {13, 0x0000abca}, /* _KSEMQueryMutex */ 4295 {13, 0x0000addf}, /* _KSEMInit */ 4296 {8 , 0x0000a3b4}, /* _LdrSem */ 4297 {8 , 0x0000a434}, /* _LDRLibPath */ 4298 {13, 0x000279a1}, /* _TKSuBuff */ 4299 {13, 0x000275d7}, /* _TKFuBuff */ 4300 {13, 0x00027761}, /* _TKFuBufLen */ 4301 {13, 0x00036d6c}, /* _ldrValidateMteHandle */ 4302 {8 , 0x000072b8}, /* _pTCBCur */ 4303 {8 , 0x000072b4}, /* _pPTDACur */ 4304 {2 , 0x0000f9fc}, /* ptda_start */ 4305 {2 , 0x0000faa2}, /* ptda_environ */ 4306 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4307 {2 , 0x0000ffaa}, /* ptda_module */ 4308 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4309 {8 , 0x0000bf04}, /* _ldrpFileNameBuf */ 4310 {13, 0x000331a7}, /* SecPathFromSFN */ 4311 } 4312 }, 4313 #ifdef ALLKERNELS 4314 { /* 9031AU.SYM */ 4315 9031, KF_UNI | KF_ALLSTRICT, 16, 4316 { 4317 {15, 0x0000a84c}, /* _ldrRead */ 4318 {15, 0x0004979c}, /* _ldrOpen */ 4319 {15, 0x0004a138}, /* _ldrClose */ 4320 {15, 0x0004a188}, /* _LDRQAppType */ 4321 {15, 0x000476c4}, /* _ldrEnum32bitRelRecs */ 4322 {15, 0x00004318}, /* _IOSftOpen */ 4323 {15, 0x000047cc}, /* _IOSftClose */ 4324 {15, 0x00004874}, /* _IOSftTransPath */ 4325 {15, 0x000045ec}, /* _IOSftReadAt */ 4326 {15, 0x000045f3}, /* _IOSftWriteAt */ 4327 {15, 0x0000499c}, /* _SftFileSize */ 4328 {15, 0x00045188}, /* _VMAllocMem */ 4329 {15, 0x000234b0}, /* _VMGetOwner */ 4330 {15, 0x000530e4}, /* g_tkExecPgm */ 4331 {15, 0x0004f824}, /* _tkStartProcess */ 4332 {11, 0x0000ecfc}, /* f_FuStrLenZ */ 4333 {11, 0x0000ecb0}, /* f_FuStrLen */ 4334 {11, 0x0000ee14}, /* f_FuBuff */ 4335 {15, 0x000223f0}, /* _VMObjHandleInfo */ 4336 {15, 0x00053b68}, /* _ldrASMpMTEFromHandle */ 4337 {15, 0x00049a27}, /* _ldrOpenPath */ 4338 {15, 0x00045b94}, /* _LDRClearSem */ 4339 {15, 0x0004ef01}, /* _ldrFindModule */ 4340 {15, 0x0000c1b4}, /* _KSEMRequestMutex */ 4341 {15, 0x0000c2c8}, /* _KSEMReleaseMutex */ 4342 {15, 0x0000c328}, /* _KSEMQueryMutex */ 4343 {15, 0x0000c6ac}, /* _KSEMInit */ 4344 {10, 0x00026f18}, /* _LdrSem */ 4345 {10, 0x00026fa4}, /* _LDRLibPath */ 4346 {15, 0x00030b94}, /* _TKSuBuff */ 4347 {15, 0x00030784}, /* _TKFuBuff */ 4348 {15, 0x00030950}, /* _TKFuBufLen */ 4349 {15, 0x00045c1c}, /* _ldrValidateMteHandle */ 4350 {10, 0x0000b8a4}, /* _pTCBCur */ 4351 {10, 0x0000b8a0}, /* _pPTDACur */ 4352 {4 , 0x0000f9f4}, /* ptda_start */ 4353 {4 , 0x0000fa9a}, /* ptda_environ */ 4354 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4355 {4 , 0x0000ffaa}, /* ptda_module */ 4356 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4357 {10, 0x00029508}, /* _ldrpFileNameBuf */ 4358 {15, 0x00041686}, /* SecPathFromSFN */ 4359 } 4360 }, 4361 #endif 4362 #ifdef ALLKERNELS 4363 { /* 9031HU.SYM */ 4364 9031, KF_UNI | KF_HALFSTRICT, 16, 4365 { 4366 {15, 0x0000989c}, /* _ldrRead */ 4367 {15, 0x0003b7b8}, /* _ldrOpen */ 4368 {15, 0x0003c03c}, /* _ldrClose */ 4369 {15, 0x0003c08c}, /* _LDRQAppType */ 4370 {15, 0x000399b4}, /* _ldrEnum32bitRelRecs */ 4371 {15, 0x0000390c}, /* _IOSftOpen */ 4372 {15, 0x00003db2}, /* _IOSftClose */ 4373 {15, 0x00003e59}, /* _IOSftTransPath */ 4374 {15, 0x00003bd3}, /* _IOSftReadAt */ 4375 {15, 0x00003bda}, /* _IOSftWriteAt */ 4376 {15, 0x00003f72}, /* _SftFileSize */ 4377 {15, 0x00037d00}, /* _VMAllocMem */ 4378 {15, 0x0001dd60}, /* _VMGetOwner */ 4379 {15, 0x00044036}, /* g_tkExecPgm */ 4380 {15, 0x00040fa7}, /* _tkStartProcess */ 4381 {11, 0x0000db08}, /* f_FuStrLenZ */ 4382 {11, 0x0000dabe}, /* f_FuStrLen */ 4383 {11, 0x0000dbfc}, /* f_FuBuff */ 4384 {15, 0x0001d0bc}, /* _VMObjHandleInfo */ 4385 {15, 0x000449e8}, /* _ldrASMpMTEFromHandle */ 4386 {15, 0x0003ba2f}, /* _ldrOpenPath */ 4387 {15, 0x00038448}, /* _LDRClearSem */ 4388 {15, 0x00040724}, /* _ldrFindModule */ 4389 {15, 0x0000ad4c}, /* _KSEMRequestMutex */ 4390 {15, 0x0000ae23}, /* _KSEMReleaseMutex */ 4391 {15, 0x0000ae4e}, /* _KSEMQueryMutex */ 4392 {15, 0x0000b0ee}, /* _KSEMInit */ 4393 {10, 0x0001a574}, /* _LdrSem */ 4394 {10, 0x0001a5f4}, /* _LDRLibPath */ 4395 {15, 0x00028705}, /* _TKSuBuff */ 4396 {15, 0x0002833b}, /* _TKFuBuff */ 4397 {15, 0x000284c5}, /* _TKFuBufLen */ 4398 {15, 0x00038484}, /* _ldrValidateMteHandle */ 4399 {10, 0x000072b8}, /* _pTCBCur */ 4400 {10, 0x000072b4}, /* _pPTDACur */ 4401 {4 , 0x0000f9fc}, /* ptda_start */ 4402 {4 , 0x0000faa2}, /* ptda_environ */ 4403 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4404 {4 , 0x0000ffaa}, /* ptda_module */ 4405 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4406 {10, 0x0001c0c8}, /* _ldrpFileNameBuf */ 4407 {15, 0x0003499f}, /* SecPathFromSFN */ 4408 } 4409 }, 4410 #endif 611 4411 { /* 9031RU.SYM */ 612 9031, 'R', TYPE_UNI, 14,4412 9031, KF_UNI, 14, 613 4413 { 614 4414 {13, 0x00009814}, /* _ldrRead */ … … 626 4426 {13, 0x0001d09c}, /* _VMGetOwner */ 627 4427 {13, 0x0004288a}, /* g_tkExecPgm */ 628 {9, 0x0000db08}, /* f_FuStrLenZ */ 629 {9, 0x0000dabe}, /* f_FuStrLen */ 630 {9, 0x0000dbfc}, /* f_FuBuff */ 631 } 632 }, 4428 {13, 0x0003f81b}, /* _tkStartProcess */ 4429 {9 , 0x0000db08}, /* f_FuStrLenZ */ 4430 {9 , 0x0000dabe}, /* f_FuStrLen */ 4431 {9 , 0x0000dbfc}, /* f_FuBuff */ 4432 {13, 0x0001c3f8}, /* _VMObjHandleInfo */ 4433 {13, 0x0004323c}, /* _ldrASMpMTEFromHandle */ 4434 {13, 0x0003a2a3}, /* _ldrOpenPath */ 4435 {13, 0x00036cbc}, /* _LDRClearSem */ 4436 {13, 0x0003ef98}, /* _ldrFindModule */ 4437 {13, 0x0000ab9c}, /* _KSEMRequestMutex */ 4438 {13, 0x0000ac2f}, /* _KSEMReleaseMutex */ 4439 {13, 0x0000ac5a}, /* _KSEMQueryMutex */ 4440 {13, 0x0000ae6f}, /* _KSEMInit */ 4441 {8 , 0x0000a3bc}, /* _LdrSem */ 4442 {8 , 0x0000a43c}, /* _LDRLibPath */ 4443 {13, 0x00027a41}, /* _TKSuBuff */ 4444 {13, 0x00027677}, /* _TKFuBuff */ 4445 {13, 0x00027801}, /* _TKFuBufLen */ 4446 {13, 0x00036cf8}, /* _ldrValidateMteHandle */ 4447 {8 , 0x000072b8}, /* _pTCBCur */ 4448 {8 , 0x000072b4}, /* _pPTDACur */ 4449 {2 , 0x0000f9fc}, /* ptda_start */ 4450 {2 , 0x0000faa2}, /* ptda_environ */ 4451 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4452 {2 , 0x0000ffaa}, /* ptda_module */ 4453 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4454 {8 , 0x0000bf0c}, /* _ldrpFileNameBuf */ 4455 {13, 0x00033213}, /* SecPathFromSFN */ 4456 } 4457 }, 4458 #ifdef ALLKERNELS 4459 { /* 9032AU.SYM */ 4460 9032, KF_UNI | KF_ALLSTRICT, 16, 4461 { 4462 {15, 0x0000a84c}, /* _ldrRead */ 4463 {15, 0x000496c8}, /* _ldrOpen */ 4464 {15, 0x0004a060}, /* _ldrClose */ 4465 {15, 0x0004a0b0}, /* _LDRQAppType */ 4466 {15, 0x000475e4}, /* _ldrEnum32bitRelRecs */ 4467 {15, 0x00004318}, /* _IOSftOpen */ 4468 {15, 0x000047cc}, /* _IOSftClose */ 4469 {15, 0x00004874}, /* _IOSftTransPath */ 4470 {15, 0x000045ec}, /* _IOSftReadAt */ 4471 {15, 0x000045f3}, /* _IOSftWriteAt */ 4472 {15, 0x0000499c}, /* _SftFileSize */ 4473 {15, 0x000450a8}, /* _VMAllocMem */ 4474 {15, 0x000234a8}, /* _VMGetOwner */ 4475 {15, 0x000530d4}, /* g_tkExecPgm */ 4476 {15, 0x0004f828}, /* _tkStartProcess */ 4477 {11, 0x0000ecf8}, /* f_FuStrLenZ */ 4478 {11, 0x0000ecac}, /* f_FuStrLen */ 4479 {11, 0x0000ee10}, /* f_FuBuff */ 4480 {15, 0x000223e8}, /* _VMObjHandleInfo */ 4481 {15, 0x00053b58}, /* _ldrASMpMTEFromHandle */ 4482 {15, 0x00049953}, /* _ldrOpenPath */ 4483 {15, 0x00045ab4}, /* _LDRClearSem */ 4484 {15, 0x0004ef05}, /* _ldrFindModule */ 4485 {15, 0x0000c1b4}, /* _KSEMRequestMutex */ 4486 {15, 0x0000c2c8}, /* _KSEMReleaseMutex */ 4487 {15, 0x0000c328}, /* _KSEMQueryMutex */ 4488 {15, 0x0000c6ac}, /* _KSEMInit */ 4489 {10, 0x00026f00}, /* _LdrSem */ 4490 {10, 0x00026f8c}, /* _LDRLibPath */ 4491 {15, 0x00030b60}, /* _TKSuBuff */ 4492 {15, 0x00030752}, /* _TKFuBuff */ 4493 {15, 0x0003091e}, /* _TKFuBufLen */ 4494 {15, 0x00045b3c}, /* _ldrValidateMteHandle */ 4495 {10, 0x0000b88c}, /* _pTCBCur */ 4496 {10, 0x0000b888}, /* _pPTDACur */ 4497 {4 , 0x0000f9f4}, /* ptda_start */ 4498 {4 , 0x0000fa9a}, /* ptda_environ */ 4499 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4500 {4 , 0x0000ffaa}, /* ptda_module */ 4501 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4502 {10, 0x000294f0}, /* _ldrpFileNameBuf */ 4503 {15, 0x000415ff}, /* SecPathFromSFN */ 4504 } 4505 }, 4506 #endif 4507 #ifdef ALLKERNELS 4508 { /* 9032HU.SYM */ 4509 9032, KF_UNI | KF_HALFSTRICT, 16, 4510 { 4511 {15, 0x0000989c}, /* _ldrRead */ 4512 {15, 0x0003b9cc}, /* _ldrOpen */ 4513 {15, 0x0003c250}, /* _ldrClose */ 4514 {15, 0x0003c2a0}, /* _LDRQAppType */ 4515 {15, 0x00039bc8}, /* _ldrEnum32bitRelRecs */ 4516 {15, 0x0000390c}, /* _IOSftOpen */ 4517 {15, 0x00003db2}, /* _IOSftClose */ 4518 {15, 0x00003e59}, /* _IOSftTransPath */ 4519 {15, 0x00003bd3}, /* _IOSftReadAt */ 4520 {15, 0x00003bda}, /* _IOSftWriteAt */ 4521 {15, 0x00003f72}, /* _SftFileSize */ 4522 {15, 0x00037f14}, /* _VMAllocMem */ 4523 {15, 0x0001dd5e}, /* _VMGetOwner */ 4524 {15, 0x0004421a}, /* g_tkExecPgm */ 4525 {15, 0x00041197}, /* _tkStartProcess */ 4526 {11, 0x0000db00}, /* f_FuStrLenZ */ 4527 {11, 0x0000dab6}, /* f_FuStrLen */ 4528 {11, 0x0000dbf4}, /* f_FuBuff */ 4529 {15, 0x0001d0bc}, /* _VMObjHandleInfo */ 4530 {15, 0x00044bcc}, /* _ldrASMpMTEFromHandle */ 4531 {15, 0x0003bc43}, /* _ldrOpenPath */ 4532 {15, 0x0003865c}, /* _LDRClearSem */ 4533 {15, 0x00040914}, /* _ldrFindModule */ 4534 {15, 0x0000ad4c}, /* _KSEMRequestMutex */ 4535 {15, 0x0000ae23}, /* _KSEMReleaseMutex */ 4536 {15, 0x0000ae4e}, /* _KSEMQueryMutex */ 4537 {15, 0x0000b0ee}, /* _KSEMInit */ 4538 {10, 0x0001a574}, /* _LdrSem */ 4539 {10, 0x0001a5f4}, /* _LDRLibPath */ 4540 {15, 0x00028711}, /* _TKSuBuff */ 4541 {15, 0x00028347}, /* _TKFuBuff */ 4542 {15, 0x000284d1}, /* _TKFuBufLen */ 4543 {15, 0x00038698}, /* _ldrValidateMteHandle */ 4544 {10, 0x000072b8}, /* _pTCBCur */ 4545 {10, 0x000072b4}, /* _pPTDACur */ 4546 {4 , 0x0000f9fc}, /* ptda_start */ 4547 {4 , 0x0000faa2}, /* ptda_environ */ 4548 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4549 {4 , 0x0000ffaa}, /* ptda_module */ 4550 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4551 {10, 0x0001c0c8}, /* _ldrpFileNameBuf */ 4552 {15, 0x00034a13}, /* SecPathFromSFN */ 4553 } 4554 }, 4555 #endif 633 4556 { /* 9032RU.SYM */ 634 9032, 'R', TYPE_UNI, 14,4557 9032, KF_UNI, 14, 635 4558 { 636 4559 {13, 0x00009814}, /* _ldrRead */ … … 648 4571 {13, 0x0001d09a}, /* _VMGetOwner */ 649 4572 {13, 0x00042b3a}, /* g_tkExecPgm */ 650 {9, 0x0000db00}, /* f_FuStrLenZ */ 651 {9, 0x0000dab6}, /* f_FuStrLen */ 652 {9, 0x0000dbf4}, /* f_FuBuff */ 653 } 654 }, 4573 {13, 0x0003fad3}, /* _tkStartProcess */ 4574 {9 , 0x0000db00}, /* f_FuStrLenZ */ 4575 {9 , 0x0000dab6}, /* f_FuStrLen */ 4576 {9 , 0x0000dbf4}, /* f_FuBuff */ 4577 {13, 0x0001c3f8}, /* _VMObjHandleInfo */ 4578 {13, 0x000434ec}, /* _ldrASMpMTEFromHandle */ 4579 {13, 0x0003a4f3}, /* _ldrOpenPath */ 4580 {13, 0x00036f0c}, /* _LDRClearSem */ 4581 {13, 0x0003f250}, /* _ldrFindModule */ 4582 {13, 0x0000ab9c}, /* _KSEMRequestMutex */ 4583 {13, 0x0000ac2f}, /* _KSEMReleaseMutex */ 4584 {13, 0x0000ac5a}, /* _KSEMQueryMutex */ 4585 {13, 0x0000ae6f}, /* _KSEMInit */ 4586 {8 , 0x0000a3bc}, /* _LdrSem */ 4587 {8 , 0x0000a43c}, /* _LDRLibPath */ 4588 {13, 0x00027a4d}, /* _TKSuBuff */ 4589 {13, 0x00027683}, /* _TKFuBuff */ 4590 {13, 0x0002780d}, /* _TKFuBufLen */ 4591 {13, 0x00036f48}, /* _ldrValidateMteHandle */ 4592 {8 , 0x000072b8}, /* _pTCBCur */ 4593 {8 , 0x000072b4}, /* _pPTDACur */ 4594 {2 , 0x0000f9fc}, /* ptda_start */ 4595 {2 , 0x0000faa2}, /* ptda_environ */ 4596 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4597 {2 , 0x0000ffaa}, /* ptda_module */ 4598 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4599 {8 , 0x0000bf0c}, /* _ldrpFileNameBuf */ 4600 {13, 0x000332c3}, /* SecPathFromSFN */ 4601 } 4602 }, 4603 #ifdef ALLKERNELS 4604 { /* 9033AU.SYM */ 4605 9033, KF_UNI | KF_ALLSTRICT, 16, 4606 { 4607 {15, 0x0000a850}, /* _ldrRead */ 4608 {15, 0x00049814}, /* _ldrOpen */ 4609 {15, 0x0004a1b4}, /* _ldrClose */ 4610 {15, 0x0004a204}, /* _LDRQAppType */ 4611 {15, 0x0004771c}, /* _ldrEnum32bitRelRecs */ 4612 {15, 0x00004318}, /* _IOSftOpen */ 4613 {15, 0x000047cc}, /* _IOSftClose */ 4614 {15, 0x00004874}, /* _IOSftTransPath */ 4615 {15, 0x000045ec}, /* _IOSftReadAt */ 4616 {15, 0x000045f3}, /* _IOSftWriteAt */ 4617 {15, 0x0000499c}, /* _SftFileSize */ 4618 {15, 0x000451e0}, /* _VMAllocMem */ 4619 {15, 0x0002358c}, /* _VMGetOwner */ 4620 {15, 0x00053228}, /* g_tkExecPgm */ 4621 {15, 0x0004f97c}, /* _tkStartProcess */ 4622 {11, 0x0000ed2c}, /* f_FuStrLenZ */ 4623 {11, 0x0000ece0}, /* f_FuStrLen */ 4624 {11, 0x0000ee44}, /* f_FuBuff */ 4625 {15, 0x000224cc}, /* _VMObjHandleInfo */ 4626 {15, 0x00053cac}, /* _ldrASMpMTEFromHandle */ 4627 {15, 0x00049a9f}, /* _ldrOpenPath */ 4628 {15, 0x00045bec}, /* _LDRClearSem */ 4629 {15, 0x0004f059}, /* _ldrFindModule */ 4630 {15, 0x0000c1c4}, /* _KSEMRequestMutex */ 4631 {15, 0x0000c2d8}, /* _KSEMReleaseMutex */ 4632 {15, 0x0000c338}, /* _KSEMQueryMutex */ 4633 {15, 0x0000c6bc}, /* _KSEMInit */ 4634 {10, 0x00026ecc}, /* _LdrSem */ 4635 {10, 0x00026f58}, /* _LDRLibPath */ 4636 {15, 0x00030c44}, /* _TKSuBuff */ 4637 {15, 0x00030836}, /* _TKFuBuff */ 4638 {15, 0x00030a02}, /* _TKFuBufLen */ 4639 {15, 0x00045c74}, /* _ldrValidateMteHandle */ 4640 {10, 0x0000b898}, /* _pTCBCur */ 4641 {10, 0x0000b894}, /* _pPTDACur */ 4642 {4 , 0x0000f9f4}, /* ptda_start */ 4643 {4 , 0x0000fa9a}, /* ptda_environ */ 4644 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4645 {4 , 0x0000ffaa}, /* ptda_module */ 4646 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4647 {10, 0x000294bc}, /* _ldrpFileNameBuf */ 4648 {15, 0x000416f7}, /* SecPathFromSFN */ 4649 } 4650 }, 4651 #endif 4652 #ifdef ALLKERNELS 4653 { /* 9033HU.SYM */ 4654 9033, KF_UNI | KF_HALFSTRICT, 16, 4655 { 4656 {15, 0x000098ac}, /* _ldrRead */ 4657 {15, 0x0003bb24}, /* _ldrOpen */ 4658 {15, 0x0003c3b0}, /* _ldrClose */ 4659 {15, 0x0003c400}, /* _LDRQAppType */ 4660 {15, 0x00039d0c}, /* _ldrEnum32bitRelRecs */ 4661 {15, 0x0000390c}, /* _IOSftOpen */ 4662 {15, 0x00003db2}, /* _IOSftClose */ 4663 {15, 0x00003e59}, /* _IOSftTransPath */ 4664 {15, 0x00003bd3}, /* _IOSftReadAt */ 4665 {15, 0x00003bda}, /* _IOSftWriteAt */ 4666 {15, 0x00003f72}, /* _SftFileSize */ 4667 {15, 0x00038058}, /* _VMAllocMem */ 4668 {15, 0x0001de42}, /* _VMGetOwner */ 4669 {15, 0x0004437a}, /* g_tkExecPgm */ 4670 {15, 0x000412f7}, /* _tkStartProcess */ 4671 {11, 0x0000db30}, /* f_FuStrLenZ */ 4672 {11, 0x0000dae6}, /* f_FuStrLen */ 4673 {11, 0x0000dc24}, /* f_FuBuff */ 4674 {15, 0x0001d1a0}, /* _VMObjHandleInfo */ 4675 {15, 0x00044d2c}, /* _ldrASMpMTEFromHandle */ 4676 {15, 0x0003bd9b}, /* _ldrOpenPath */ 4677 {15, 0x000387a0}, /* _LDRClearSem */ 4678 {15, 0x00040a74}, /* _ldrFindModule */ 4679 {15, 0x0000ad68}, /* _KSEMRequestMutex */ 4680 {15, 0x0000ae3f}, /* _KSEMReleaseMutex */ 4681 {15, 0x0000ae6a}, /* _KSEMQueryMutex */ 4682 {15, 0x0000b10a}, /* _KSEMInit */ 4683 {10, 0x0001a578}, /* _LdrSem */ 4684 {10, 0x0001a5f8}, /* _LDRLibPath */ 4685 {15, 0x000287f5}, /* _TKSuBuff */ 4686 {15, 0x0002842b}, /* _TKFuBuff */ 4687 {15, 0x000285b5}, /* _TKFuBufLen */ 4688 {15, 0x000387dc}, /* _ldrValidateMteHandle */ 4689 {10, 0x000072bc}, /* _pTCBCur */ 4690 {10, 0x000072b8}, /* _pPTDACur */ 4691 {4 , 0x0000f9fc}, /* ptda_start */ 4692 {4 , 0x0000faa2}, /* ptda_environ */ 4693 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4694 {4 , 0x0000ffaa}, /* ptda_module */ 4695 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4696 {10, 0x0001c0cc}, /* _ldrpFileNameBuf */ 4697 {15, 0x00034b0b}, /* SecPathFromSFN */ 4698 } 4699 }, 4700 #endif 655 4701 { /* 9033RU.SYM */ 656 9033, 'R', TYPE_UNI, 14,4702 9033, KF_UNI, 14, 657 4703 { 658 4704 {13, 0x00009824}, /* _ldrRead */ … … 670 4716 {13, 0x0001d172}, /* _VMGetOwner */ 671 4717 {13, 0x00042c8e}, /* g_tkExecPgm */ 672 {9, 0x0000db30}, /* f_FuStrLenZ */ 673 {9, 0x0000dae6}, /* f_FuStrLen */ 674 {9, 0x0000dc24}, /* f_FuBuff */ 675 } 676 }, 4718 {13, 0x0003fc27}, /* _tkStartProcess */ 4719 {9 , 0x0000db30}, /* f_FuStrLenZ */ 4720 {9 , 0x0000dae6}, /* f_FuStrLen */ 4721 {9 , 0x0000dc24}, /* f_FuBuff */ 4722 {13, 0x0001c4d0}, /* _VMObjHandleInfo */ 4723 {13, 0x00043640}, /* _ldrASMpMTEFromHandle */ 4724 {13, 0x0003a63f}, /* _ldrOpenPath */ 4725 {13, 0x00037044}, /* _LDRClearSem */ 4726 {13, 0x0003f3a4}, /* _ldrFindModule */ 4727 {13, 0x0000abb8}, /* _KSEMRequestMutex */ 4728 {13, 0x0000ac4b}, /* _KSEMReleaseMutex */ 4729 {13, 0x0000ac76}, /* _KSEMQueryMutex */ 4730 {13, 0x0000ae8b}, /* _KSEMInit */ 4731 {8 , 0x0000a3c0}, /* _LdrSem */ 4732 {8 , 0x0000a440}, /* _LDRLibPath */ 4733 {13, 0x00027b25}, /* _TKSuBuff */ 4734 {13, 0x0002775b}, /* _TKFuBuff */ 4735 {13, 0x000278e5}, /* _TKFuBufLen */ 4736 {13, 0x00037080}, /* _ldrValidateMteHandle */ 4737 {8 , 0x000072bc}, /* _pTCBCur */ 4738 {8 , 0x000072b8}, /* _pPTDACur */ 4739 {2 , 0x0000f9fc}, /* ptda_start */ 4740 {2 , 0x0000faa2}, /* ptda_environ */ 4741 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4742 {2 , 0x0000ffaa}, /* ptda_module */ 4743 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4744 {8 , 0x0000bf10}, /* _ldrpFileNameBuf */ 4745 {13, 0x000333af}, /* SecPathFromSFN */ 4746 } 4747 }, 4748 #ifdef ALLKERNELS 4749 { /* 9034AU.SYM */ 4750 9034, KF_UNI | KF_ALLSTRICT, 16, 4751 { 4752 {15, 0x0000a3cc}, /* _ldrRead */ 4753 {15, 0x0004a144}, /* _ldrOpen */ 4754 {15, 0x0004aae8}, /* _ldrClose */ 4755 {15, 0x0004ab38}, /* _LDRQAppType */ 4756 {15, 0x00048048}, /* _ldrEnum32bitRelRecs */ 4757 {15, 0x000044b4}, /* _IOSftOpen */ 4758 {15, 0x00004968}, /* _IOSftClose */ 4759 {15, 0x00004a10}, /* _IOSftTransPath */ 4760 {15, 0x00004788}, /* _IOSftReadAt */ 4761 {15, 0x0000478f}, /* _IOSftWriteAt */ 4762 {15, 0x00004b38}, /* _SftFileSize */ 4763 {15, 0x00045b0c}, /* _VMAllocMem */ 4764 {15, 0x0002399c}, /* _VMGetOwner */ 4765 {15, 0x00053b44}, /* g_tkExecPgm */ 4766 {15, 0x00050264}, /* _tkStartProcess */ 4767 {11, 0x0000ed44}, /* f_FuStrLenZ */ 4768 {11, 0x0000ecf8}, /* f_FuStrLen */ 4769 {11, 0x0000ee5c}, /* f_FuBuff */ 4770 {15, 0x000228dc}, /* _VMObjHandleInfo */ 4771 {15, 0x000545dc}, /* _ldrASMpMTEFromHandle */ 4772 {15, 0x0004a3cf}, /* _ldrOpenPath */ 4773 {15, 0x00046518}, /* _LDRClearSem */ 4774 {15, 0x0004f950}, /* _ldrFindModule */ 4775 {15, 0x0000bcfc}, /* _KSEMRequestMutex */ 4776 {15, 0x0000be10}, /* _KSEMReleaseMutex */ 4777 {15, 0x0000be70}, /* _KSEMQueryMutex */ 4778 {15, 0x0000c1f4}, /* _KSEMInit */ 4779 {10, 0x00027160}, /* _LdrSem */ 4780 {10, 0x000271ec}, /* _LDRLibPath */ 4781 {15, 0x00031014}, /* _TKSuBuff */ 4782 {15, 0x00030c04}, /* _TKFuBuff */ 4783 {15, 0x00030dd0}, /* _TKFuBufLen */ 4784 {15, 0x000465a0}, /* _ldrValidateMteHandle */ 4785 {10, 0x0000b9b0}, /* _pTCBCur */ 4786 {10, 0x0000b9ac}, /* _pPTDACur */ 4787 {4 , 0x0000f9f4}, /* ptda_start */ 4788 {4 , 0x0000fa9a}, /* ptda_environ */ 4789 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4790 {4 , 0x0000ffaa}, /* ptda_module */ 4791 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4792 {10, 0x0002978c}, /* _ldrpFileNameBuf */ 4793 {15, 0x00041d7e}, /* SecPathFromSFN */ 4794 } 4795 }, 4796 #endif 4797 #ifdef ALLKERNELS 4798 { /* 9034HU.SYM */ 4799 9034, KF_UNI | KF_HALFSTRICT, 16, 4800 { 4801 {15, 0x000093fc}, /* _ldrRead */ 4802 {15, 0x0003be50}, /* _ldrOpen */ 4803 {15, 0x0003c6dc}, /* _ldrClose */ 4804 {15, 0x0003c72c}, /* _LDRQAppType */ 4805 {15, 0x0003a034}, /* _ldrEnum32bitRelRecs */ 4806 {15, 0x00003a30}, /* _IOSftOpen */ 4807 {15, 0x00003ed6}, /* _IOSftClose */ 4808 {15, 0x00003f7d}, /* _IOSftTransPath */ 4809 {15, 0x00003cf7}, /* _IOSftReadAt */ 4810 {15, 0x00003cfe}, /* _IOSftWriteAt */ 4811 {15, 0x00004096}, /* _SftFileSize */ 4812 {15, 0x00038380}, /* _VMAllocMem */ 4813 {15, 0x0001e136}, /* _VMGetOwner */ 4814 {15, 0x0004476a}, /* g_tkExecPgm */ 4815 {15, 0x000416e7}, /* _tkStartProcess */ 4816 {11, 0x0000db44}, /* f_FuStrLenZ */ 4817 {11, 0x0000dafa}, /* f_FuStrLen */ 4818 {11, 0x0000dc38}, /* f_FuBuff */ 4819 {15, 0x0001d494}, /* _VMObjHandleInfo */ 4820 {15, 0x00045130}, /* _ldrASMpMTEFromHandle */ 4821 {15, 0x0003c0c7}, /* _ldrOpenPath */ 4822 {15, 0x00038ac8}, /* _LDRClearSem */ 4823 {15, 0x00040e74}, /* _ldrFindModule */ 4824 {15, 0x0000a874}, /* _KSEMRequestMutex */ 4825 {15, 0x0000a94b}, /* _KSEMReleaseMutex */ 4826 {15, 0x0000a976}, /* _KSEMQueryMutex */ 4827 {15, 0x0000ac16}, /* _KSEMInit */ 4828 {10, 0x0001a5bc}, /* _LdrSem */ 4829 {10, 0x0001a63c}, /* _LDRLibPath */ 4830 {15, 0x00028aa1}, /* _TKSuBuff */ 4831 {15, 0x000286d7}, /* _TKFuBuff */ 4832 {15, 0x00028861}, /* _TKFuBufLen */ 4833 {15, 0x00038b04}, /* _ldrValidateMteHandle */ 4834 {10, 0x000072dc}, /* _pTCBCur */ 4835 {10, 0x000072d8}, /* _pPTDACur */ 4836 {4 , 0x0000f9fc}, /* ptda_start */ 4837 {4 , 0x0000faa2}, /* ptda_environ */ 4838 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4839 {4 , 0x0000ffaa}, /* ptda_module */ 4840 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4841 {10, 0x0001c148}, /* _ldrpFileNameBuf */ 4842 {15, 0x00034f09}, /* SecPathFromSFN */ 4843 } 4844 }, 4845 #endif 677 4846 { /* 9034RU.SYM */ 678 9034, 'R', TYPE_UNI, 14,4847 9034, KF_UNI, 14, 679 4848 { 680 4849 {13, 0x00009368}, /* _ldrRead */ … … 692 4861 {13, 0x0001d2fa}, /* _VMGetOwner */ 693 4862 {13, 0x00042fda}, /* g_tkExecPgm */ 694 {9, 0x0000db44}, /* f_FuStrLenZ */ 695 {9, 0x0000dafa}, /* f_FuStrLen */ 696 {9, 0x0000dc38}, /* f_FuBuff */ 697 } 698 }, 4863 {13, 0x0003ff73}, /* _tkStartProcess */ 4864 {9 , 0x0000db44}, /* f_FuStrLenZ */ 4865 {9 , 0x0000dafa}, /* f_FuStrLen */ 4866 {9 , 0x0000dc38}, /* f_FuBuff */ 4867 {13, 0x0001c658}, /* _VMObjHandleInfo */ 4868 {13, 0x000439a0}, /* _ldrASMpMTEFromHandle */ 4869 {13, 0x0003a977}, /* _ldrOpenPath */ 4870 {13, 0x00037374}, /* _LDRClearSem */ 4871 {13, 0x0003f700}, /* _ldrFindModule */ 4872 {13, 0x0000a6b8}, /* _KSEMRequestMutex */ 4873 {13, 0x0000a74b}, /* _KSEMReleaseMutex */ 4874 {13, 0x0000a776}, /* _KSEMQueryMutex */ 4875 {13, 0x0000a98b}, /* _KSEMInit */ 4876 {8 , 0x0000a404}, /* _LdrSem */ 4877 {8 , 0x0000a484}, /* _LDRLibPath */ 4878 {13, 0x00027c65}, /* _TKSuBuff */ 4879 {13, 0x0002789b}, /* _TKFuBuff */ 4880 {13, 0x00027a25}, /* _TKFuBufLen */ 4881 {13, 0x000373b0}, /* _ldrValidateMteHandle */ 4882 {8 , 0x000072dc}, /* _pTCBCur */ 4883 {8 , 0x000072d8}, /* _pPTDACur */ 4884 {2 , 0x0000f9fc}, /* ptda_start */ 4885 {2 , 0x0000faa2}, /* ptda_environ */ 4886 {2 , 0x0000fed4}, /* ptda_ptdasem */ 4887 {2 , 0x0000ffaa}, /* ptda_module */ 4888 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4889 {8 , 0x0000bf8c}, /* _ldrpFileNameBuf */ 4890 {13, 0x000337b5}, /* SecPathFromSFN */ 4891 } 4892 }, 4893 #ifdef ALLKERNELS 4894 { /* 9035AU.SYM */ 4895 9035, KF_UNI | KF_ALLSTRICT, 16, 4896 { 4897 {15, 0x0000a3cc}, /* _ldrRead */ 4898 {15, 0x00049cf0}, /* _ldrOpen */ 4899 {15, 0x0004a68c}, /* _ldrClose */ 4900 {15, 0x0004a6dc}, /* _LDRQAppType */ 4901 {15, 0x00047c08}, /* _ldrEnum32bitRelRecs */ 4902 {15, 0x000044b4}, /* _IOSftOpen */ 4903 {15, 0x00004968}, /* _IOSftClose */ 4904 {15, 0x00004a10}, /* _IOSftTransPath */ 4905 {15, 0x00004788}, /* _IOSftReadAt */ 4906 {15, 0x0000478f}, /* _IOSftWriteAt */ 4907 {15, 0x00004b38}, /* _SftFileSize */ 4908 {15, 0x000456cc}, /* _VMAllocMem */ 4909 {15, 0x000237ac}, /* _VMGetOwner */ 4910 {15, 0x00053758}, /* g_tkExecPgm */ 4911 {15, 0x0004feb0}, /* _tkStartProcess */ 4912 {11, 0x0000ed44}, /* f_FuStrLenZ */ 4913 {11, 0x0000ecf8}, /* f_FuStrLen */ 4914 {11, 0x0000ee5c}, /* f_FuBuff */ 4915 {15, 0x000226ec}, /* _VMObjHandleInfo */ 4916 {15, 0x000541f0}, /* _ldrASMpMTEFromHandle */ 4917 {15, 0x00049f7b}, /* _ldrOpenPath */ 4918 {15, 0x000460d8}, /* _LDRClearSem */ 4919 {15, 0x0004f59c}, /* _ldrFindModule */ 4920 {15, 0x0000bcfc}, /* _KSEMRequestMutex */ 4921 {15, 0x0000be10}, /* _KSEMReleaseMutex */ 4922 {15, 0x0000be70}, /* _KSEMQueryMutex */ 4923 {15, 0x0000c1f4}, /* _KSEMInit */ 4924 {10, 0x00027164}, /* _LdrSem */ 4925 {10, 0x000271f0}, /* _LDRLibPath */ 4926 {15, 0x00030e3c}, /* _TKSuBuff */ 4927 {15, 0x00030a2c}, /* _TKFuBuff */ 4928 {15, 0x00030bf8}, /* _TKFuBufLen */ 4929 {15, 0x00046160}, /* _ldrValidateMteHandle */ 4930 {10, 0x0000b9b0}, /* _pTCBCur */ 4931 {10, 0x0000b9ac}, /* _pPTDACur */ 4932 {4 , 0x0000f9f4}, /* ptda_start */ 4933 {4 , 0x0000fa9a}, /* ptda_environ */ 4934 {4 , 0x0000fecc}, /* ptda_ptdasem */ 4935 {4 , 0x0000ffaa}, /* ptda_module */ 4936 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 4937 {10, 0x00029790}, /* _ldrpFileNameBuf */ 4938 {15, 0x00041af0}, /* SecPathFromSFN */ 4939 } 4940 }, 4941 #endif 4942 #ifdef ALLKERNELS 4943 { /* 9035HU.SYM */ 4944 9035, KF_UNI | KF_HALFSTRICT, 16, 4945 { 4946 {15, 0x000093fc}, /* _ldrRead */ 4947 {15, 0x0003c0b4}, /* _ldrOpen */ 4948 {15, 0x0003c938}, /* _ldrClose */ 4949 {15, 0x0003c988}, /* _LDRQAppType */ 4950 {15, 0x0003a2ac}, /* _ldrEnum32bitRelRecs */ 4951 {15, 0x00003a30}, /* _IOSftOpen */ 4952 {15, 0x00003ed6}, /* _IOSftClose */ 4953 {15, 0x00003f7d}, /* _IOSftTransPath */ 4954 {15, 0x00003cf7}, /* _IOSftReadAt */ 4955 {15, 0x00003cfe}, /* _IOSftWriteAt */ 4956 {15, 0x00004096}, /* _SftFileSize */ 4957 {15, 0x000385f8}, /* _VMAllocMem */ 4958 {15, 0x0001e272}, /* _VMGetOwner */ 4959 {15, 0x00044a1e}, /* g_tkExecPgm */ 4960 {15, 0x00041997}, /* _tkStartProcess */ 4961 {11, 0x0000db44}, /* f_FuStrLenZ */ 4962 {11, 0x0000dafa}, /* f_FuStrLen */ 4963 {11, 0x0000dc38}, /* f_FuBuff */ 4964 {15, 0x0001d5d0}, /* _VMObjHandleInfo */ 4965 {15, 0x000453e4}, /* _ldrASMpMTEFromHandle */ 4966 {15, 0x0003c32b}, /* _ldrOpenPath */ 4967 {15, 0x00038d40}, /* _LDRClearSem */ 4968 {15, 0x00041124}, /* _ldrFindModule */ 4969 {15, 0x0000a874}, /* _KSEMRequestMutex */ 4970 {15, 0x0000a94b}, /* _KSEMReleaseMutex */ 4971 {15, 0x0000a976}, /* _KSEMQueryMutex */ 4972 {15, 0x0000ac16}, /* _KSEMInit */ 4973 {10, 0x0001a5bc}, /* _LdrSem */ 4974 {10, 0x0001a63c}, /* _LDRLibPath */ 4975 {15, 0x00028be9}, /* _TKSuBuff */ 4976 {15, 0x0002881f}, /* _TKFuBuff */ 4977 {15, 0x000289a9}, /* _TKFuBufLen */ 4978 {15, 0x00038d7c}, /* _ldrValidateMteHandle */ 4979 {10, 0x000072dc}, /* _pTCBCur */ 4980 {10, 0x000072d8}, /* _pPTDACur */ 4981 {4 , 0x0000f9fc}, /* ptda_start */ 4982 {4 , 0x0000faa2}, /* ptda_environ */ 4983 {4 , 0x0000fed4}, /* ptda_ptdasem */ 4984 {4 , 0x0000ffaa}, /* ptda_module */ 4985 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 4986 {10, 0x0001c148}, /* _ldrpFileNameBuf */ 4987 {15, 0x000350b6}, /* SecPathFromSFN */ 4988 } 4989 }, 4990 #endif 699 4991 { /* 9035RU.SYM */ 700 9035, 'R', TYPE_UNI, 14,4992 9035, KF_UNI, 14, 701 4993 { 702 4994 {13, 0x00009368}, /* _ldrRead */ … … 714 5006 {13, 0x0001d436}, /* _VMGetOwner */ 715 5007 {13, 0x0004324e}, /* g_tkExecPgm */ 716 {9, 0x0000db44}, /* f_FuStrLenZ */ 717 {9, 0x0000dafa}, /* f_FuStrLen */ 718 {9, 0x0000dc38}, /* f_FuBuff */ 719 } 720 }, 5008 {13, 0x000401eb}, /* _tkStartProcess */ 5009 {9 , 0x0000db44}, /* f_FuStrLenZ */ 5010 {9 , 0x0000dafa}, /* f_FuStrLen */ 5011 {9 , 0x0000dc38}, /* f_FuBuff */ 5012 {13, 0x0001c794}, /* _VMObjHandleInfo */ 5013 {13, 0x00043c14}, /* _ldrASMpMTEFromHandle */ 5014 {13, 0x0003abdb}, /* _ldrOpenPath */ 5015 {13, 0x000375ec}, /* _LDRClearSem */ 5016 {13, 0x0003f977}, /* _ldrFindModule */ 5017 {13, 0x0000a6b8}, /* _KSEMRequestMutex */ 5018 {13, 0x0000a74b}, /* _KSEMReleaseMutex */ 5019 {13, 0x0000a776}, /* _KSEMQueryMutex */ 5020 {13, 0x0000a98b}, /* _KSEMInit */ 5021 {8 , 0x0000a404}, /* _LdrSem */ 5022 {8 , 0x0000a484}, /* _LDRLibPath */ 5023 {13, 0x00027dad}, /* _TKSuBuff */ 5024 {13, 0x000279e3}, /* _TKFuBuff */ 5025 {13, 0x00027b6d}, /* _TKFuBufLen */ 5026 {13, 0x00037628}, /* _ldrValidateMteHandle */ 5027 {8 , 0x000072dc}, /* _pTCBCur */ 5028 {8 , 0x000072d8}, /* _pPTDACur */ 5029 {2 , 0x0000f9fc}, /* ptda_start */ 5030 {2 , 0x0000faa2}, /* ptda_environ */ 5031 {2 , 0x0000fed4}, /* ptda_ptdasem */ 5032 {2 , 0x0000ffaa}, /* ptda_module */ 5033 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 5034 {8 , 0x0000bf8c}, /* _ldrpFileNameBuf */ 5035 {13, 0x00033962}, /* SecPathFromSFN */ 5036 } 5037 }, 5038 #ifdef ALLKERNELS 5039 { /* 9036AU.SYM */ 5040 9036, KF_UNI | KF_ALLSTRICT, 16, 5041 { 5042 {15, 0x0000a444}, /* _ldrRead */ 5043 {15, 0x00049f78}, /* _ldrOpen */ 5044 {15, 0x0004a914}, /* _ldrClose */ 5045 {15, 0x0004a964}, /* _LDRQAppType */ 5046 {15, 0x00047e84}, /* _ldrEnum32bitRelRecs */ 5047 {15, 0x0000452c}, /* _IOSftOpen */ 5048 {15, 0x000049e0}, /* _IOSftClose */ 5049 {15, 0x00004a88}, /* _IOSftTransPath */ 5050 {15, 0x00004800}, /* _IOSftReadAt */ 5051 {15, 0x00004807}, /* _IOSftWriteAt */ 5052 {15, 0x00004bb0}, /* _SftFileSize */ 5053 {15, 0x00045948}, /* _VMAllocMem */ 5054 {15, 0x00023814}, /* _VMGetOwner */ 5055 {15, 0x00053a98}, /* g_tkExecPgm */ 5056 {15, 0x00050188}, /* _tkStartProcess */ 5057 {11, 0x0000ed84}, /* f_FuStrLenZ */ 5058 {11, 0x0000ed38}, /* f_FuStrLen */ 5059 {11, 0x0000ee9c}, /* f_FuBuff */ 5060 {15, 0x00022754}, /* _VMObjHandleInfo */ 5061 {15, 0x00054560}, /* _ldrASMpMTEFromHandle */ 5062 {15, 0x0004a203}, /* _ldrOpenPath */ 5063 {15, 0x00046354}, /* _LDRClearSem */ 5064 {15, 0x0004f873}, /* _ldrFindModule */ 5065 {15, 0x0000bd6c}, /* _KSEMRequestMutex */ 5066 {15, 0x0000be80}, /* _KSEMReleaseMutex */ 5067 {15, 0x0000bee0}, /* _KSEMQueryMutex */ 5068 {15, 0x0000c264}, /* _KSEMInit */ 5069 {10, 0x000272f4}, /* _LdrSem */ 5070 {10, 0x00027380}, /* _LDRLibPath */ 5071 {15, 0x00030eb8}, /* _TKSuBuff */ 5072 {15, 0x00030aa8}, /* _TKFuBuff */ 5073 {15, 0x00030c74}, /* _TKFuBufLen */ 5074 {15, 0x000463dc}, /* _ldrValidateMteHandle */ 5075 {10, 0x0000bab8}, /* _pTCBCur */ 5076 {10, 0x0000bab4}, /* _pPTDACur */ 5077 {4 , 0x0000f9e8}, /* ptda_start */ 5078 {4 , 0x0000fa9a}, /* ptda_environ */ 5079 {4 , 0x0000fecc}, /* ptda_ptdasem */ 5080 {4 , 0x0000ffaa}, /* ptda_module */ 5081 {4 , 0x0000fa9c}, /* ptda_pBeginLIBPATH */ 5082 {10, 0x00029920}, /* _ldrpFileNameBuf */ 5083 {15, 0x00041d19}, /* SecPathFromSFN */ 5084 } 5085 }, 5086 #endif 5087 #ifdef ALLKERNELS 5088 { /* 9036HU.SYM */ 5089 9036, KF_UNI | KF_HALFSTRICT, 16, 5090 { 5091 {15, 0x00009448}, /* _ldrRead */ 5092 {15, 0x0003c2d4}, /* _ldrOpen */ 5093 {15, 0x0003cb58}, /* _ldrClose */ 5094 {15, 0x0003cba8}, /* _LDRQAppType */ 5095 {15, 0x0003a4b8}, /* _ldrEnum32bitRelRecs */ 5096 {15, 0x00003a7c}, /* _IOSftOpen */ 5097 {15, 0x00003f22}, /* _IOSftClose */ 5098 {15, 0x00003fc9}, /* _IOSftTransPath */ 5099 {15, 0x00003d43}, /* _IOSftReadAt */ 5100 {15, 0x00003d4a}, /* _IOSftWriteAt */ 5101 {15, 0x000040e2}, /* _SftFileSize */ 5102 {15, 0x00038804}, /* _VMAllocMem */ 5103 {15, 0x0001e31a}, /* _VMGetOwner */ 5104 {15, 0x00044cea}, /* g_tkExecPgm */ 5105 {15, 0x00041bf3}, /* _tkStartProcess */ 5106 {11, 0x0000db94}, /* f_FuStrLenZ */ 5107 {11, 0x0000db4a}, /* f_FuStrLen */ 5108 {11, 0x0000dc88}, /* f_FuBuff */ 5109 {15, 0x0001d678}, /* _VMObjHandleInfo */ 5110 {15, 0x000456e0}, /* _ldrASMpMTEFromHandle */ 5111 {15, 0x0003c54b}, /* _ldrOpenPath */ 5112 {15, 0x00038f4c}, /* _LDRClearSem */ 5113 {15, 0x0004137f}, /* _ldrFindModule */ 5114 {15, 0x0000a8b4}, /* _KSEMRequestMutex */ 5115 {15, 0x0000a98b}, /* _KSEMReleaseMutex */ 5116 {15, 0x0000a9b6}, /* _KSEMQueryMutex */ 5117 {15, 0x0000ac56}, /* _KSEMInit */ 5118 {10, 0x0001a5f0}, /* _LdrSem */ 5119 {10, 0x0001a670}, /* _LDRLibPath */ 5120 {15, 0x00028c99}, /* _TKSuBuff */ 5121 {15, 0x000288cf}, /* _TKFuBuff */ 5122 {15, 0x00028a59}, /* _TKFuBufLen */ 5123 {15, 0x00038f88}, /* _ldrValidateMteHandle */ 5124 {10, 0x000072fc}, /* _pTCBCur */ 5125 {10, 0x000072f8}, /* _pPTDACur */ 5126 {4 , 0x0000f9f0}, /* ptda_start */ 5127 {4 , 0x0000faa2}, /* ptda_environ */ 5128 {4 , 0x0000fed4}, /* ptda_ptdasem */ 5129 {4 , 0x0000ffaa}, /* ptda_module */ 5130 {4 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 5131 {10, 0x0001c17c}, /* _ldrpFileNameBuf */ 5132 {15, 0x00035319}, /* SecPathFromSFN */ 5133 } 5134 }, 5135 #endif 721 5136 { /* 9036RU.SYM */ 722 9036, 'R', TYPE_UNI, 14,5137 9036, KF_UNI, 14, 723 5138 { 724 5139 {13, 0x000093b4}, /* _ldrRead */ … … 736 5151 {13, 0x0001d4ee}, /* _VMGetOwner */ 737 5152 {13, 0x0004359e}, /* g_tkExecPgm */ 738 {9, 0x0000db94}, /* f_FuStrLenZ */ 739 {9, 0x0000db4a}, /* f_FuStrLen */ 740 {9, 0x0000dc88}, /* f_FuBuff */ 5153 {13, 0x000404c7}, /* _tkStartProcess */ 5154 {9 , 0x0000db94}, /* f_FuStrLenZ */ 5155 {9 , 0x0000db4a}, /* f_FuStrLen */ 5156 {9 , 0x0000dc88}, /* f_FuBuff */ 5157 {13, 0x0001c84c}, /* _VMObjHandleInfo */ 5158 {13, 0x00043f94}, /* _ldrASMpMTEFromHandle */ 5159 {13, 0x0003ae03}, /* _ldrOpenPath */ 5160 {13, 0x00037800}, /* _LDRClearSem */ 5161 {13, 0x0003fc54}, /* _ldrFindModule */ 5162 {13, 0x0000a708}, /* _KSEMRequestMutex */ 5163 {13, 0x0000a79b}, /* _KSEMReleaseMutex */ 5164 {13, 0x0000a7c6}, /* _KSEMQueryMutex */ 5165 {13, 0x0000a9db}, /* _KSEMInit */ 5166 {8 , 0x0000a438}, /* _LdrSem */ 5167 {8 , 0x0000a4b8}, /* _LDRLibPath */ 5168 {13, 0x00027e6d}, /* _TKSuBuff */ 5169 {13, 0x00027aa3}, /* _TKFuBuff */ 5170 {13, 0x00027c2d}, /* _TKFuBufLen */ 5171 {13, 0x0003783c}, /* _ldrValidateMteHandle */ 5172 {8 , 0x000072fc}, /* _pTCBCur */ 5173 {8 , 0x000072f8}, /* _pPTDACur */ 5174 {2 , 0x0000f9f0}, /* ptda_start */ 5175 {2 , 0x0000faa2}, /* ptda_environ */ 5176 {2 , 0x0000fed4}, /* ptda_ptdasem */ 5177 {2 , 0x0000ffaa}, /* ptda_module */ 5178 {2 , 0x0000faa4}, /* ptda_pBeginLIBPATH */ 5179 {8 , 0x0000bfc0}, /* _ldrpFileNameBuf */ 5180 {13, 0x00033bcd}, /* SecPathFromSFN */ 741 5181 } 742 5182 }, 743 5183 { /* Terminating entry */ 744 0,0,0, 0,5184 0,0,0, 745 5185 { 746 5186 {0,0}, … … 761 5201 {0,0}, 762 5202 {0,0}, 5203 {0,0}, 5204 {0,0}, 5205 {0,0}, 5206 {0,0}, 5207 {0,0}, 5208 {0,0}, 5209 {0,0}, 5210 {0,0}, 5211 {0,0}, 5212 {0,0}, 5213 {0,0}, 5214 {0,0}, 5215 {0,0}, 5216 {0,0}, 5217 {0,0}, 5218 {0,0}, 5219 {0,0}, 5220 {0,0}, 5221 {0,0}, 5222 {0,0}, 5223 {0,0}, 5224 {0,0}, 5225 {0,0}, 5226 {0,0}, 5227 {0,0}, 763 5228 } 764 5229 } -
trunk/src/win32k/dev16/d16globl.c
r2898 r4164 1 /* $Id: d16globl.c,v 1. 1 2000-02-25 18:19:24bird Exp $1 /* $Id: d16globl.c,v 1.2 2000-09-02 21:07:55 bird Exp $ 2 2 * 3 3 * d16globals - global data (16-bit) … … 18 18 *******************************************************************************/ 19 19 #include <os2.h> 20 #include "devSegDf.h" 20 21 #include "options.h" 21 22 #include "log.h" 23 22 24 23 25 /******************************************************************************* … … 27 29 /* Note: All global variables must be initialized! * 28 30 * Uninitialized variables ends up in DATA32. */ 31 PFN Device_Help = NULL; 32 ULONG TKSSBase16 = 0; 33 USHORT R0FlatCS16 = 0; 34 USHORT R0FlatDS16 = 0; 35 BOOL fInitTime = TRUE; 36 struct options 37 DATA16_GLOBAL options = DEFAULT_OPTION_ASSIGMENTS; 29 38 30 PFN Device_Help = NULL; 31 ULONG TKSSBase16 = 0; 32 USHORT R0FlatCS16 = 0; 33 USHORT R0FlatDS16 = 0; 34 BOOL fInitTime = TRUE; 39 CHAR szBuildDate[] = {__DATE__}; 40 CHAR szBuildTime[] = {__TIME__}; 35 41 36 struct options options = DEFAULT_OPTION_ASSIGMENTS;37 -
trunk/src/win32k/dev16/d16init.c
r2898 r4164 1 /* $Id: d16init.c,v 1. 6 2000-02-25 18:15:02bird Exp $1 /* $Id: d16init.c,v 1.7 2000-09-02 21:07:55 bird Exp $ 2 2 * 3 3 * d16init - init routines for both drivers. … … 6 6 * compleated. CodeEnd and DataEnd should not be set here.? 7 7 * 8 * Copyright (c) 1999 knut st. osmundsen8 * Copyright (c) 1999-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.no) 9 9 * 10 10 * Project Odin Software License can be found in LICENSE.TXT … … 36 36 #include <memory.h> 37 37 38 #include "devSegDf.h" 39 #undef DATA16_INIT 40 #define DATA16_INIT 41 #undef CODE16_INIT 42 #define CODE16_INIT 38 43 #include "probkrnl.h" 39 44 #include "dev1632.h" 40 45 #include "dev16.h" 46 #include "vprntf16.h" 47 #include "log.h" 48 #include "options.h" 49 50 41 51 42 52 /** … … 51 61 USHORT NEAR dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut) 52 62 { 63 APIRET rc; 53 64 Device_Help = pRpIn->DevHlpEP; 54 65 66 /* 67 * Does this work at Ring-3 (inittime)? 68 * If this work we could be saved from throuble! 69 */ 70 rc = initGetDosTableData(); 71 if (rc != NO_ERROR) 72 printf16("win32k - elf$: initGetDosTableData failed with rc=%d\n", rc); 73 55 74 pRpOut->BPBArray = NULL; 56 pRpOut->CodeEnd = (USHORT)&CODE16END;57 pRpOut->DataEnd = (USHORT)&DATA16END;75 pRpOut->CodeEnd = (USHORT)&CODE16_INITSTART; 76 pRpOut->DataEnd = (USHORT)&DATA16_INITSTART; 58 77 pRpOut->Unit = 0; 59 78 pRpOut->rph.Status = STATUS_DONE; … … 80 99 NPSZ npszErrMsg = NULL; 81 100 101 /* 102 * Probe kernel data. 103 */ 82 104 rc = ProbeKernel(pRpIn); 83 105 if (rc == NO_ERROR) 84 106 { 107 /* 108 * Open and send a Ring-0 init packet to elf$. 109 * If this succeeds win32k$ init succeeds. 110 */ 85 111 rc = DosOpen("\\dev\\elf$", &hDev0, &usAction, 0UL, FILE_NORMAL, 86 112 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, … … 93 119 if (rc == NO_ERROR) 94 120 { 95 if (data.Status != STATUS_DONE) 96 npszErrMsg = "Ring-0 initiation failed\n\r"; 121 if ((rc = data.Status) == STATUS_DONE) 122 { 123 if (!options.fQuiet) 124 printf16("Win32k.sys succesfully initiated!\n"); 125 pRpOut->Status = pRpOut->rph.Status = data.Status; 126 } 97 127 else 98 { 99 /* FIXME quiet test! */ 100 register NPSZ npsz = "Win32k.sys succesfully initiated!\n\r"; 101 DosPutMessage(1, strlen(npsz)+1, npsz); 102 pRpOut->Status = data.Status; 103 } 128 npszErrMsg = "Ring-0 initiation failed. rc=%d\n"; 104 129 } 105 130 else 106 { 107 APIRET rc2 = rc; 108 NPSZ npsz; 109 /*0123456789012345678901234567890 1*/ 110 npszErrMsg = "DosDevIOCtl failed. rc= \n\r"; 111 112 npsz = &npszErrMsg[29]; 113 do 114 { 115 *npsz-- = (char)((rc2 % 10) + '0'); 116 rc2 = rc2/10; 117 } while (rc2 > 0); 118 } 119 131 npszErrMsg = "Ring-0 init: DosDevIOCtl failed. rc=%d\n"; 120 132 DosClose(hDev0); 121 133 } 122 134 else 123 npszErrMsg = " DosOpen failed.\n\r";135 npszErrMsg = "Ring-0 init: DosOpen failed. rc=%d\n"; 124 136 } 125 137 else 126 npszErrMsg = "ProbeKernel failed.\n\r"; 127 pRpOut->BPBArray = NULL; 128 pRpOut->CodeEnd = (USHORT)&CODE16END; 129 pRpOut->DataEnd = (USHORT)&DATA16END; 138 npszErrMsg = ""; /* ProbeKrnl do its own complaining, but we need something here to indicate failure. */ 139 140 /* 141 * Fill return data. 142 */ 143 pRpOut->CodeEnd = (USHORT)&CODE16_INITSTART; 144 pRpOut->DataEnd = (USHORT)&DATA16_INITSTART; 145 pRpOut->BPBArray= NULL; 130 146 pRpOut->Unit = 0; 131 147 148 /* 149 * Any errors?, if so complain! 150 */ 132 151 if (npszErrMsg) 133 152 { 134 DosPutMessage(1, strlen(npszErrMsg) + 1, npszErrMsg); 135 return pRpOut->rph.Status = STATUS_DONE | STERR | ERROR_I24_QUIET_INIT_FAIL; 136 } 137 153 printf16(npszErrMsg, rc); 154 pRpOut->Status = pRpOut->rph.Status = STATUS_DONE | STERR | ERROR_I24_QUIET_INIT_FAIL; 155 } 156 157 /* Init is completed. */ 158 fInitTime = FALSE; 159 160 /* successful return */ 138 161 return pRpOut->rph.Status; 139 162 } … … 142 165 143 166 /** 144 * R0 16-bit initiation function.167 * R0 16-bit initiation. 145 168 * This gets TKSSBase, thunks parameters and calls R0 32-bit initiation function. 146 169 * @returns Status word. 147 170 * @param pRp Generic IO Control request packet. 148 171 */ 149 USHORT NEAR R0Init16(PRP_GENIOCTL pRp)172 USHORT NEAR R0Init16(PRP_GENIOCTL pRp) 150 173 { 151 174 USHORT usRc = STATUS_DONE; … … 162 185 ULONG ulLinData; 163 186 187 /* 188 * Thunk the request packet and lock userdata. 189 */ 164 190 if (!DevHelp_VirtToLin(SELECTOROF(pRp->ParmPacket), OFFSETOF(pRp->ParmPacket), &ulLinParm) 165 191 && … … 175 201 (LIN)~0UL, SSToDS_16(&hLockData[0]), &cPages) 176 202 ) 177 { /* data and param is locked (do we need to lock the request packet too ?). */ 178 /* create new 32-bit packet */ 203 { 204 /* 205 * -data and param is locked (do we need to lock the request packet too ?).- 206 * Create new 32-bit init packet - Parameter pointer is thunked. 207 */ 179 208 RP32INIT rp32init; 180 209 … … 191 220 ((PD16R0INITDATA)pRp->DataPacket)->Status = usRc; 192 221 193 /* finished - unlock data and parm */ 222 /* 223 * finished - unlock data and parm 224 */ 194 225 DevHelp_VMUnLock((LIN)SSToDS_16(&hLockParm[0])); 195 226 DevHelp_VMUnLock((LIN)SSToDS_16(&hLockData[0])); … … 204 235 usRc |= ERROR_I24_GEN_FAILURE; 205 236 206 207 #if 0208 rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE | VMDHL_VERIFY,209 &DATA32START,210 (ULONG)(&end) - (ULONG)&DATA32START),211 (void*)-1,212 &lock[0],213 &cPages);214 215 rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_VERIFY,216 &CODE32START,217 (ULONG)(&CODE32END) - (ULONG)&CODE32START),218 (void*)-1,219 &lock[0],220 &cPages);221 #endif222 223 237 return usRc; 224 238 } … … 235 249 * After R0Init16 is called TKSSBase16 _is_ set. 236 250 * IMPORTANT! This function must _not_ be called after the initiation of the second device driver!!! 237 */ 238 USHORT NEAR initGetDosTableData(void) 251 * (Since this is init code not present after init...) 252 */ 253 USHORT NEAR initGetDosTableData(void) 239 254 { 240 255 APIRET rc; … … 244 259 if (TKSSBase16 != 0) 245 260 return NO_ERROR; 261 /* 262 _asm { 263 int 3; 264 } 265 */ 246 266 247 267 /* First we're to get the DosTable2 stuff. */ -
trunk/src/win32k/dev16/d16strat.c
r2898 r4164 1 /* $Id: d16strat.c,v 1. 8 2000-02-25 18:15:02bird Exp $1 /* $Id: d16strat.c,v 1.9 2000-09-02 21:07:56 bird Exp $ 2 2 * 3 3 * d16strat.c - 16-bit strategy routine, device headers, device_helper (ptr) … … 15 15 #define INCL_DOSERRORS 16 16 #define INCL_NOPMAPI 17 18 #define NO_WIN32K_LIB_FUNCTIONS 17 19 18 20 /******************************************************************************* … … 28 30 /* Note that C-library function are only allowed during init! */ 29 31 32 #include "devSegDf.h" 30 33 #include "dev1632.h" 31 34 #include "dev16.h" … … 119 122 * @param pRp Request packet. 120 123 */ 121 USHORT dev0GenIOCtl(PRP_GENIOCTL pRp)124 USHORT NEAR dev0GenIOCtl(PRP_GENIOCTL pRp) 122 125 { 123 126 USHORT rc; … … 135 138 { 136 139 rc = R0Init16(pRp); 137 fInitTime = FALSE;138 140 return rc; 139 141 } … … 218 220 * @param pRp Request packet. 219 221 */ 220 USHORT dev1GenIOCtl(PRP_GENIOCTL pRp)222 USHORT NEAR dev1GenIOCtl(PRP_GENIOCTL pRp) 221 223 { 222 224 if (pRp->Category == IOCTL_W32K_K32 || pRp->Category == IOCTL_W32K_ELF) -
trunk/src/win32k/dev16/probkrnl.c
r3411 r4164 1 /* $Id: probkrnl.c,v 1.2 0 2000-04-17 01:56:48bird Exp $1 /* $Id: probkrnl.c,v 1.21 2000-09-02 21:07:56 bird Exp $ 2 2 * 3 3 * Description: Autoprobes the os2krnl file and os2krnl[*].sym files. … … 14 14 * How this works: 15 15 * 1. parses the device-line parameters and collects some "SysInfo". 16 * 2. gets the kernel object table. (elf$) 17 * 3. finds the kernel image and scans it for a build number. 18 * 4. locates and scans the symbol-file(s) for the entrypoints which are wanted. 16 * 2. gets the kernel object table and kernel info like build no. (elf$) 17 * 3. if non-debug kernel the symbol database is scanned to get the syms 18 * 4. if Syms not found THEN locates and scans the symbol-file(s) for the 19 * entrypoints which are wanted. 19 20 * 5. the entry points are verified. (elf$) 20 21 * 6. finished. 21 22 * 22 * Copyright (c) 1998-2000 knut st. osmundsen 23 * Copyright (c) 1998-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.no) 23 24 * 24 25 * Project Odin Software License can be found in LICENSE.TXT … … 51 52 #define INCL_NOPMAPI 52 53 53 54 54 /******************************************************************************* 55 55 * Header Files * … … 61 61 #include <reqpkt.h> 62 62 63 #include "devSegDf.h" 64 #undef DATA16_INIT 65 #define DATA16_INIT 66 #undef CODE16_INIT 67 #define CODE16_INIT 63 68 #include "os2krnl.h" /* must be included before dev1632.h! */ 64 69 #include "sym.h" … … 68 73 #include "vprntf16.h" 69 74 #include "log.h" 70 75 #include "options.h" 76 #include "errors.h" 71 77 72 78 /******************************************************************************* … … 74 80 * Note: must be inited or else we'll get BSS segment * 75 81 *******************************************************************************/ 76 /* 77 * kernel data - !only valid during init! 78 */ 82 79 83 80 84 /* 81 85 * aImportTab defines the imported and overloaded OS/2 kernel functions. 82 * IMPORTANT: aImportTab has a sibling array in d32init.c, aulProc, which must 83 * match entry by entry. Adding/removing/shuffling aImportTab, aulProc 84 * has to be updated immediately! 85 */ 86 IMPORTKRNLSYM aImportTab[NBR_OF_KRNLIMPORTS] = 86 * IMPORTANT: aImportTab has two sibling arrays, one in d32init.c, aulProc, and 87 * the calltab.asm, which must match entry by entry. 88 * When adding/removing/shuffling items in aImportTab, aulProc and 89 * calltab.asm has to be updated immediately! 90 */ 91 IMPORTKRNLSYM DATA16_GLOBAL aImportTab[NBR_OF_KRNLIMPORTS] = 87 92 {/* iFound cchName offObject usSel fType */ 88 93 /* iObject achName ulAddress cProlog */ … … 101 106 {FALSE, -1, 11, "_VMGetOwner", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 12 */ 102 107 {FALSE, -1, 11, "g_tkExecPgm", -1, -1, -1, -1, EPT_PROC32}, /* 13 */ 103 {FALSE, -1, 11, "f_FuStrLenZ", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 14 */ 104 {FALSE, -1, 10, "f_FuStrLen", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 15 */ 105 {FALSE, -1, 8, "f_FuBuff", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 16 */ 106 {FALSE, -1, 16, "_VMObjHandleInfo", -1, -1, -1, -1, EPT_PROCIMPORT} /* 17 */ 107 /* {FALSE, -1, 11, "", -1, -1, -1, EPT_PROCIMPORT16} */ /* 16 */ 108 {FALSE, -1, 15, "_tkStartProcess", -1, -1, -1, -1, EPT_PROC32}, /* 14 */ 109 {FALSE, -1, 11, "f_FuStrLenZ", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 15 */ 110 {FALSE, -1, 10, "f_FuStrLen", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 16 */ 111 {FALSE, -1, 8, "f_FuBuff", -1, -1, -1, -1, EPT_PROCIMPORT16}, /* 17 */ 112 {FALSE, -1, 16, "_VMObjHandleInfo", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 18 */ 113 {FALSE, -1, 21, "_ldrASMpMTEFromHandle",-1, -1, -1, -1, EPT_PROCIMPORT32}, /* 19 */ 114 {FALSE, -1, 12, "_ldrOpenPath", -1, -1, -1, -1, EPT_PROC32}, /* 20 */ 115 {FALSE, -1, 12, "_LDRClearSem", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 21 */ 116 {FALSE, -1, 14, "_ldrFindModule", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 22 */ 117 {FALSE, -1, 17, "_KSEMRequestMutex", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 23 */ 118 {FALSE, -1, 17, "_KSEMReleaseMutex", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 24 */ 119 {FALSE, -1, 15, "_KSEMQueryMutex", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 25 */ 120 {FALSE, -1, 9, "_KSEMInit", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 26 */ 121 {FALSE, -1, 7, "_LdrSem", -1, -1, -1, -1, EPT_VARIMPORT32}, /* 27 */ 122 {FALSE, -1, 11, "_LDRLibPath", -1, -1, -1, -1, EPT_VARIMPORT32}, /* 28 */ 123 {FALSE, -1, 9, "_TKSuBuff", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 29 */ 124 {FALSE, -1, 9, "_TKFuBuff", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 30 */ 125 {FALSE, -1, 11, "_TKFuBufLen", -1, -1, -1, -1, EPT_PROCIMPORT32}, /* 31 */ 126 {FALSE, -1, 21, "_ldrValidateMteHandle",-1, -1, -1, -1, EPT_PROCIMPORT32}, /* 32 */ 127 {FALSE, -1, 8, "_pTCBCur", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 33 */ 128 {FALSE, -1, 9, "_pPTDACur", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 34 */ 129 {FALSE, -1, 10, "ptda_start", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 35 */ 130 {FALSE, -1, 12, "ptda_environ", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 36 */ 131 {FALSE, -1, 12, "ptda_ptdasem", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 37 */ 132 {FALSE, -1, 11, "ptda_module", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 38 */ 133 {FALSE, -1, 18, "ptda_pBeginLIBPATH", -1, -1, -1, -1, EPT_VARIMPORT16}, /* 39 */ 134 {FALSE, -1, 16, "_ldrpFileNameBuf", -1, -1, -1, -1, EPT_VARIMPORT32}, /* 40 */ 135 {FALSE, -1, 14, "SecPathFromSFN", -1, -1, -1, -1, EPT_PROCIMPORTNR32},/* 41 */ 136 108 137 }; 109 138 110 unsigned short int usBuild = 0; 111 unsigned short usVerMajor = 0; 112 unsigned short usVerMinor = 0; 113 unsigned char fchType = TYPE_UNI; /* TYPE_SMP, TYPE_UNI, TYPE_W4 */ 114 unsigned char fDebug = FALSE; 139 char DATA16_GLOBAL szUsrSym[50] = {0}; 140 115 141 116 142 … … 118 144 * privat data 119 145 */ 120 static int fQuiet = 0; 121 static char szUsrOS2Krnl[50] = {0}; 122 static char szOS2Krnl[] = {"c:\\os2krnl"}; 123 124 static char szUsrSym[50] = {0}; 125 static char * apszSym[] = 146 #if defined(DEBUGR3) 147 static char DATA16_INIT szUsrOS2Krnl[50] = {0}; 148 static char DATA16_INIT szOS2Krnl[] = {"c:\\os2krnl"}; 149 #endif 150 static char * DATA16_INIT apszSym[] = 126 151 { 127 152 {"c:\\os2krnl.sym"}, /* usual for debugkernel */ … … 144 169 145 170 /* Result from GetKernelInfo/ReadOS2Krnl. */ 146 static unsigned char cObjects = 0; 147 static POTE paKrnlOTEs = NULL; 148 171 static unsigned char DATA16_INIT cObjects = 0; 172 static POTE DATA16_INIT paKrnlOTEs = NULL; 173 174 175 /* 176 * 177 */ 178 static struct 179 { 180 short sErr; 181 const char *pszMsg; 182 } DATA16_INIT aErrorMsgs[] = 183 { 184 {ERROR_PROB_KRNL_OPEN_FAILED, "Krnl: Failed to open kernel file."}, 185 {ERROR_PROB_KRNL_SEEK_SIZE, "Krnl: Failed to seek to end to of file."}, 186 {ERROR_PROB_KRNL_SEEK_FIRST, "Krnl: Failed to start of file."}, 187 {ERROR_PROB_KRNL_READ_FIRST, "Krnl: Failed to read (first)."}, 188 {ERROR_PROB_KRNL_READ_NEXT, "Krnl: Failed to read."}, 189 {ERROR_PROB_KRNL_TAG_NOT_FOUND, "Krnl: Build level tag was not found."}, 190 {ERROR_PROB_KRNL_INV_SIGANTURE, "Krnl: Invalid build level signature."}, 191 {ERROR_PROB_KRNL_INV_BUILD_NBR, "Krnl: Invalid build level number."}, 192 {ERROR_PROB_KRNL_BUILD_VERSION, "Krnl: Invalid build level version."}, 193 {ERROR_PROB_KRNL_MZ_SEEK, "Krnl: Failed to seek to start of file. (MZ)"}, 194 {ERROR_PROB_KRNL_MZ_READ, "Krnl: Failed to read MZ header."}, 195 {ERROR_PROB_KRNL_NEOFF_INVALID, "Krnl: Invalid new-header offset in MZ header."}, 196 {ERROR_PROB_KRNL_NEOFF_SEEK, "Krnl: Failed to seek to new-header offset."}, 197 {ERROR_PROB_KRNL_LX_READ, "Krnl: Failed to read LX header."}, 198 {ERROR_PROB_KRNL_LX_SIGNATURE, "Krnl: Invalid LX header signature."}, 199 {ERROR_PROB_KRNL_OBJECT_CNT, "Krnl: Object count don't match the running kernel."}, 200 {ERROR_PROB_KRNL_OBJECT_CNR_10, "Krnl: Less than 10 objects - not a valid kernel file!"}, 201 {ERROR_PROB_KRNL_OTE_SEEK, "Krnl: Failed to seek to OTEs."}, 202 {ERROR_PROB_KRNL_OTE_READ, "Krnl: Failed to read OTEs."}, 203 {ERROR_PROB_KRNL_OTE_SIZE_MIS, "Krnl: Size of a OTE didn't match the running kernel."}, 204 205 /* 206 * ProbeSymFile error messages 207 */ 208 {ERROR_PROB_SYM_FILE_NOT_FOUND, "Sym: Symbol file was not found."}, 209 {ERROR_PROB_SYM_READERROR, "Sym: Read failed."}, 210 {ERROR_PROB_SYM_INVALID_MOD_NAME, "Sym: Invalid module name (not OS2KRNL)."}, 211 {ERROR_PROB_SYM_SEGS_NE_OBJS, "Sym: Number of segments don't match the object count of the kernel."}, 212 {ERROR_PROB_SYM_SEG_DEF_SEEK, "Sym: Failed to seek to a segment definition."}, 213 {ERROR_PROB_SYM_SEG_DEF_READ, "Sym: Failed to read a segment definition."}, 214 {ERROR_PROB_SYM_IMPORTS_NOTFOUND, "Sym: All the imports wasn't found."}, 215 {ERROR_PROB_SYM_V_PROC_NOT_FND, "Sym: Verify failed: Procedure not found."}, 216 {ERROR_PROB_SYM_V_OBJ_OR_ADDR, "Sym: Verify failed: Invalid object or address."}, 217 {ERROR_PROB_SYM_V_ADDRESS, "Sym: Verify failed: Invalid address."}, 218 {ERROR_PROB_SYM_V_PROLOG, "Sym: Verify failed: Invalid prolog."}, 219 {ERROR_PROB_SYM_V_NOT_IMPL, "Sym: Verify failed: Not implemented."}, 220 221 {ERROR_PROB_SYMDB_KRNL_NOT_FOUND, "SymDB: Kernel was not found."} 222 }; 223 224 /* 225 * Fake data for Ring-3 testing. 226 */ 227 #ifdef R3TST 228 USHORT DATA16_INIT usFakeVerMajor = 0; 229 USHORT DATA16_INIT usFakeVerMinor = 0; 230 #ifdef R3TST 231 static DATA16_INIT ach[11] = {0}; /* works around compiler/linker bug */ 232 #endif 233 #endif 149 234 150 235 … … 157 242 static int fseek(HFILE hfile, signed long off, int iOrg); 158 243 static unsigned long fsize(HFILE hFile); 159 static void puts(char *psz); 160 161 /* C-library replacements. */ 244 245 /* C-library replacements and additions. */ 162 246 static void kmemcpy(char *psz1, const char *psz2, int cch); 163 247 static char * kstrstr(const char *psz1, const char *psz2); … … 169 253 static int kargncpy(char *pszTarget, const char *pszArg, unsigned cchMaxlen); 170 254 255 static const char * GetErrorMsg(short sErr); 256 171 257 /* Workers */ 172 static int LookupKrnlEntry(unsigned uBuild, unsigned char chType, 173 unsigned char fchType, unsigned char cObjects); 258 static int LookupKrnlEntry(unsigned short usBuild, unsigned short fKernel, unsigned char cObjects); 174 259 static int VerifyPrologs(void); 175 260 static int ProbeSymFile(const char *pszFilename); … … 177 262 178 263 /* Ouput */ 179 static void ShowDecNumber(unsigned long ul);180 static void ShowHexNumber(unsigned long ul);181 264 static void ShowResult(int rc, int iSym); 182 265 … … 187 270 static int processFile(const char *pszFilename); 188 271 272 #if 0 /*ndef CODE16_INIT*/ 273 #pragma alloc_text(CODE16_INIT, fopen, fread, fseek, fsize) 274 #pragma alloc_text(CODE16_INIT, kmemcpy, kstrstr, kstrcmp, kstrncmp, kstrnicmp, kstrlen, kstrcpy, kargncpy) 275 #pragma alloc_text(CODE16_INIT, GetErrorMsg) 276 #pragma alloc_text(CODE16_INIT, LookupKrnlEntry, VerifyPrologs, ProbeSymFile, GetKernelInfo) 277 #pragma alloc_text(CODE16_INIT, ShowResult) 278 #pragma alloc_text(CODE16_INIT, VerifyKernelVer, ReadOS2Krnl, ReadOS2Krnl2, processFile) 279 #endif 189 280 190 281 … … 277 368 278 369 /** 279 * puts lookalike280 */281 static void puts(char * psz)282 {283 DosPutMessage(0, kstrlen(psz), psz);284 }285 286 287 /**288 370 * kmemcpy - memory copy - slow! 289 371 * @param psz1 target … … 421 503 while (*pszSource != '\0') 422 504 *psz++ = *pszSource++; 423 505 *psz = '\0'; 424 506 return pszTarget; 425 507 } … … 478 560 479 561 return i; 562 } 563 564 565 /** 566 * Get the message text for an error message. 567 * @returns Pointer to error text. NULL if not found. 568 * @param sErr Error code id. 569 * @status completely implemented. 570 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 571 */ 572 static const char * GetErrorMsg(short sErr) 573 { 574 int i; 575 for (i = 0; i < sizeof(aErrorMsgs) / sizeof(aErrorMsgs[0]); i++) 576 { 577 if (aErrorMsgs[i].sErr == sErr) 578 return aErrorMsgs[i].pszMsg; 579 } 580 return NULL; 480 581 } 481 582 … … 493 594 * 1 if not found. 494 595 * Error code on error. 495 * @param uBuild Build level. 496 * @param fchBldType 'A' all strict 497 * 'H' half strict 498 * 'R' retail 499 * @param fchType TYPE_SMP, TYPE_UNI, TYPE_W4 596 * @param usBuild Build level. 597 * @param fKernel Kernel (type) flags. (KF_* from options.h) 500 598 * @param cObjects Count of object in the running kernel. 501 599 * @sketch Loop thru the table. … … 503 601 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 504 602 */ 505 static int LookupKrnlEntry(unsigned uBuild, unsigned char fchBldType, unsigned char fchType, unsigned char cObjects)603 static int LookupKrnlEntry(unsigned short usBuild, unsigned short fKernel, unsigned char cObjects) 506 604 { 507 605 int i; … … 512 610 for (i = 0; aKrnlSymDB[i].usBuild != 0; i++) 513 611 { 514 if (aKrnlSymDB[i].usBuild == uBuild 515 && aKrnlSymDB[i].fchBldType == fchBldType 516 && aKrnlSymDB[i].fchType == fchType 517 && aKrnlSymDB[i].cObjects == cObjects) 612 if ( aKrnlSymDB[i].usBuild == usBuild 613 && aKrnlSymDB[i].fKernel == fKernel 614 && aKrnlSymDB[i].cObjects == cObjects) 518 615 { /* found matching entry! */ 519 616 int j; … … 533 630 + pEntry->aSyms[j].offObject; 534 631 aImportTab[j].usSel = paKrnlOTEs[pEntry->aSyms[j].iObject].ote_sel; 535 aImportTab[j].fFound = TRUE;632 aImportTab[j].fFound = (char)((aImportTab[j].offObject != 0xFFFFFFFFUL) ? 1 : 0); 536 633 dprintf((" %-3d addr=0x%08lx off=0x%08lx %s\n", 537 634 j, aImportTab[j].ulAddress, aImportTab[j].offObject, … … 550 647 551 648 /* not found */ 552 return 1;649 return ERROR_PROB_SYMDB_KRNL_NOT_FOUND; 553 650 } 554 651 #endif /* !EXTRACT */ 652 555 653 556 654 /** … … 574 672 rc = DosDevIOCtl("", "", D16_IOCTL_VERIFYIMPORTTAB, D16_IOCTL_CAT, hDev0); 575 673 DosClose(hDev0); 674 if (rc != NO_ERROR) 675 { 676 register APIRET rc2 = rc & STECODE; 677 if (rc2 >= ERROR_D32_VERIFYIMPORTTAB_FIRST && rc2 <= ERROR_D32_VERIFYIMPORTTAB_LAST) 678 rc = rc2 + ERROR_PROB_SYM_VERIFY_FIRST - ERROR_D32_VERIFYIMPORTTAB_FIRST; 679 } 680 } 681 else 682 { 683 dprintf(("DosOpen Failed with rc=%d\n", rc)); 684 DosSleep(2000); 576 685 } 577 686 … … 616 725 { 617 726 dprintf(("Error opening file %s\n", pszFilename)); 618 return -50;727 return ERROR_PROB_SYM_FILE_NOT_FOUND; 619 728 } 620 729 dprintf(("\nSuccessfully opened symbolfile: %s\n", pszFilename)); … … 629 738 { /* oops! read failed, close file and fail. */ 630 739 fclose(hSym); 631 return -51;740 return ERROR_PROB_SYM_READERROR; 632 741 } 633 742 achBuffer[0] = MapDef.achModName[0]; … … 646 755 dprintf(("Modulename verify failed\n")); 647 756 fclose(hSym); 648 return -51;757 return ERROR_PROB_SYM_INVALID_MOD_NAME; 649 758 } 650 759 … … 658 767 dprintf(("Segment No. verify failed\n")); 659 768 fclose(hSym); 660 return -52;769 return ERROR_PROB_SYM_SEGS_NE_OBJS; 661 770 } 662 771 #endif /* !EXTRACT */ … … 701 810 { /* Failed to seek to the segment definition, fail! */ 702 811 fclose(hSym); 703 return -53;812 return ERROR_PROB_SYM_SEG_DEF_SEEK; 704 813 } 705 814 rc = fread(&SegDef, sizeof(SEGDEF), 1, hSym); … … 707 816 { /* Failed to read the segment definition, fail! */ 708 817 fclose(hSym); 709 return -53;818 return ERROR_PROB_SYM_SEG_DEF_READ; 710 819 } 711 820 … … 731 840 for (iSym = 0; iSym < SegDef.cSymbols && cLeftToFind; iSym++) 732 841 { 842 IMPORTKRNLSYM * pImport; 733 843 unsigned cchName; 844 734 845 /* 735 846 * Fileoffset of the current symbol. … … 784 895 * Search proctable. 785 896 */ 786 for (i = 0 ; i < NBR_OF_KRNLIMPORTS; i++)897 for (i = 0, pImport = &aImportTab[0]; i < NBR_OF_KRNLIMPORTS; i++, pImport++) 787 898 { 788 if (!aImportTab[i].fFound /* Not allready found */ 789 && (aImportTab[i].fType & EPT_BIT_MASK) == fSegEPTBitType /* Equal bittype */ 790 && (fCode || (aImportTab[i].fType & EPT_VARIMPORT)) /* Don't look for code in a data segment and vice versa */ 791 && aImportTab[i].cchName == cchName /* Equal name length */ 792 && kstrncmp(aImportTab[i].achName, achBuffer, cchName) == 0 /* Equal name */ 899 if (!pImport->fFound /* Not allready found */ 900 && (pImport->fType & EPT_VARIMPORT ? !fCode : fCode) /* Don't look for code in a data segment */ 901 && pImport->cchName == cchName /* Equal name length */ 902 && kstrncmp(pImport->achName, achBuffer, cchName) == 0 /* Equal name */ 793 903 ) 794 904 { /* Symbol was found */ 795 aImportTab[i].offObject = (SegDef.bFlags & 0x01 ? SymDef32.wSymVal : SymDef16.wSymVal);796 aImportTab[i].ulAddress = aImportTab[i].offObject + paKrnlOTEs[iSeg].ote_base;797 aImportTab[i].iObject = (unsigned char)iSeg;798 aImportTab[i].usSel = paKrnlOTEs[iSeg].ote_sel;905 pImport->offObject = (SegDef.bFlags & 0x01 ? SymDef32.wSymVal : SymDef16.wSymVal); 906 pImport->ulAddress = pImport->offObject + paKrnlOTEs[iSeg].ote_base; 907 pImport->iObject = (unsigned char)iSeg; 908 pImport->usSel = paKrnlOTEs[iSeg].ote_sel; 799 909 dprintf(("debug: base=%lx, size=%lx iSeg=%d\n", paKrnlOTEs[iSeg].ote_base, paKrnlOTEs[iSeg].ote_size, iSeg)); 800 910 801 911 /* Paranoia test! */ 802 912 #ifndef EXTRACT 803 if ( aImportTab[i].offObject < paKrnlOTEs[iSeg].ote_size)913 if (pImport->offObject < paKrnlOTEs[iSeg].ote_size) 804 914 { 805 aImportTab[i].fFound = TRUE;915 pImport->fFound = TRUE; 806 916 cLeftToFind--; 807 917 dprintf(("Found: %s at off 0x%lx addr 0x%lx, sel=0x%x\n", 808 aImportTab[i].achName, aImportTab[i].offObject,809 aImportTab[i].ulAddress, aImportTab[i].usSel));918 pImport->achName, pImport->offObject, 919 pImport->ulAddress, pImport->usSel)); 810 920 } 811 921 else/* test failed, continue on next symbol*/ 812 dprintf(("Error: Paranoia test failed for %s\n", aImportTab[i].achName));;922 dprintf(("Error: Paranoia test failed for %s\n", pImport->achName));; 813 923 #else 814 aImportTab[i].fFound = TRUE;924 pImport->fFound = TRUE; 815 925 cLeftToFind--; 816 926 #endif /* !EXTRACT */ … … 832 942 * If not all procedures were found fail. 833 943 */ 834 if (cLeftToFind != 0) 835 return -57; 944 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 945 if (!aImportTab[i].fFound && !(aImportTab[i].fType & EPT_NOT_REQ)) 946 return ERROR_PROB_SYM_IMPORTS_NOTFOUND; 836 947 837 948 /* … … 843 954 844 955 /** 845 * Gets the os/2 kernel OTE's (object table entries). 846 * @returns 0 on success. Not 0 on error. 956 * Get kernelinformation (OTEs (object table entries), build, type, debug...) 957 * @returns 0 on success. 958 * options.ulBuild, fchType, fDebug, cObjects and paKrnlOTEs is set on successful return. 959 * Not 0 on error. 847 960 */ 848 961 static int GetKernelInfo(void) 849 962 { 850 #if !defined(DEBUGR3) && !defined(EXTRACT) /* IOCtlnot available after inittime! */851 static KRNLINFO KrnlInfo = {0};963 #if !defined(DEBUGR3) && !defined(EXTRACT) /* This IOCtl is not available after inittime! */ 964 static KRNLINFO DATA16_INIT KrnlInfo = {0}; 852 965 APIRET rc; 853 966 HFILE hDev0 = 0; 854 967 USHORT usAction = 0; 855 968 969 /* 970 * Issue an IOCtl to elf$ to query kernel information. 971 */ 856 972 rc = DosOpen("\\dev\\elf$", &hDev0, &usAction, 0UL, FILE_NORMAL, 857 973 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, … … 863 979 if (rc == NO_ERROR) 864 980 { 865 int i;866 867 /* Set the exported parameters */868 usBuild = KrnlInfo.usBuild;869 fchType = KrnlInfo.fchType;870 fDebug = KrnlInfo.fDebug;871 cObjects = KrnlInfo.cObjects;872 paKrnlOTEs = &KrnlInfo.aObjects[0];873 981 #ifdef DEBUG 874 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 982 unsigned i; 983 #endif 984 985 /* 986 * Set the exported parameters 987 */ 988 options.ulBuild = KrnlInfo.ulBuild; 989 options.fKernel = KrnlInfo.fKernel; 990 cObjects = KrnlInfo.cObjects; 991 paKrnlOTEs = &KrnlInfo.aObjects[0]; 992 993 /* 994 * If debugging probkrnl dump kernel OTEs. 995 */ 996 #ifdef DEBUG 997 dprintf(("debug: kernel OTE:\n")); 998 for (i = 0; i < cObjects; i++) 875 999 dprintf(("debug: no.%2d base=%lx size=%lx sel=%x\n", 876 1000 i, … … 879 1003 paKrnlOTEs[i].ote_sel)); 880 1004 #endif 881 882 1005 } 883 1006 DosClose(hDev0); … … 885 1008 886 1009 if (rc != NO_ERROR) 887 printf16("Failed to get kernel OTEs \r\n");1010 printf16("Failed to get kernel OTEs. rc=%d\n", rc); 888 1011 889 1012 return rc; … … 899 1022 { 900 1023 rc = ReadOS2Krnl(szUsrOS2Krnl); 901 if (rc != 0)1024 if (rc != NO_ERROR) 902 1025 { 903 p uts("Warning: Invalid kernel file specified. Tries defaults.\n\r");1026 printf16("Warning: Invalid kernel file specified. Tries defaults.\n"); 904 1027 szUsrOS2Krnl[0] = '\0'; 905 1028 rc = ReadOS2Krnl(szOS2Krnl); … … 918 1041 /** 919 1042 * Shows result of kernelprobing if not quiet or on error. 920 * @param rcReturn code.921 * @param iSymindex of .sym-file into static struct.1043 * @param rc Return code. 1044 * @param iSym index of .sym-file into static struct. 922 1045 */ 923 1046 #ifndef EXTRACT … … 929 1052 * Complain even if quiet on error 930 1053 */ 931 if (! fQuiet || rc != 0)1054 if (!options.fQuiet || rc != NO_ERROR) 932 1055 { 933 1056 printf16("Win32k - Odin32 support driver.\n"); … … 936 1059 * kernel stuff 937 1060 */ 938 if (rc <= -50 || rc == 0)1061 if (rc == NO_ERROR || rc > ERROR_PROB_KRNL_LAST) 939 1062 { 940 1063 #ifdef DEBUGR3 941 1064 printf16(" Found kernel: %s\n", szOS2Krnl); 942 1065 #endif 943 printf16(" Build: %d - v%d.%d\n", 944 usBuild, usVerMajor, usVerMinor); 945 } 1066 printf16(" Build: %ld - v%d.%d\n", 1067 options.ulBuild, options.usVerMajor, options.usVerMinor); 1068 } 1069 else if (rc >= ERROR_PROB_KRNL_FIRST) 1070 printf16(" Kernel probing failed with rc=%d.\n", rc); 946 1071 else 947 printf16(" Kernel probing failed with rc=%d.\n", rc);1072 printf16(" Failed before probing kernel.\n"); 948 1073 949 1074 /* 950 1075 * symbol-file 951 1076 */ 952 if (rc == 0)1077 if (rc == NO_ERROR || (rc > ERROR_PROB_SYM_LAST && (szUsrSym[0] != '\0' || apszSym[iSym] != NULL))) 953 1078 printf16(" Found symbolfile: %s\n", 954 1079 szUsrSym[0] == '\0' ? apszSym[iSym] : szUsrSym); 1080 else if (rc >= ERROR_PROB_SYM_FIRST) 1081 printf16(" Failed to find symbolfile!\n"); 955 1082 else 956 printf16(" Failed to find symbolfile! rc=%d\n", rc);1083 printf16(" Failed before searching for symbolfile.\n"); 957 1084 958 1085 /* 959 1086 * function listing 960 1087 */ 961 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 962 { 963 printf16(" %-20s at ",aImportTab[i].achName); 964 if (aImportTab[i].fFound) 965 printf16("0x%08lx%s", aImportTab[i].ulAddress, (i % 2) == 0 ? "" : "\n"); 966 else 967 printf16("failed!%s", (i % 2) == 0 ? "" : "\n"); 968 } 969 if (i % 2) printf16("\n"); 1088 if (options.fLogging || rc != NO_ERROR) 1089 { 1090 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 1091 { 1092 printf16(" %-21s at ", aImportTab[i].achName); 1093 if (aImportTab[i].fFound) 1094 printf16("0x%08lx%s", aImportTab[i].ulAddress, (i % 2) == 0 ? "" : "\n"); 1095 else 1096 printf16("not found!%s", (i % 2) == 0 ? "" : "\n"); 1097 } 1098 if (i % 2) printf16("\n"); 1099 } 1100 1101 /* 1102 * Display error code. 1103 */ 1104 if (rc != NO_ERROR) 1105 { 1106 const char *psz = GetErrorMsg(rc); 1107 printf16("ProbeKernel failed with rc=%d.\n", rc); 1108 if (psz) printf16("%s\n", psz); 1109 } 970 1110 } 971 1111 } … … 1003 1143 switch (pReqPack->InitArgs[i]) 1004 1144 { 1145 #if defined(DEBUGR3) 1005 1146 case 'k': 1006 1147 case 'K': /* Kernel file */ … … 1008 1149 i += kargncpy(szUsrOS2Krnl, &pReqPack->InitArgs[i], sizeof(szUsrOS2Krnl)); 1009 1150 break; 1151 #endif 1010 1152 1011 1153 case 'n': 1012 1154 case 'N': /* NoLoader */ 1155 options.fNoLoader = TRUE; 1013 1156 return 0; 1014 1157 1015 1158 case 'q': 1016 1159 case 'Q': /* Quiet */ 1017 fQuiet = 1;1160 options.fQuiet = TRUE; 1018 1161 break; 1019 1162 … … 1021 1164 case 'S': /* Symbol file */ 1022 1165 i++; 1023 if (pReqPack->InitArgs[i] == 'Y' || pReqPack->InitArgs[i] == 'y') 1166 if ( pReqPack->InitArgs[i] != 'c' && pReqPack->InitArgs[i] != 'C' 1167 && pReqPack->InitArgs[i] != 'm' && pReqPack->InitArgs[i] != 'M' 1168 ) /* -script and -smp is ignored */ 1024 1169 i += kargncpy(szUsrSym, &pReqPack->InitArgs[i], sizeof(szUsrSym)); 1025 1170 break; … … 1027 1172 case 'v': 1028 1173 case 'V': /* Verbose */ 1029 fQuiet = 0;1174 options.fQuiet = FALSE; 1030 1175 break; 1031 1176 } … … 1044 1189 pGIS = MAKEPGINFOSEG(selGIS); 1045 1190 usBootDrive = pGIS->bootdrive; 1046 usVerMajor = pGIS->uchMajorVersion; 1047 usVerMinor = pGIS->uchMinorVersion; 1191 #ifndef R3TST 1192 options.usVerMajor = pGIS->uchMajorVersion; 1193 options.usVerMinor = pGIS->uchMinorVersion; 1194 #else 1195 if (usFakeVerMajor == 0) 1196 { 1197 usFakeVerMajor = pGIS->uchMajorVersion; 1198 usFakeVerMinor = pGIS->uchMinorVersion; 1199 } 1200 options.usVerMajor = usFakeVerMajor; 1201 options.usVerMinor = usFakeVerMinor; 1202 #endif 1048 1203 dprintf(("BootDrive: %d\n", usBootDrive)); 1049 1204 1050 1205 /* set driveletter in constants strings */ 1051 1206 usBootDrive = (char)usBootDrive + (char)'a' - 1; 1207 #if defined(DEBUGR3) 1052 1208 szOS2Krnl[0] = (char)usBootDrive; 1209 #endif 1053 1210 for (i = 0; apszSym[i] != NULL; i++) 1054 1211 apszSym[i][0] = (char)usBootDrive; … … 1058 1215 /*-----------------*/ 1059 1216 rc = GetKernelInfo(); 1060 if (rc != NO_ERROR)1061 return rc;1062 1217 1063 1218 /*--------------*/ … … 1072 1227 if (rc) 1073 1228 { 1074 p uts("Warning: Invalid symbol file specified. Tries defaults.\n\r");1229 printf16("Warning: Invalid symbol file specified. Tries defaults.\n"); 1075 1230 szUsrSym[0] = '\0'; 1076 1231 } 1077 1232 } 1078 if (rc != 0) /* if user sym failed or don't exists. */1233 if (rc != NO_ERROR) /* if user sym failed or don't exists. */ 1079 1234 { 1080 1235 /* 1081 1236 * Check database - only if not a debug kernel! 1082 1237 * You usually have a .sym-file when using a debug kernel. 1083 * (Currently I am not able to distinguish between half and all strict kernels...) 1238 * (This is because I am unable to distinguish between half and 1239 * all strict kernels...) 1084 1240 */ 1085 if (fDebug || 1086 (rc = LookupKrnlEntry((unsigned short)usBuild, 'R', fchType, cObjects)) != 0 1241 if ((options.fKernel & KF_DEBUG) || 1242 (rc = LookupKrnlEntry((unsigned short)options.ulBuild, 1243 (unsigned short)options.fKernel, 1244 cObjects) 1245 ) != NO_ERROR 1087 1246 ) 1088 1247 { 1248 #if 1 /* ndef R3TST */ 1249 APIRET rc2; 1089 1250 /* search on disk */ 1090 1251 i = 0; 1091 while (apszSym[i] != NULL && (rc = ProbeSymFile(apszSym[i])) != 0) 1252 while (apszSym[i] != NULL 1253 && (rc2 = ProbeSymFile(apszSym[i])) != NO_ERROR 1254 ) 1255 { 1092 1256 i++; 1257 if (rc2 >= ERROR_PROB_SYM_VERIFY_FIRST) 1258 rc = rc2; 1259 } 1260 if (rc == 1 || rc2 == NO_ERROR) 1261 rc = rc2; 1262 #endif 1093 1263 } 1094 1264 } … … 1099 1269 ShowResult(rc, i); 1100 1270 1271 /* Copy the symbol file name to szUsrSym. */ 1272 if (szUsrSym[0] == '\0' && apszSym[i] != NULL) 1273 kstrcpy(szUsrSym, apszSym[i]); 1274 1101 1275 return rc; 1102 1276 } … … 1113 1287 int VerMinor, VerMajor; 1114 1288 1115 VerMajor = usBuild < 20000 ? 20 : 30/*?*/;1116 VerMinor = usBuild < 6600 ? 10 : usBuild < 8000 ? 11 : usBuild < 9000 ? 30 :1117 usBuild < 10000 ? 40 : usBuild < 15000 ? 45 : 50;1118 1119 return VerMajor - (int) usVerMajor | VerMinor - (int)usVerMinor;1289 VerMajor = options.ulBuild < 20000 ? 20 : 30/*?*/; 1290 VerMinor = options.ulBuild < 6600 ? 10 : options.ulBuild < 8000 ? 11 : options.ulBuild < 9000 ? 30 : 1291 options.ulBuild < 10000 ? 40 : options.ulBuild < 15000 ? 45 : 50; 1292 1293 return VerMajor - (int)options.usVerMajor | VerMinor - (int)options.usVerMinor; 1120 1294 } 1121 1295 … … 1123 1297 /** 1124 1298 * Reads and verifies OS/2 kernel. 1125 * @returns 0 on success, not 0 on failure. 1126 * @param filename Filename of the OS/2 kernel. 1127 * @result usBuild is set. 1299 * @returns 0 on success. 1300 * One of the ERROR_PROB_KRNL_* defines on error. 1301 * @param pszFilename Filename of the OS/2 kernel. 1302 * @result options.ulBuild is set. 1128 1303 * @remark This step will be eliminated by searching thru the DOSGROUP datasegment 1129 1304 * in the kernel memory. This segment have a string "Internal revision 9.034[smp|uni]" … … 1140 1315 if (hKrnl != 0) 1141 1316 { 1317 /* 1318 * Get size of kernel file. 1319 */ 1142 1320 cbKrnl = fsize(hKrnl); 1143 1321 if (!fseek(hKrnl, 0, SEEK_SET)) 1322 { 1323 /* 1324 * Call worker with filehandle and size. 1325 */ 1144 1326 rc = ReadOS2Krnl2(hKrnl, cbKrnl); 1327 } 1145 1328 else 1146 rc = -2;1329 rc = ERROR_PROB_KRNL_SEEK_SIZE; 1147 1330 fclose(hKrnl); 1148 1331 } … … 1150 1333 { 1151 1334 dprintf(("Could not open file\n")); 1152 rc = -1;1335 rc = ERROR_PROB_KRNL_OPEN_FAILED; 1153 1336 } 1154 1337 return rc; … … 1159 1342 * Worker function for ReadOS2Krnl 1160 1343 * @returns 0 on success. 1161 * errorcodes on failure. (-1 >= rc >= -14)1344 * One of the ERROR_PROB_KRNL_* defines on error. 1162 1345 * @param hKrnl Handle to the kernel file. 1163 1346 * @param cbKrnl Size of the kernel file. … … 1167 1350 { 1168 1351 #if defined(DEBUGR3) || !defined(EXTRACT) 1169 static KRNLINFO KrnlInfo = {0};1352 static KRNLINFO DATA16_INIT KrnlInfo = {0}; 1170 1353 #endif 1171 1354 int i, j; … … 1176 1359 1177 1360 1178 /* find bldlevel string - "@#IBM:14.020#@ IBM OS/2 Kernel - 14.020F" */ 1361 /* 1362 * Find bldlevel string - for example: "@#IBM:14.020#@ IBM OS/2 Kernel - 14.020F" 1363 * Searching the entire file lineary from the start. 1364 */ 1179 1365 if (fseek(hKrnl, 0, SEEK_SET)) 1180 return -2;1366 return ERROR_PROB_KRNL_SEEK_FIRST; 1181 1367 1182 1368 if (!fread(&achBuffer[KERNEL_ID_STRING_LENGTH], 1, KERNEL_READ_SIZE, hKrnl)) 1183 return -3;1369 return ERROR_PROB_KRNL_READ_FIRST; 1184 1370 1185 1371 i = KERNEL_ID_STRING_LENGTH; … … 1191 1377 kmemcpy(achBuffer, &achBuffer[KERNEL_READ_SIZE], KERNEL_ID_STRING_LENGTH); 1192 1378 if (!fread(&achBuffer[KERNEL_ID_STRING_LENGTH], 1, cbKrnl > KERNEL_READ_SIZE ? KERNEL_READ_SIZE : (int)cbKrnl, hKrnl)) 1193 return -3;1379 return ERROR_PROB_KRNL_READ_NEXT; 1194 1380 1195 1381 i = 0; … … 1204 1390 } 1205 1391 1392 /* found it? */ 1206 1393 if (cbKrnl == 0) 1207 1394 { 1208 1395 fclose(hKrnl); 1209 return -4; 1210 } 1396 return ERROR_PROB_KRNL_TAG_NOT_FOUND; 1397 } 1398 1399 1400 /* 1401 * We've found the @#IBM: tag. So now we'll try read it. 1402 */ 1211 1403 1212 1404 /* displacement */ … … 1217 1409 /* verify signature */ 1218 1410 if (kstrncmp(&achBuffer[i+10+j], "#@ IBM OS/2 Kernel", 19) != 0) 1219 return -5; 1220 1221 /* read usBuild */ 1222 usBuild = (char)(achBuffer[i+6] - '0') * 1000; 1411 return ERROR_PROB_KRNL_INV_SIGANTURE; 1412 1413 /* 1414 * read options.ulBuild 1415 */ 1416 options.ulBuild = (char)(achBuffer[i+6] - '0') * 1000; 1223 1417 if (achBuffer[i+7] != '.') 1224 1418 { 1225 1419 /* this code is for Warp5 */ 1226 usBuild *= 10;1227 usBuild += (char)(achBuffer[i+7] - '0') * 1000;1420 options.ulBuild *= 10; 1421 options.ulBuild += (char)(achBuffer[i+7] - '0') * 1000; 1228 1422 i++; 1229 1423 j--; 1230 1424 if (achBuffer[i+7] != '.') 1231 1425 { 1232 usBuild = usBuild *10;1233 usBuild = usBuild + (unsigned short)(achBuffer[i+7] - '0') * 1000;1426 options.ulBuild *= 10; 1427 options.ulBuild += (unsigned long)(achBuffer[i+7] - '0') * 1000; 1234 1428 i++; 1235 1429 j--; … … 1239 1433 if (j == 0) 1240 1434 { 1241 usBuild += (achBuffer[i+ 8] - '0') * 10;1242 usBuild += (achBuffer[i+ 9] - '0') * 1;1435 options.ulBuild += (achBuffer[i+ 8] - '0') * 10; 1436 options.ulBuild += (achBuffer[i+ 9] - '0') * 1; 1243 1437 } 1244 1438 else 1245 1439 { 1246 1440 if (j == 3) 1247 return -9; 1248 usBuild += (achBuffer[i+ 8] - '0') * 100; 1249 usBuild += (achBuffer[i+ 9] - '0') * 10; 1250 usBuild += (achBuffer[i+10] - '0'); 1251 } 1252 1441 return ERROR_PROB_KRNL_INV_BUILD_NBR; 1442 options.ulBuild += (achBuffer[i+ 8] - '0') * 100; 1443 options.ulBuild += (achBuffer[i+ 9] - '0') * 10; 1444 options.ulBuild += (achBuffer[i+10] - '0'); 1445 } 1446 1447 /* 1448 * We've read the build number. Let's check that it matches the OS/2 1449 * version reported by DosGetInfoSeg. 1450 */ 1253 1451 if (VerifyKernelVer()) 1254 return -9;1255 dprintf((" usBuild: %d\n", usBuild));1452 return ERROR_PROB_KRNL_BUILD_VERSION; 1453 dprintf(("options.ulBuild: %d\n", options.ulBuild)); 1256 1454 1257 1455 /* get segment number */ 1258 1456 /* read-MZheader */ 1259 1457 if (fseek(hKrnl,0,SEEK_SET)) 1260 return -2;1458 return ERROR_PROB_KRNL_MZ_SEEK; 1261 1459 1262 1460 if (!fread(achBuffer, 1, 0x40, hKrnl)) 1263 return -3;1461 return ERROR_PROB_KRNL_MZ_READ; 1264 1462 1265 1463 offLXHdr = *(unsigned long int *)&achBuffer[0x3c]; 1266 1464 1267 1465 if (offLXHdr > 0x2000 && offLXHdr < 0x80) /* just to detect garbage */ 1268 return -6;1466 return ERROR_PROB_KRNL_NEOFF_INVALID; 1269 1467 1270 1468 if (fseek(hKrnl, offLXHdr, SEEK_SET)) 1271 return -2;1469 return ERROR_PROB_KRNL_NEOFF_SEEK; 1272 1470 1273 1471 if (!fread(achBuffer, 1, sizeof(struct e32_exe), hKrnl)) 1274 return -3;1472 return ERROR_PROB_KRNL_LX_READ; 1275 1473 1276 1474 /* check LX-magic */ 1277 1475 if (achBuffer[0] != 'L' || achBuffer[1] != 'X') 1278 return -7;1476 return ERROR_PROB_KRNL_LX_SIGNATURE; 1279 1477 1280 1478 #if !defined(DEBUGR3) && !defined(EXTRACT) … … 1282 1480 pLXHdr = (struct e32_exe *)achBuffer; 1283 1481 if ((UCHAR)pLXHdr->e32_objcnt != cObjects) 1284 return -8;1482 return ERROR_PROB_KRNL_OBJECT_CNT; 1285 1483 1286 1484 if (pLXHdr->e32_objcnt < 10) 1287 return -9;1288 1289 /* check objects (sizes and flags(?))*/1485 return ERROR_PROB_KRNL_OBJECT_CNR_10; 1486 1487 /* check objects sizes. */ 1290 1488 if (!fseek(hKrnl, (LONG)offLXHdr + (LONG)pLXHdr->e32_objtab, SEEK_SET)) 1291 1489 { … … 1294 1492 { 1295 1493 if (!fread(achBuffer, 1, sizeof(OTE), hKrnl)) 1296 return -11;1494 return ERROR_PROB_KRNL_OTE_READ; 1297 1495 if (pObj->o32_size < paKrnlOTEs[i].ote_size) 1298 return -12; 1299 1300 #if 0 /* don't work! */ 1301 if ((pObj->o32_flags & 0xffffUL) != (paKrnlOTEs[i].ote_flags & 0xffffUL)) 1302 return -14; 1303 #endif 1496 return ERROR_PROB_KRNL_OTE_SIZE_MIS; 1304 1497 } 1305 1498 } 1306 1499 else 1307 return -10;1500 return ERROR_PROB_KRNL_OTE_SEEK; 1308 1501 #else 1309 1502 /* Since we can't get the OTEs from the kernel when debugging in RING-3, … … 1322 1515 for (i = 0; i < (int)cObjects; i++) 1323 1516 if (!fread(&paKrnlOTEs[i], 1, sizeof(struct o32_obj), hKrnl)) 1324 return -11;1517 return ERROR_PROB_KRNL_OTE_READ; 1325 1518 } 1326 1519 else 1327 return -10;1520 return ERROR_PROB_KRNL_OTE_SEEK; 1328 1521 #endif 1329 1522 1330 return 0;1523 return NO_ERROR; 1331 1524 } 1332 1525 … … 1370 1563 * Where: n - are the build number 4 or 5 digits. 1371 1564 * t - kernel type. R = retail, H = half strict, A = all strict. 1372 * m - UNI or SMP. U = UNI processor kernel. S = SMP processor kernel. 1565 * m - UNI or SMP. U = UNI processor kernel. S = SMP processor kernel. 4 = Warp 4 FP13+ 1373 1566 * @returns NO_ERROR on success. Untracable error code on error. 1374 1567 * @param pszFilename Pointer to read only filename of the .sym-file. … … 1381 1574 APIRET rc; 1382 1575 int cch = kstrlen(pszFilename); 1576 1577 DosWrite(2, (char*)pszFilename, cch, &rc); 1578 DosWrite(2, "\r\n", 2, &rc); 1383 1579 1384 1580 /* Filename check */ … … 1397 1593 } 1398 1594 1399 /** @remark1400 * All a/h-strict files are currently ignored.1401 * When a debug kernel is used we'll have to use the1402 * .sym-file for it. This is so because I can't distinguish1403 * between a all-strick and a half-strick kernel (yet).1404 */1405 if (pszFilename[cch-6] != 'R')1406 return 0;1407 1408 1595 /* 1409 1596 * Probe kernelfile … … 1419 1606 int i; 1420 1607 1608 /** @remark 1609 * Currently information for retail kernels are usable, but we'll 1610 * generate it for the debug kernels too, but this information 1611 * is enclaved within an "#ifdef ALLKERNELS ... #endif". 1612 */ 1613 if (pszFilename[cch-6] != 'R') 1614 printf16("#ifdef ALLKERNELS\n"); 1615 1421 1616 printf16(" { /* %s */\n" 1422 " %.*s, \'%c\', %s, %d,\n" 1617 " %.*s, ", 1618 pszFilename, 1619 cch - 6, &pszFilename[0] /* build number */ 1620 ); 1621 1622 switch (pszFilename[cch - 5]) 1623 { 1624 case 'S': printf16("KF_SMP"); break; 1625 case '4': printf16("KF_UNI | KF_W4"); break; 1626 case 'U': printf16("KF_UNI"); break; 1627 } 1628 switch (pszFilename[cch - 6]) 1629 { 1630 case 'A': printf16(" | KF_ALLSTRICT"); break; 1631 case 'H': printf16(" | KF_HALFSTRICT"); break; 1632 } 1633 printf16(", %d,\n" 1423 1634 " {\n", 1424 pszFilename,1425 cch - 6, &pszFilename[0], /* build number */1426 pszFilename[cch - 6], /* Type, A=astrict, H=halfstrict, R=Retail */1427 pszFilename[cch - 5] == 'S' ? /* UNI: TYPE_UNI SMP: TYPE_SMP W4: TYPE_W4 */1428 "TYPE_SMP" : pszFilename[cch - 5] == '4' ? "TYPE_W4" : "TYPE_UNI",1429 1635 aImportTab[0].iObject + 1); /* ASSUMES that DOSCODE32 is the last object. */ 1430 1636 … … 1432 1638 { 1433 1639 char *psz = aImportTab[i].achName; 1434 printf16(" {% 2d, 0x%08lx}, /* %s */\n",1640 printf16(" {%-2d, 0x%08lx}, /* %s */\n", 1435 1641 aImportTab[i].iObject, 1436 aImportTab[i]. offObject,1642 aImportTab[i].fFound ? aImportTab[i].offObject : 0xFFFFFFFFUL, 1437 1643 (char *)&aImportTab[i].achName[0] 1438 1644 ); … … 1440 1646 printf16(" }\n" 1441 1647 " },\n"); 1648 1649 /** @remark 1650 * Currently information for retail kernels are usable, but we'll 1651 * generate it for the debug kernels too, but this information 1652 * is enclaved within an "#ifdef ALLKERNELS ... #endif". 1653 */ 1654 if (pszFilename[cch-6] != 'R') 1655 printf16("#endif\n"); 1442 1656 } 1443 1657 else … … 1460 1674 { 1461 1675 APIRET rc; 1462 1676 const char * psz; 1463 1677 1464 1678 /* 1465 1679 * Set paKrnlOTEs to point to an zeroed array of OTEs. 1466 1680 */ 1467 static KRNLINFO KrnlInfo = {0};1681 static KRNLINFO DATA16_INIT KrnlInfo = {0}; 1468 1682 paKrnlOTEs = &KrnlInfo.aObjects[0]; 1469 1683 … … 1474 1688 */ 1475 1689 int i; 1476 for (i = 0; i < argc; i++)1690 for (i = 1; i < argc; i++) 1477 1691 { 1478 1692 rc = processFile(argv[i]); … … 1480 1694 { 1481 1695 printf16("processFile failed with rc=%d for file %s\n", 1482 rc, argv[i]); 1696 rc, argv[i]); 1697 if (psz = GetErrorMsg(rc)) 1698 printf16("%s\n", psz); 1483 1699 return rc; 1484 1700 } … … 1498 1714 int i; 1499 1715 1500 printf16("/* $Id: probkrnl.c,v 1.2 0 2000-04-17 01:56:48bird Exp $\n"1716 printf16("/* $Id: probkrnl.c,v 1.21 2000-09-02 21:07:56 bird Exp $\n" 1501 1717 "*\n" 1502 1718 "* Autogenerated kernel symbol database.\n" … … 1512 1728 "#define INCL_NOBASEAPI\n" 1513 1729 "#include <os2.h>\n" 1730 "#include \"DevSegDf.h\"\n" 1514 1731 "#include \"probkrnl.h\"\n" 1732 "#include \"options.h\"\n" 1515 1733 "\n"); 1516 1734 1517 printf16("KRNLDBENTRY aKrnlSymDB[] = \n"1735 printf16("KRNLDBENTRY DATA16_INIT aKrnlSymDB[] = \n" 1518 1736 "{\n"); 1519 1737 … … 1528 1746 printf16("processFile failed with rc=%d for file %s\n", 1529 1747 rc, &ffb.achName[0]); 1748 if (psz = GetErrorMsg(rc)) 1749 printf16("%s\n", psz); 1530 1750 return rc; 1531 1751 } … … 1537 1757 1538 1758 printf16(" { /* Terminating entry */\n" 1539 " 0,0,0, 0,\n"1759 " 0,0,0,\n" 1540 1760 " {\n"); 1541 1761 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) -
trunk/src/win32k/dev16/vprntf16.c
r2905 r4164 1 /* $Id: vprntf16.c,v 1. 2 2000-02-26 17:49:28bird Exp $1 /* $Id: vprntf16.c,v 1.3 2000-09-02 21:07:56 bird Exp $ 2 2 * 3 3 * vprintf and printf - 16-bit. … … 36 36 #include <os2.h> 37 37 38 #include "devSegDf.h" /* Win32k segment definitions. */ 39 #include "dev16.h" 38 40 #include "vprntf16.h" 39 41 #ifdef RING0 … … 41 43 #include "conio.h" 42 44 #endif 43 #include "dev16.h"44 45 45 46 /******************************************************************************* 46 47 * Global Variables * 47 48 *******************************************************************************/ 49 static char chReturn = '\r'; 48 50 static char chNewLine = '\n'; 49 static char chReturn = '\r';51 static char chReturnWithNewLine[2] = "\r\n"; 50 52 51 53 /******************************************************************************* … … 217 219 * @param args Argument list. 218 220 */ 219 int vprintf16(const char *pszFormat, va_list args)221 int FAR vprintf16(const char *pszFormat, va_list args) 220 222 { 221 223 int cch = 0; … … 327 329 char *pszStr = va_arg(args, char*); 328 330 329 if (pszStr < (char*)0x10000)331 if (pszStr == NULL) 330 332 pszStr = "<NULL>"; 331 333 cchStr = _strnlen(pszStr, (unsigned)cchPrecision); … … 391 393 * @param ... Optional parameters. 392 394 */ 393 int printf16(const char *pszFormat, ...)395 int FAR printf16(const char *pszFormat, ...) 394 396 { 395 397 int cch; … … 413 415 static void choutconsole(int ch) 414 416 { 415 USHORT usWrote;416 417 417 if (ch != '\r') 418 418 { 419 USHORT usWrote; /* Bytes written (ignored). */ 419 420 if (ch == '\n') 420 { 421 usWrote = 1; 422 DosWrite(1, (PVOID)&chReturn, 1, &usWrote); 423 } 424 usWrote = 1; 425 DosWrite(1, (PVOID)&ch, 1, &usWrote); 421 DosWrite(1, (PVOID)&chReturnWithNewLine, 2, &usWrote); 422 else 423 DosWrite(1, (PVOID)&ch, 1, &usWrote); 426 424 } 427 425 } … … 438 436 * At runtime the text is only sendt to com-port. 439 437 */ 440 static char *stroutconsole(char *psz, signed cchMax) 441 { 438 static char *stroutconsole(register char *psz, signed cchMax) 439 { 440 register CHAR ch; 441 442 442 while (cchMax > 0 && *psz != '\0') 443 443 { 444 USHORTcch = 0;445 USHORT us;446 447 while (cchMax - cch > 0 && psz[cch] != '\0' && psz[cch] != '\r' && psz[cch]!= '\n')444 register signed cch = 0; 445 USHORT us; /* Bytes written (ignored). */ 446 447 while (cchMax > cch && (ch = psz[cch]) != '\0' && ch != '\r' && ch != '\n') 448 448 cch++; 449 449 450 450 /* write string part */ 451 us = cch;452 451 DosWrite(1, (PVOID)psz, cch, &us); 453 452 454 /* cr and lf check + skip */ 455 if (psz[cch] == '\n' || psz[cch] == '\r') 456 { 457 if (psz[cch] == '\n') 458 { 459 DosWrite(1, (PVOID)&chReturn, 1, &us); 460 DosWrite(1, (PVOID)&chNewLine, 1, &us); 461 } 462 463 while (cchMax - cch > 0 && (psz[cch] == '\r' || psz[cch] == '\n')) 464 cch++; 453 /* cr and lf: expand lf to cr+lf and ignore cr. */ 454 while (cchMax > cch) 455 { 456 if ((ch = psz[cch]) == '\n') 457 DosWrite(1, (PVOID)&chReturnWithNewLine, 2, &us); 458 else 459 if (ch != '\r') 460 break; 461 cch++; 465 462 } 466 463 … … 481 478 static void chout(int ch) 482 479 { 483 #if def RING0480 #if defined(RING0) && !defined(R3TST) 484 481 if (fInitTime) 485 482 choutconsole(ch); … … 514 511 static char *strout(char *psz, signed cchMax) 515 512 { 516 #if def RING0513 #if defined(RING0) && !defined(R3TST) 517 514 int cchYield = 0; 518 515 … … 539 536 540 537 /* cr and lf check + skip */ 541 if ( psz[cch] == '\n' || psz[cch] == '\r')538 if (cch < cchMax && (psz[cch] == '\n' || psz[cch] == '\r')) 542 539 { 543 540 if (psz[cch] == '\n') -
trunk/src/win32k/dev32/d32ElfIOCtl.c
r2799 r4164 1 /* $Id: d32ElfIOCtl.c,v 1. 1 2000-02-15 23:39:18bird Exp $1 /* $Id: d32ElfIOCtl.c,v 1.2 2000-09-02 21:07:57 bird Exp $ 2 2 * 3 3 * Elf driver IOCtl handler function. … … 20 20 #include <os2.h> 21 21 22 #include "devSegDf.h" 22 23 #include "dev1632.h" 23 24 #include "dev32.h" -
trunk/src/win32k/dev32/d32Win32kIOCtl.c
r2799 r4164 1 /* $Id: d32Win32kIOCtl.c,v 1. 1 2000-02-15 23:39:19bird Exp $1 /* $Id: d32Win32kIOCtl.c,v 1.2 2000-09-02 21:07:57 bird Exp $ 2 2 * 3 3 * Win32k driver IOCtl handler function. … … 14 14 #define INCL_NOPMAPI 15 15 16 #define NO_WIN32K_LIB_FUNCTIONS 17 16 18 17 19 /******************************************************************************* … … 20 22 #include <os2.h> 21 23 24 #include "devSegDf.h" 22 25 #include "dev1632.h" 23 26 #include "dev32.h" 27 #include "OS2Krnl.h" 24 28 #include "Win32k.h" 25 29 #include "k32.h" … … 49 53 return STATUS_DONE; 50 54 } 55 56 case K32_QUERYOTES: 57 { 58 PK32QUERYOTES pParm = (PK32QUERYOTES)pRpIOCtl->ParmPacket; 59 if (pParm == NULL) 60 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER; 61 pParm->rc = k32QueryOTEs((HMTE)pParm->hMTE, pParm->pQOte, pParm->cbQOte); 62 return STATUS_DONE; 63 } 64 65 case K32_QUERYOPTIONSSTATUS: 66 { 67 PK32QUERYOPTIONSSTATUS pParm = (PK32QUERYOPTIONSSTATUS)pRpIOCtl->ParmPacket; 68 if (pParm == NULL) 69 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER; 70 pParm->rc = k32QueryOptionsStatus(pParm->pOptions, pParm->pStatus); 71 return STATUS_DONE; 72 } 73 74 case K32_SETOPTIONS: 75 { 76 PK32SETOPTIONS pParm = (PK32SETOPTIONS)pRpIOCtl->ParmPacket; 77 if (pParm == NULL) 78 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER; 79 pParm->rc = k32SetOptions(pParm->pOptions); 80 return STATUS_DONE; 81 } 82 51 83 } 52 84 break; -
trunk/src/win32k/dev32/d32hlp.asm
r1535 r4164 1 ; $Id: d32hlp.asm,v 1. 3 1999-10-31 23:57:02bird Exp $1 ; $Id: d32hlp.asm,v 1.4 2000-09-02 21:07:57 bird Exp $ 2 2 ; 3 3 ; d32hlp - 32-bit Device Driver Helper Function. … … 34 34 ; extrns 35 35 ; 36 extrn _Device_Help:dword36 extrn _Device_Help:dword 37 37 38 38 ;CODE32 segment 39 CODE32 segment dword public 'CODE' use3239 CODE32 segment 40 40 assume cs:CODE32, ds:flat, ss:nothing, es:nothing 41 41 .386p 42 42 43 43 ;PVOID D32HLPCALL D32Hlp_VirtToLin(ULONG ulPtr16); /* eax */ 44 ; Sideeffect: edx holds the error code on error. 44 45 D32Hlp_VirtToLin proc near 45 46 push esi … … 51 52 Thunk32_VirtToLin:: 52 53 jnc Finished 54 mov edx, eax 53 55 xor eax, eax 54 56 … … 61 63 ;PVOID D32HLPCALL D32Hlp_VirtToLin2(USHORT usSelector, /* ax */ 62 64 ; ULONG ulOffset); /* edx */ 65 ; Sideeffect: edx holds the error code on error. 63 66 D32Hlp_VirtToLin2 proc near 64 67 push esi … … 69 72 Thunk32_VirtToLin2:: 70 73 jnc Finished 74 mov edx, eax 71 75 xor eax, eax 72 76 … … 106 110 Thunk32_GetDOSVar:: 107 111 jc Error 108 shl e bx, 16112 shl eax, 16 109 113 mov bx, ax 110 114 xchg eax, ebx … … 277 281 278 282 ;CODE16 segment 279 CODE16 segment word public 'CODE' use16283 CODE16 segment 280 284 assume cs:CODE16, ds:FLAT 281 285 -
trunk/src/win32k/dev32/d32init.c
r3485 r4164 1 /* $Id: d32init.c,v 1. 19 2000-05-03 10:46:06bird Exp $1 /* $Id: d32init.c,v 1.20 2000-09-02 21:07:57 bird Exp $ 2 2 * 3 3 * d32init.c - 32-bits init routines. … … 14 14 #define MAXSIZE_PROLOG 0x18 /* Note that this must be synced with */ 15 15 /* the one used in calltab.asm. */ 16 #define static /* just to make all symbols visible in the kernel debugger. */17 16 #if 0 /* Enable this to have extra debug logging. */ 18 17 #define kprintf2(a) kprintf … … 24 23 #define INCL_NOPMAPI 25 24 #define LDR_INCL_INITONLY 25 #define INCL_OS2KRNL_ALL 26 26 27 27 /******************************************************************************* … … 32 32 #include <string.h> 33 33 34 #include "devSegDf.h" 34 35 #include "OS2Krnl.h" 35 36 #include "options.h" … … 44 45 #include "ldrCalls.h" 45 46 #include "macros.h" 47 #include "errors.h" 48 49 #ifdef R3TST 50 #include "test.h" 51 #endif 46 52 47 53 … … 53 59 static char * apszInfoLevel[] = {"INFOLEVEL_QUIET", "INFOLEVEL_ERROR", "INFOLEVEL_WARNING", "INFOLEVEL_INFO", "INFOLEVEL_INFOALL", "!invalid!"}; 54 60 #endif 55 staticPMTE pKrnlMTE = NULL;56 staticPSMTE pKrnlSMTE = NULL;57 staticPOTE pKrnlOTE = NULL;61 PMTE pKrnlMTE = NULL; 62 PSMTE pKrnlSMTE = NULL; 63 POTE pKrnlOTE = NULL; 58 64 59 65 … … 61 67 * Internal Functions * 62 68 *******************************************************************************/ 63 static ULONG readnum(const char *pszNum); 64 _Inline int ModR_M_32bit(char bModRM); 65 static int interpretFunctionProlog32(char *pach, BOOL fOverload); 66 static int interpretFunctionProlog16(char *pach, BOOL fOverload); 67 static int ImportTabInit(void); 69 ULONG readnum(const char *pszNum); 70 _Inline int ModR_M_32bit(char bModRM); 71 _Inline int ModR_M_16bit(char bModRM); 72 int interpretFunctionProlog32(char *pach, BOOL fOverload); 73 int interpretFunctionProlog16(char *pach, BOOL fOverload); 74 int importTabInit(void); 75 #ifdef R3TST 76 PMTE GetOS2KrnlMTETst(void); 77 void R3TstFixImportTab(void); 78 #endif 79 PSZ SECCALL nopSecPathFromSFN(SFN hFile); 80 68 81 69 82 … … 78 91 /* extern(s) located in mytkExecPgm.asm */ 79 92 extern char mytkExecPgm; 80 81 82 #ifndef DEBUGR3 93 extern char mytkStartProcess; 94 95 83 96 /** 84 97 * Ring-0, 32-bit, init function. … … 118 131 { 119 132 case 'c': 120 case 'C': /* -C[1|2] - com-port no, def:-C2 */ 121 switch (pszTmp[1]) 122 { 123 case '1': 124 options.usCom = OUTPUT_COM1; 125 break; 126 127 case '2': 128 default: 129 options.usCom = OUTPUT_COM2; 130 } 133 case 'C': /* -C[1|2] or -Com:[1|2] - com-port no, def:-C2 */ 134 pszTmp2 = strpbrk(pszTmp, ":=/- "); 135 if (pszTmp2 != NULL && (*pszTmp2 == ':' || *pszTmp2 == '=')) 136 pszTmp2++; 137 else 138 pszTmp2 = pszTmp + 1; 139 options.usCom = (USHORT)(*pszTmp2 == '1' ? OUTPUT_COM1 : OUTPUT_COM2); 131 140 break; 132 141 … … 134 143 case 'E':/* ELF */ 135 144 pszTmp2 = strpbrk(pszTmp, ":=/- "); 136 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1145 if (pszTmp2 != NULL 137 146 && (pszTmp2[1] == 'N' ||pszTmp2[1] == 'n' || pszTmp2[1] == 'D' || pszTmp2[1] == 'd') 138 147 ) … … 145 154 case 'H': /* Heap options */ 146 155 pszTmp2 = strpbrk(pszTmp, ":=/- "); 147 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1 148 && (*pszTmp2 == ':' || *pszTmp2 == '=')) 156 if (pszTmp2 != NULL && (*pszTmp2 == ':' || *pszTmp2 == '=')) 149 157 { 150 158 ul = readnum(pszTmp2 + 1); … … 159 167 break; 160 168 169 case 'j': 170 case 'J': /* -Java:<Yes|No> */ 171 pszTmp2 = strpbrk(pszTmp, ":=/- "); 172 options.fJava = 173 pszTmp2 != NULL 174 && (int)(pszTmp2-pszTmp) < cch-1 175 && (*pszTmp2 == ':' || *pszTmp2 == '=') 176 && (pszTmp2[1] == 'Y' || pszTmp2[1] == 'y'); 177 break; 178 161 179 case 'l': 162 180 case 'L': /* -L[..]<:|=| >[<Y..|E..| > | <N..|D..>] */ 163 181 pszTmp2 = strpbrk(pszTmp, ":=/- "); 164 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1165 && (pszTmp2[1] == ' N' ||pszTmp2[1] == 'n' || pszTmp2[1] == 'D' || pszTmp2[1] == 'd')182 if (pszTmp2 != NULL 183 && (pszTmp2[1] == 'Y' ||pszTmp2[1] == 'y' || pszTmp2[1] == 'E' || pszTmp2[1] == 'e') 166 184 ) 185 options.fLogging = TRUE; 186 else 167 187 options.fLogging = FALSE; 168 else169 options.fLogging = TRUE;170 188 break; 171 189 … … 178 196 case 'P': /* PE */ 179 197 pszTmp2 = strpbrk(pszTmp, ":=/- "); 180 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1 181 && (*pszTmp2 == ':' || *pszTmp2 == '=')) 198 if (pszTmp2 != NULL && (*pszTmp2 == ':' || *pszTmp2 == '=')) 182 199 { 183 pszTmp ++;184 if (strnicmp(pszTmp , "pe2lx", 5) == 0)200 pszTmp2++; 201 if (strnicmp(pszTmp2, "pe2lx", 5) == 0) 185 202 options.fPE = FLAGS_PE_PE2LX; 186 else if (strnicmp(pszTmp , "pe", 2) == 0)203 else if (strnicmp(pszTmp2, "pe", 2) == 0) 187 204 options.fPE = FLAGS_PE_PE; 188 else if (strnicmp(pszTmp , "mixed", 2) == 0)205 else if (strnicmp(pszTmp2, "mixed", 2) == 0) 189 206 options.fPE = FLAGS_PE_MIXED; 190 else if (strnicmp(pszTmp , "not", 2) == 0)207 else if (strnicmp(pszTmp2, "not", 2) == 0) 191 208 options.fPE = FLAGS_PE_NOT; 192 209 else … … 203 220 204 221 case 'r': 205 case 'R': /* ResHeap options */222 case 'R': /* ResHeap options or REXX option */ 206 223 pszTmp2 = strpbrk(pszTmp, ":=/- "); 207 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1 208 && (*pszTmp2 == ':' || *pszTmp2 == '=')) 209 { 210 ul = readnum(pszTmp2 + 1); 211 if (ul > 0x1000UL && ul < 0x700000UL) /* 4KB < ul < 7MB */ 224 if ( (pszTmp[1] == 'E' || pszTmp[1] == 'e') 225 && (pszTmp[2] == 'X' || pszTmp[2] == 'x')) 226 { /* REXX */ 227 options.fREXXScript = 228 pszTmp2 != NULL 229 && (int)(pszTmp2-pszTmp) < cch-1 230 && (*pszTmp2 == ':' || *pszTmp2 == '=') 231 && (pszTmp2[1] == 'Y' || pszTmp2[1] == 'y'); 232 } 233 else 234 { /* ResHeap options */ 235 if (pszTmp2 != NULL && (*pszTmp2 == ':' || *pszTmp2 == '=')) 212 236 { 213 if (strnicmp(pszTmp, "resheapm", 8) == 0) 214 options.cbResHeapMax = ul; 215 else 216 options.cbResHeapInit = ul; 237 ul = readnum(pszTmp2 + 1); 238 if (ul > 0x1000UL && ul < 0x700000UL) /* 4KB < ul < 7MB */ 239 { 240 if (strnicmp(pszTmp, "resheapm", 8) == 0) 241 options.cbResHeapMax = ul; 242 else 243 options.cbResHeapInit = ul; 244 } 217 245 } 218 246 } … … 222 250 case 'S': /* Sym:<filename> or Script:<Yes|No> or Smp */ 223 251 /* SMP kernel */ 224 if (pszTmp[1] == 'm' || pszTmp[1] == 'M') 225 options.fKernel = KF_SMP; 226 else 252 pszTmp2 = strpbrk(pszTmp, ":=/- "); 253 if (pszTmp[1] == 'c' || pszTmp[1] == 'C') 227 254 { 228 if (pszTmp[1] == 'c' || pszTmp[1] == 'C') 229 { 230 pszTmp2 = strpbrk(pszTmp, ":=/- "); 231 options.fScript = pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1 232 && (*pszTmp2 == ':' || *pszTmp2 == '=') 233 && (pszTmp2[1] == 'Y' || pszTmp2[1] == 'y'); 234 } 235 } 236 break; 237 238 case 'u': 239 case 'U': /* UNI kernel */ 240 options.fKernel = KF_UNI; 255 options.fUNIXScript = 256 pszTmp2 != NULL 257 && (int)(pszTmp2-pszTmp) < cch-1 258 && (*pszTmp2 == ':' || *pszTmp2 == '=') 259 && (pszTmp2[1] == 'Y' || pszTmp2[1] == 'y'); 260 } 241 261 break; 242 262 … … 247 267 248 268 case 'w': 249 case 'W': 269 case 'W': /* ModuleBase info level; -W<n> or -Warning:<n> */ 250 270 if (pszTmp[1] >= '0' && pszTmp[1] <= '4') 251 271 options.ulInfoLevel = pszTmp[1] - '0'; … … 253 273 { 254 274 pszTmp2 = strpbrk(pszTmp, ":=/- "); 255 if (pszTmp2 != NULL && (int)(pszTmp2-pszTmp) < cch-1 256 && (*pszTmp2 == ':' || *pszTmp2 == '=') 257 && pszTmp2[1] >= '0' && pszTmp2[1] <= '4' 258 ) 259 options.ulInfoLevel = pszTmp2[1] - '0'; 275 if (pszTmp2 != NULL && (*pszTmp2 == ':' || *pszTmp2 == '=')) 276 pszTmp2++; 277 else 278 pszTmp2 = pszTmp + 1; 279 280 if (*pszTmp2 >= '0' && *pszTmp2 <= '4') 281 options.ulInfoLevel = *pszTmp2 - '0'; 260 282 } 261 283 break; … … 270 292 if (options.cbResHeapInit > options.cbResHeapMax) 271 293 options.cbResHeapMax = options.cbResHeapInit; 272 273 /* Transfer version and build number from 16-bit probkrnl.c */274 options.ulBuild = _usBuild;275 options.usVerMajor = _usVerMajor;276 options.usVerMinor = _usVerMinor;277 294 278 295 /* Log option summary */ … … 288 305 else 289 306 kprintf(("\tlogging disabled\n")); 290 kprintf(("\tCom port no.% d\n", options.usCom));291 292 kprintf(("\tKernel: v er%d.%d build %d type %s\n",307 kprintf(("\tCom port no.%03xh\n", options.usCom)); 308 309 kprintf(("\tKernel: v%d.%d build %d type ", 293 310 options.usVerMajor, 294 311 options.usVerMinor, 295 options.ulBuild, 296 (options.fKernel & KF_SMP) ? "SMP" : "UNI" 297 )); 298 kprintf(("\tfPE=%d (%s)\n", options.fPE, apszPE[MIN(options.fPE, 5)])); 312 options.ulBuild)); 313 if (options.fKernel & KF_SMP) 314 kprintf(("SMP ")); 315 else if (options.fKernel & KF_W4) 316 kprintf(("W4 ")); 317 else 318 kprintf(("UNI ")); 319 if (options.fKernel & KF_DEBUG) 320 kprintf(("DEBUG\n")); 321 else 322 kprintf(("\n")); 323 324 kprintf(("\tfPE=%d (%s)\n", options.fPE, apszPE[MIN(options.fPE, 5)])); 299 325 kprintf(("\tulInfoLevel=%d (%s)\n", options.ulInfoLevel, apszInfoLevel[MIN(options.ulInfoLevel, 5)])); 300 kprintf(("\tfElf=%d\n", options.fElf)); 301 kprintf(("\tfScript=%d\n", options.fScript)); 302 kprintf(("\tfNoLoader=%d\n", options.fNoLoader)); 326 kprintf(("\tfElf=%d\n", options.fElf)); 327 kprintf(("\tfUNIXScript=%d\n", options.fUNIXScript)); 328 kprintf(("\tfREXXScript=%d\n", options.fREXXScript)); 329 kprintf(("\tfJAVA=%d\n", options.fJava)); 330 kprintf(("\tfNoLoader=%d\n", options.fNoLoader)); 303 331 kprintf(("\tcbSwpHeapInit=0x%08x cbSwpHeapMax=0x%08x\n", 304 332 options.cbSwpHeapInit, options.cbSwpHeapMax)); 305 333 kprintf(("\tcbResHeapInit=0x%08x cbResHeapMax=0x%08x\n", 306 options.cb SwpHeapInit, options.cbSwpHeapMax));334 options.cbResHeapInit, options.cbResHeapMax)); 307 335 kprintf(("Options - Summary - End\n")); 308 336 #endif /* debug */ … … 325 353 /* functionoverrides */ 326 354 if (!options.fNoLoader) 327 if ( ImportTabInit() != NO_ERROR)355 if (importTabInit() != NO_ERROR) 328 356 return STATUS_DONE | STERR | ERROR_I24_QUIET_INIT_FAIL; 329 357 … … 369 397 * @author knut st. osmundsen 370 398 */ 371 staticULONG readnum(const char *pszNum)399 ULONG readnum(const char *pszNum) 372 400 { 373 401 ULONG ulRet = 0; … … 428 456 429 457 /* Find the kernel OTE table */ 458 #ifndef R3TST 430 459 pKrnlMTE = GetOS2KrnlMTE(); 460 #else 461 pKrnlMTE = GetOS2KrnlMTETst(); 462 #endif 431 463 if (pKrnlMTE != NULL) 432 464 { … … 461 493 * Search for internal revision stuff in the two first objects. 462 494 */ 463 pKrnlInfo->u sBuild = 0;464 for (i = 0; i < 2 && pKrnlInfo->u sBuild == 0; i++)495 pKrnlInfo->ulBuild = 0; 496 for (i = 0; i < 2 && pKrnlInfo->ulBuild == 0; i++) 465 497 { 466 498 const char *psz = (const char*)pKrnlOTE[i].ote_base; 467 const char *pszEnd = psz + pKrnlOTE[i].ote_size ;468 469 while (psz + 100< pszEnd)499 const char *pszEnd = psz + pKrnlOTE[i].ote_size - 50; /* Last possible search position. */ 500 501 while (psz < pszEnd) 470 502 { 471 503 if (strncmp(psz, "Internal revision ", 18) == 0 && (psz[18] >= '0' && psz[18] <= '9')) 472 504 { 473 505 int j; 474 kprintf2(("Get OTEs32: found internal revision: '%s'\n", psz));506 kprintf2(("GetKernelInfo32: found internal revision: '%s'\n", psz)); 475 507 476 508 /* skip to end of "Internal revision " string. */ … … 481 513 { 482 514 if (*psz != '.') 483 pKrnlInfo->u sBuild = (unsigned short)(pKrnlInfo->usBuild * 10 + (*psz - '0'));515 pKrnlInfo->ulBuild = (unsigned short)(pKrnlInfo->ulBuild * 10 + (*psz - '0')); 484 516 psz++; 485 517 } 486 518 487 519 /* Check if build number seems valid. */ 488 if ( !(pKrnlInfo->usBuild >= 8254 && pKrnlInfo->usBuild < 8383) /* Warp 3 fp 32 -> fp 60 */ 489 && !(pKrnlInfo->usBuild >= 9023 && pKrnlInfo->usBuild <= 9036) /* Warp 4 GA -> fp 12 */ 490 && !(pKrnlInfo->usBuild >= 14039 && pKrnlInfo->usBuild < 14080) /* Warp 4.5 GA -> fp 40 */ 520 if ( !(pKrnlInfo->ulBuild >= 8254 && pKrnlInfo->ulBuild < 8383) /* Warp 3 fp 32 -> fp 60 */ 521 && !(pKrnlInfo->ulBuild >= 9023 && pKrnlInfo->ulBuild <= 9036) /* Warp 4 GA -> fp 12 */ 522 && !(pKrnlInfo->ulBuild >= 14039 && pKrnlInfo->ulBuild < 14080) /* Warp 4.5 GA -> fp 40 */ 523 && !(pKrnlInfo->ulBuild >= 6600 && pKrnlInfo->ulBuild <= 6678) /* Warp 2.1x fix?? (just for fun!) */ 491 524 ) 492 525 { 493 kprintf(("Get OTEs32: info summary: Build %d is invalid - invalid fixpack?\n", pKrnlInfo->usBuild));494 usRc = 6;526 kprintf(("GetKernelInfo32: info summary: Build %d is invalid - invalid fixpack?\n", pKrnlInfo->ulBuild)); 527 usRc = ERROR_D32_INVALID_BUILD; 495 528 break; 496 529 } … … 500 533 || (psz[0] == '_' && (psz[1] == 'S' || psz[1] == 's')) /* _SMP */ 501 534 ) 502 pKrnlInfo->fchType = TYPE_SMP; 503 else if (psz[0] == '_' && psz[1] == 'W' && psz[2] == '4') /* _W4 */ 504 pKrnlInfo->fchType = TYPE_W4; 535 pKrnlInfo->fKernel = KF_SMP; 505 536 else 506 pKrnlInfo->fchType = TYPE_UNI; 537 if (*psz != ',' 538 && ( (psz[0] == '_' && psz[1] == 'W' && psz[2] == '4') /* _W4 */ 539 || (psz[1] == '_' && psz[2] == 'W' && psz[3] == '4') /* A_W4 */ 540 || (psz[0] == '_' && psz[1] == 'U' && psz[2] == 'N' && psz[3] == 'I' && psz[4] == '4') /* _UNI4 */ 541 || (psz[1] == '_' && psz[2] == 'U' && psz[3] == 'N' && psz[4] == 'I' && psz[5] == '4') /* A_UNI4 */ 542 ) 543 ) 544 pKrnlInfo->fKernel = KF_W4 | KF_UNI; 545 else 546 pKrnlInfo->fKernel = KF_UNI; 507 547 508 548 509 549 /* Check if its a debug kernel (look for DEBUG at start of object 3-5) */ 510 550 j = 3; 511 pKrnlInfo->fDebug = FALSE;512 551 while (j < 5) 513 552 { … … 520 559 && strncmp((char*)pKrnlOTE[j].ote_base, "DEBUG", 5) == 0) 521 560 { 522 pKrnlInfo->f Debug = TRUE;561 pKrnlInfo->fKernel |= KF_DEBUG; 523 562 break; 524 563 } … … 527 566 528 567 /* Display info */ 529 kprintf(("Get OTEs32: info summary: Build %d, fchType=%d, fDebug=%d\n",530 pKrnlInfo->u sBuild, pKrnlInfo->fchType, pKrnlInfo->fDebug));568 kprintf(("GetKernelInfo32: info summary: Build %d, fKernel=%d\n", 569 pKrnlInfo->ulBuild, pKrnlInfo->fKernel)); 531 570 532 571 /* Break out */ … … 540 579 541 580 /* Set error code if not found */ 542 if (pKrnlInfo->u sBuild == 0)581 if (pKrnlInfo->ulBuild == 0) 543 582 { 544 usRc = 5;545 kprintf(("Get OTEs32: Internal revision was not found!\n"));583 usRc = ERROR_D32_BUILD_INFO_NOT_FOUND; 584 kprintf(("GetKernelInfo32: Internal revision was not found!\n")); 546 585 } 547 586 } 548 587 else 549 usRc = 4;588 usRc = ERROR_D32_NO_OBJECT_TABLE; 550 589 } 551 590 else 552 usRc = 3;591 usRc = ERROR_D32_TOO_MANY_OBJECTS; 553 592 } 554 593 else 555 usRc = 2;594 usRc = ERROR_D32_NO_SWAPMTE; 556 595 } 557 596 else 558 usRc = 1; 559 560 561 if (usRc != 0) 562 kprintf(("GetOTEs32: failed. usRc = %d\n", usRc)); 597 usRc = ERROR_D32_GETOS2KRNL_FAILED; 598 599 if (usRc != NO_ERROR) 600 kprintf(("GetKernelInfo32: failed. usRc = %d\n", usRc)); 563 601 564 602 return (USHORT)(usRc | (usRc != NO_ERROR ? STATUS_DONE | STERR : STATUS_DONE)); 565 603 } 566 #endif /* !DEBUGR3*/567 604 568 605 … … 575 612 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 576 613 */ 577 _Inlineint ModR_M_32bit(char bModRM)614 int ModR_M_32bit(char bModRM) 578 615 { 579 616 if ((bModRM & 0xc0) == 0x80 /* ex. mov ax,[ebp+11145543h] */ 580 617 || ((bModRM & 0xc0) == 0 && (bModRM & 0x07) == 5)) /* ex. mov ebp,[0ff231234h] */ 581 618 { /* 32-bit displacement */ 582 return 5; 619 return 5 + ((bModRM & 0x7) == 0x4); // + SIB 620 } 621 else if ((bModRM & 0xc0) == 0x40) /* ex. mov ecx,[esi]+4fh */ 622 { /* 8-bit displacement */ 623 return 2 + ((bModRM & 0x7) == 0x4); // + SIB 624 } 625 /* no displacement (only /r byte) */ 626 return 1; 627 } 628 629 630 /** 631 * Functions which cacluates the instructionsize given a ModR/M byte. 632 * @returns Number of bytes to add to cb and pach. 633 * @param bModRM ModR/M byte. 634 * @status completely implemented. 635 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 636 */ 637 int ModR_M_16bit(char bModRM) 638 { 639 if ((bModRM & 0xc0) == 0x80 /* ex. mov ax,[ebp+11145543h] */ 640 || ((bModRM & 0xc0) == 0 && (bModRM & 0x07) == 5)) /* ex. mov ebp,[0ff231234h] */ 641 { /* 16-bit displacement */ 642 return 4; 583 643 } 584 644 else if ((bModRM & 0xc0) == 0x40) /* ex. mov ecx,[esi]+4fh */ … … 603 663 * FALSE: Function is to be imported. 604 664 */ 605 staticint interpretFunctionProlog32(char *pach, BOOL fOverload)665 int interpretFunctionProlog32(char *pach, BOOL fOverload) 606 666 { 607 667 int cb = -3; 608 609 668 kprintf2(("interpretFunctionProlog32(0x%08x, %d):\n" 610 669 "\t%02x %02x %02x %02x - %02x %02x %02x %02x\n" … … 630 689 * push ebp 631 690 * or 691 * mov ecx, r/m32 692 * or 693 * jmp dword 694 * or 695 * sub esp, imm8 696 * or 697 * call ptr16:32 698 * or 699 * enter imm16, imm8 (2.1x) 700 * or 701 * mov eax, imm32 (2.1x) 702 * <anything> 703 * or 704 * xor r32, r/m32 705 * or 632 706 * mov eax, msoff32 633 707 * 634 708 */ 635 if ((pach[0] == 0x55 && (pach[1] == 0x8b || pach[1] == 0xa1)) /* t wo first prologs */709 if ((pach[0] == 0x55 && (pach[1] == 0x8b || pach[1] == 0xa1)) /* the two first prologs */ 636 710 || 637 (pach[0] == 0xB8 && (pach[5] == 0xEB || pach[5] == 0x55 ) && !fOverload) /* two next prologs */ 711 (pach[0] == 0xB8 && (pach[5] == 0xEB || pach[5] == 0x55) && !fOverload) /* the two next prologs */ 712 || 713 (pach[0] == 0x8B && !fOverload) /* the next prolog */ 714 || 715 (pach[0] == 0xFF && !fOverload) /* the next prolog */ 716 || 717 (pach[0] == 0x83 && !fOverload) /* the next prolog */ 718 || 719 (pach[0] == 0x9a && !fOverload) /* the next prolog */ 720 || 721 (pach[0] == 0xc8) /* the next prolog */ 722 || 723 (pach[0] == 0xB8 && !fOverload) /* the next prolog */ 724 || 725 (pach[0] == 0x33 && !fOverload) /* the next prolog */ 638 726 || 639 727 (pach[0] == 0xa1 && !fOverload) /* last prolog */ 640 728 ) 641 729 { 642 BOOL fForce; 730 BOOL fForce = FALSE; 731 int cbWord = 4; 643 732 cb = 0; 644 733 while (cb < 5 || fForce) /* 5 is the size of a jump instruction. */ 645 734 { 646 735 int cb2; 736 if (!fForce && cbWord != 4) 737 cbWord = 4; 647 738 fForce = FALSE; 648 739 switch (*pach) … … 656 747 case 0x65: /* gs segment override */ 657 748 fForce = TRUE; 749 break; 750 751 case 0x66: /* 16 bit */ 752 fForce = TRUE; 753 cbWord = 2; 658 754 break; 659 755 … … 703 799 case 0xa1: /* mov eax, moffs16 */ 704 800 case 0xa3: /* mov moffs16, eax */ 705 pach += 4;706 cb += 4;801 pach += cbWord; 802 cb += cbWord; 707 803 break; 708 804 … … 722 818 case 0x8b: /* mov /r */ 723 819 case 0x8d: /* lea /r */ 724 if ((pach[1] & 0x7) == 4 && (pach[1] & 0xc0) != 0xc0) /* invalid instruction!?! */725 return -1;726 820 cb += cb2 = ModR_M_32bit(pach[1]); 727 821 pach += cb2; … … 751 845 ) 752 846 { 753 cb += cb2 = 4 + ModR_M_32bit(pach[1]); /* 4 is the size of the imm32*/847 cb += cb2 = cbWord + ModR_M_32bit(pach[1]); /* cbWord is the size of the imm32/imm16 */ 754 848 pach += cb2; 755 849 } … … 759 853 return -2; 760 854 } 855 break; 856 857 case 0x9a: /* call ptr16:32 */ 858 cb += cb2 = 6; 859 pach += cb2; 860 break; 861 862 case 0xc8: /* enter imm16, imm8 */ 863 cb += cb = 3; 864 pach += cb2; 865 break; 866 867 /* 868 * jmp /digit 869 */ 870 case 0xff: 871 cb += cb2 = cbWord + ModR_M_32bit(pach[1]); /* cbWord is the size of the imm32/imm16 */ 872 pach += cb2; 761 873 break; 762 874 … … 771 883 else 772 884 { 773 kprintf(("interpretFunctionProlog32: unknown prolog start. 0x%x 0x%x 0x%x\n", pach[0], pach[1], pach[2])); 885 kprintf(("interpretFunctionProlog32: unknown prolog start. 0x%x 0x%x 0x%x 0x%x 0x%x\n", 886 pach[0], pach[1], pach[2], pach[3], pach[4])); 774 887 cb = 0; 775 888 } … … 787 900 * FALSE: Function is to be imported. 788 901 */ 789 staticint interpretFunctionProlog16(char *pach, BOOL fOverload)902 int interpretFunctionProlog16(char *pach, BOOL fOverload) 790 903 { 791 904 int cb = -7; … … 809 922 while (cb < 8 || fForce) /* 8 is the size of a 66h prefixed far jump instruction. */ 810 923 { 924 int cb2; 811 925 fForce = FALSE; 812 926 switch (*pach) 813 927 { 928 case 0x06: /* push es */ 929 case 0x0e: /* push cs */ 930 case 0x1e: /* push ds */ 931 case 0x16: /* push ss */ 932 break; 933 814 934 case 0x0f: /* push gs and push fs */ 815 935 if (pach[1] != 0xA0 && pach[1] != 0xA8) … … 888 1008 break; 889 1009 1010 /* complex sized instruction - "/5 ib" */ 1011 case 0x80: /* 5: sub r/m8, imm8 7: cmp r/m8, imm8 */ 1012 case 0x83: /* 5: sub r/m16, imm8 7: cmp r/m16, imm8 */ 1013 if ((pach[1] & 0x38) == (5<<3) 1014 || (pach[1] & 0x38) == (7<<3) 1015 ) 1016 { 1017 cb += cb2 = 1 + ModR_M_16bit(pach[1]); /* 1 is the size of the imm8 */ 1018 pach += cb2; 1019 } 1020 else 1021 { 1022 kprintf(("interpretFunctionProlog16: unknown instruction (-3) 0x%x 0x%x 0x%x\n", pach[0], pach[1], pach[2])); 1023 return -3; 1024 } 1025 break; 1026 1027 890 1028 default: 891 1029 kprintf(("interpretFunctionProlog16: unknown instruction 0x%x 0x%x 0x%x\n", pach[0], pach[1], pach[2])); … … 904 1042 905 1043 906 #ifndef DEBUGR3907 1044 /** 908 1045 * Verifies the aImportTab. … … 913 1050 USHORT _loadds _Far32 _Pascal VerifyImportTab32(void) 914 1051 { 915 int i; 916 int cb; 917 int cbmin; 1052 USHORT usRc; 1053 int i; 1054 int cb; 1055 int cbmin; 918 1056 919 1057 /* VerifyImporTab32 is called before the initroutine! */ … … 921 1059 922 1060 /* Check that pKrnlOTE is set */ 923 if (GetKernelInfo32(NULL) != NO_ERROR) 924 return STATUS_DONE | STERR | 1; 1061 usRc = GetKernelInfo32(NULL); 1062 if (usRc != NO_ERROR) 1063 return (USHORT)(STATUS_DONE | STERR | (usRc & STECODE)); 925 1064 926 1065 /* … … 933 1072 */ 934 1073 kprintf2(("VerifyImportTab32: procedure no.%d is being checked: %s addr=0x%08x iObj=%d offObj=%d\n", 935 i, & _aImportTab[i].achName[0], _aImportTab[i].ulAddress,936 _aImportTab[i].iObject, _aImportTab[i].offObject));1074 i, &aImportTab[i].achName[0], aImportTab[i].ulAddress, 1075 aImportTab[i].iObject, aImportTab[i].offObject)); 937 1076 938 1077 /* Verify that it is found */ 939 if (!_aImportTab[i].fFound) 940 { 941 kprintf(("VerifyImportTab32: procedure no.%d was not fFound!\n", i)); 942 return STATUS_DONE | STERR | 2; 1078 if (!aImportTab[i].fFound) 1079 { 1080 if (aImportTab[i].fType & EPT_NOT_REQ) 1081 continue; 1082 else 1083 { 1084 kprintf(("VerifyImportTab32: procedure no.%d was not fFound!\n", i)); 1085 return STATUS_DONE | STERR | ERROR_D32_PROC_NOT_FOUND; 1086 } 943 1087 } 944 1088 945 1089 /* Verify read/writeable. */ 946 if ( _aImportTab[i].iObject >= pKrnlSMTE->smte_objcnt /* object index valid? */947 || _aImportTab[i].ulAddress < pKrnlOTE[_aImportTab[i].iObject].ote_base/* address valid? */948 || _aImportTab[i].ulAddress + 16 > (pKrnlOTE[_aImportTab[i].iObject].ote_base +949 pKrnlOTE[ _aImportTab[i].iObject].ote_size) /* address valid? */950 || _aImportTab[i].ulAddress - _aImportTab[i].offObject951 != pKrnlOTE[ _aImportTab[i].iObject].ote_base /* offObject ok? */1090 if (aImportTab[i].iObject >= pKrnlSMTE->smte_objcnt /* object index valid? */ 1091 || aImportTab[i].ulAddress < pKrnlOTE[aImportTab[i].iObject].ote_base /* address valid? */ 1092 || aImportTab[i].ulAddress + 16 > (pKrnlOTE[aImportTab[i].iObject].ote_base + 1093 pKrnlOTE[aImportTab[i].iObject].ote_size) /* address valid? */ 1094 || aImportTab[i].ulAddress - aImportTab[i].offObject 1095 != pKrnlOTE[aImportTab[i].iObject].ote_base /* offObject ok? */ 952 1096 ) 953 1097 { 954 1098 kprintf(("VerifyImportTab32: procedure no.%d has an invalid address or object number.!\n" 955 1099 " %s addr=0x%08x iObj=%d offObj=%d\n", 956 i, & _aImportTab[i].achName[0], _aImportTab[i].ulAddress,957 _aImportTab[i].iObject, _aImportTab[i].offObject));958 return STATUS_DONE | STERR | 3;1100 i, &aImportTab[i].achName[0], aImportTab[i].ulAddress, 1101 aImportTab[i].iObject, aImportTab[i].offObject)); 1102 return STATUS_DONE | STERR | ERROR_D32_INVALID_OBJ_OR_ADDR; 959 1103 } 960 1104 961 1105 962 963 if ( _aImportTab[i].ulAddress < 0xffe00000UL)1106 #ifndef R3TST 1107 if (aImportTab[i].ulAddress < 0xff400000UL) 964 1108 { 965 1109 kprintf(("VerifyImportTab32: procedure no.%d has an invalid address, %#08x!\n", 966 i, _aImportTab[i].ulAddress));967 return STATUS_DONE | STERR | 4;1110 i, aImportTab[i].ulAddress)); 1111 return STATUS_DONE | STERR | ERROR_D32_INVALID_ADDRESS; 968 1112 } 969 970 switch (_aImportTab[i].fType & ~EPT_BIT_MASK) 1113 #endif 1114 1115 switch (aImportTab[i].fType & ~(EPT_BIT_MASK | EPT_NOT_REQ)) 971 1116 { 972 1117 case EPT_PROC: … … 975 1120 * Verify known function prolog. 976 1121 */ 977 if (EPT32BitEntry( _aImportTab[i]))1122 if (EPT32BitEntry(aImportTab[i])) 978 1123 { 979 cb = interpretFunctionProlog32((char*) _aImportTab[i].ulAddress,980 _aImportTab[i].fType == EPT_PROC32);1124 cb = interpretFunctionProlog32((char*)aImportTab[i].ulAddress, 1125 aImportTab[i].fType == EPT_PROC32); 981 1126 cbmin = 5; /* Size of the jump instruction */ 982 1127 } 983 1128 else 984 1129 { 985 cb = interpretFunctionProlog16((char*) _aImportTab[i].ulAddress,986 _aImportTab[i].fType == EPT_PROC16);1130 cb = interpretFunctionProlog16((char*)aImportTab[i].ulAddress, 1131 aImportTab[i].fType == EPT_PROC16); 987 1132 cbmin = 7; /* Size of the far jump instruction */ 988 1133 } … … 991 1136 * Check result of the function prolog interpretations. 992 1137 */ 993 if (cb <= 0 &&cb + cbmin >= MAXSIZE_PROLOG)1138 if (cb <= 0 || cb + cbmin >= MAXSIZE_PROLOG) 994 1139 { /* failed, too small or too large. */ 995 kprintf(("VerifyImportTab32: verify failed for procedure no.%d (c d=%d)\n", i, cb));996 return STATUS_DONE | STERR | 5;1140 kprintf(("VerifyImportTab32: verify failed for procedure no.%d (cb=%d)\n", i, cb)); 1141 return STATUS_DONE | STERR | ERROR_D32_TOO_INVALID_PROLOG; 997 1142 } 998 1143 break; … … 1003 1148 1004 1149 default: 1005 kprintf(("VerifyImportTab32: only EPT_PROC isimplemented\n",i));1150 kprintf(("VerifyImportTab32: invalid type/type not implemented\n",i)); 1006 1151 Int3(); /* temporary fix! */ 1007 return STATUS_DONE | STERR | 6;1152 return STATUS_DONE | STERR | ERROR_D32_NOT_IMPLEMENTED; 1008 1153 } 1009 1154 } … … 1017 1162 * @returns NO_ERROR on success. !0 on error. 1018 1163 */ 1019 staticint importTabInit(void)1164 int importTabInit(void) 1020 1165 { 1021 /* This table must be updated with the overloading functions. */ 1166 /* This table must be updated with the overloading functions. 1167 * It should also hold NOP functions for functions which are of the 1168 * not required type. 1169 */ 1022 1170 static unsigned auFuncs[NBR_OF_KRNLIMPORTS] = 1023 1171 { 1024 (unsigned)myldrRead, 1025 (unsigned)myldrOpen, 1026 (unsigned)myldrClose, 1027 (unsigned)myLDRQAppType, 1028 (unsigned)myldrEnum32bitRelRecs, 1029 0, 1030 0, 1031 0, 1032 0, 1033 0, 1034 0, 1035 0, 1036 0, 1037 (unsigned)&mytkExecPgm, 1038 0, 1039 0, 1040 0, 1041 0 1172 (unsigned)myldrRead, /* 0 */ 1173 (unsigned)myldrOpen, /* 1 */ 1174 (unsigned)myldrClose, /* 2 */ 1175 (unsigned)myLDRQAppType, /* 3 */ 1176 (unsigned)myldrEnum32bitRelRecs,/* 4 */ 1177 0, /* 5 */ 1178 0, /* 6 */ 1179 0, /* 7 */ 1180 0, /* 8 */ 1181 0, /* 9 */ 1182 0, /* 10 */ 1183 0, /* 11 */ 1184 0, /* 12 */ 1185 (unsigned)&mytkExecPgm, /* 13 */ 1186 (unsigned)&mytkStartProcess, /* 14 */ 1187 0, /* 15 */ 1188 0, /* 16 */ 1189 0, /* 17 */ 1190 0, /* 18 */ 1191 0, /* 19 */ 1192 (unsigned)myldrOpenPath, /* 20 */ 1193 0, /* 21 */ 1194 0, /* 22 */ 1195 0, /* 23 */ 1196 0, /* 24 */ 1197 0, /* 25 */ 1198 0, /* 26 */ 1199 0, /* 27 */ 1200 0, /* 28 */ 1201 0, /* 29 */ 1202 0, /* 30 */ 1203 0, /* 31 */ 1204 0, /* 32 */ 1205 0, /* 33 */ 1206 0, /* 34 */ 1207 0, /* 35 */ 1208 0, /* 36 */ 1209 0, /* 37 */ 1210 0, /* 38 */ 1211 0, /* 39 */ 1212 0, /* 40 */ 1213 (unsigned)nopSecPathFromSFN, /* 41 */ 1042 1214 }; 1043 1044 1215 int i; 1045 1216 int cb; 1046 1217 int cbmin; 1218 1219 #ifdef R3TST 1220 R3TstFixImportTab(); 1221 #endif 1047 1222 1048 1223 /* … … 1052 1227 { 1053 1228 /* EPT_VARIMPORTs are skipped */ 1054 if (( _aImportTab[i].fType & ~EPT_BIT_MASK) == EPT_VARIMPORT)1229 if ((aImportTab[i].fType & ~EPT_BIT_MASK) == EPT_VARIMPORT) 1055 1230 continue; 1056 1057 if (EPT32BitEntry(_aImportTab[i])) 1058 { 1059 cb = interpretFunctionProlog32((char*)_aImportTab[i].ulAddress, _aImportTab[i].fType == EPT_PROC32); 1231 /* EPT_NOT_REQ which is not found are set pointing to the nop function provided. */ 1232 if (!aImportTab[i].fFound && (aImportTab[i].fType & EPT_NOT_REQ)) 1233 { 1234 aImportTab[i].ulAddress = auFuncs[i]; 1235 continue; 1236 } 1237 1238 if (EPT32BitEntry(aImportTab[i])) 1239 { 1240 cb = interpretFunctionProlog32((char*)aImportTab[i].ulAddress, aImportTab[i].fType == EPT_PROC32); 1060 1241 cbmin = 5; /* Size of the jump instruction */ 1061 1242 } 1062 1243 else 1063 1244 { 1064 cb = interpretFunctionProlog16((char*) _aImportTab[i].ulAddress, _aImportTab[i].fType == EPT_PROC16);1245 cb = interpretFunctionProlog16((char*)aImportTab[i].ulAddress, aImportTab[i].fType == EPT_PROC16); 1065 1246 cbmin = 7; /* Size of the far jump instruction */ 1066 1247 } … … 1068 1249 { 1069 1250 kprintf(("ImportTabInit: Verify failed for procedure no.%d, cb=%d\n", i, cb)); 1070 return 1;1251 return ERROR_D32_VERIFY_FAILED; 1071 1252 } 1072 1253 } … … 1077 1258 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 1078 1259 { 1079 switch ( _aImportTab[i].fType)1260 switch (aImportTab[i].fType & ~EPT_NOT_REQ) 1080 1261 { 1081 1262 /* … … 1087 1268 case EPT_PROC32: 1088 1269 { 1089 cb = interpretFunctionProlog32((char*) _aImportTab[i].ulAddress, TRUE);1090 _aImportTab[i].cbProlog = (char)cb;1270 cb = interpretFunctionProlog32((char*)aImportTab[i].ulAddress, TRUE); 1271 aImportTab[i].cbProlog = (char)cb; 1091 1272 if (cb >= 5 && cb + 5 < MAXSIZE_PROLOG) /* 5(1st): size of jump instruction in the function prolog which jumps to my overloading function */ 1092 1273 { /* 5(2nd): size of jump instruction which jumps back to the original function after executing the prolog copied to the callTab entry for this function. */ … … 1094 1275 * Copy function prolog which will be overwritten by the jmp to calltabl. 1095 1276 */ 1096 memcpy(callTab[i], (void*) _aImportTab[i].ulAddress, (size_t)cb);1277 memcpy(callTab[i], (void*)aImportTab[i].ulAddress, (size_t)cb); 1097 1278 1098 1279 /* … … 1102 1283 */ 1103 1284 callTab[i][cb] = 0xE9; /* jmp */ 1104 *(unsigned long*)(void*)&callTab[i][cb+1] = _aImportTab[i].ulAddress + cb - (unsigned long)&callTab[i][cb+5];1285 *(unsigned long*)(void*)&callTab[i][cb+1] = aImportTab[i].ulAddress + cb - (unsigned long)&callTab[i][cb+5]; 1105 1286 1106 1287 /* 1107 1288 * Jump from original function to my function - an cli(?) could be needed here 1108 1289 */ 1109 *(char*) _aImportTab[i].ulAddress = 0xE9; /* jmp */1110 *(unsigned long*)( _aImportTab[i].ulAddress + 1) = auFuncs[i] - (_aImportTab[i].ulAddress + 5);1290 *(char*)aImportTab[i].ulAddress = 0xE9; /* jmp */ 1291 *(unsigned long*)(aImportTab[i].ulAddress + 1) = auFuncs[i] - (aImportTab[i].ulAddress + 5); 1111 1292 } 1112 1293 else 1113 1294 { /* !fatal! - this could never happen really... */ 1114 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i));1295 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i)); 1115 1296 Int3(); /* ipe - later! */ 1116 return 1;1297 return ERROR_D32_VERIFY_FAILED; 1117 1298 } 1118 1299 break; … … 1129 1310 Int3(); 1130 1311 1131 cb = interpretFunctionProlog16((char*) _aImportTab[i].ulAddress, TRUE);1132 _aImportTab[i].cbProlog = (char)cb;1312 cb = interpretFunctionProlog16((char*)aImportTab[i].ulAddress, TRUE); 1313 aImportTab[i].cbProlog = (char)cb; 1133 1314 if (cb >= 8 && cb + 7 < MAXSIZE_PROLOG) /* 8: size of a 16:32 jump which jumps to my overloading function (prefixed with 66h in a 16-bit segment) */ 1134 1315 { /* 7: size of a 16:32 jump which is added to the call tab */ … … 1136 1317 * Copy function prolog which is to be overwritten. 1137 1318 */ 1138 memcpy(callTab[i], (void*) _aImportTab[i].ulAddress, (size_t)cb);1319 memcpy(callTab[i], (void*)aImportTab[i].ulAddress, (size_t)cb); 1139 1320 1140 1321 /* … … 1143 1324 */ 1144 1325 callTab[i][cb] = 0xEA; /* jmp far ptr */ 1145 *(unsigned long*)(void*)&callTab[i][cb+1] = _aImportTab[i].offObject;1146 *(unsigned short*)(void*)&callTab[i][cb+5] = _aImportTab[i].usSel;1326 *(unsigned long*)(void*)&callTab[i][cb+1] = aImportTab[i].offObject; 1327 *(unsigned short*)(void*)&callTab[i][cb+5] = aImportTab[i].usSel; 1147 1328 1148 1329 /* … … 1150 1331 * 0x66 0xEA <four byte target address> <two byte target selector> 1151 1332 */ 1152 *(char*)( _aImportTab[i].ulAddress ) = 0x66; /* operandsize prefix */1153 *(char*)( _aImportTab[i].ulAddress + 1) = 0xEA; /* jmp far ptr */1154 *(unsigned long*)( _aImportTab[i].ulAddress + 2) = auFuncs[i]; /* FIXME? */1155 *(unsigned short*)( _aImportTab[i].ulAddress + 6) = _R0FlatCS16; /* FIXME */1333 *(char*)(aImportTab[i].ulAddress ) = 0x66; /* operandsize prefix */ 1334 *(char*)(aImportTab[i].ulAddress + 1) = 0xEA; /* jmp far ptr */ 1335 *(unsigned long*)(aImportTab[i].ulAddress + 2) = auFuncs[i]; /* FIXME? */ 1336 *(unsigned short*)(aImportTab[i].ulAddress + 6) = _R0FlatCS16; /* FIXME */ 1156 1337 } 1157 1338 else 1158 1339 { /* !fatal! - this could never happen really... */ 1159 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i));1340 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i)); 1160 1341 Int3(); /* ipe - later! */ 1161 return 1;1342 return ERROR_D32_VERIFY_FAILED; 1162 1343 } 1163 1344 break; … … 1171 1352 case EPT_PROCIMPORT32: 1172 1353 { 1173 cb = interpretFunctionProlog32((char*) _aImportTab[i].ulAddress, FALSE);1174 _aImportTab[i].cbProlog = (char)cb;1354 cb = interpretFunctionProlog32((char*)aImportTab[i].ulAddress, FALSE); 1355 aImportTab[i].cbProlog = (char)cb; 1175 1356 if (cb > 0) /* Since no prolog part is copied to the function table, it's ok as long as the prolog has been recognzied. */ 1176 1357 { … … 1181 1362 */ 1182 1363 callTab[i][0] = 0xE9; /* jmp */ 1183 *(unsigned*)(void*)&callTab[i][1] = _aImportTab[i].ulAddress - (unsigned)&callTab[i][5];1364 *(unsigned*)(void*)&callTab[i][1] = aImportTab[i].ulAddress - (unsigned)&callTab[i][5]; 1184 1365 } 1185 1366 else 1186 1367 { /* !fatal! - this should never really happen... */ 1187 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i));1368 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i)); 1188 1369 Int3(); /* ipe - later! */ 1189 return 1;1370 return ERROR_D32_VERIFY_FAILED; 1190 1371 } 1191 1372 break; … … 1199 1380 case EPT_PROCIMPORT16: 1200 1381 { 1201 cb = interpretFunctionProlog16((char*) _aImportTab[i].ulAddress, FALSE);1202 _aImportTab[i].cbProlog = (char)cb;1382 cb = interpretFunctionProlog16((char*)aImportTab[i].ulAddress, FALSE); 1383 aImportTab[i].cbProlog = (char)cb; 1203 1384 if (cb > 0) /* Since no prolog part is copied to the function table, it's ok as long as the prolog has been recognzied. */ 1204 1385 { … … 1208 1389 */ 1209 1390 callTab[i][0] = 0xEA; /* jmp far ptr */ 1210 *(unsigned long*)(void*)&callTab[i][1] = _aImportTab[i].offObject;1211 *(unsigned short*)(void*)&callTab[i][5] = _aImportTab[i].usSel;1391 *(unsigned long*)(void*)&callTab[i][1] = aImportTab[i].offObject; 1392 *(unsigned short*)(void*)&callTab[i][5] = aImportTab[i].usSel; 1212 1393 } 1213 1394 else 1214 1395 { /* !fatal! - this should never really happen... */ 1215 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i));1396 kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i)); 1216 1397 Int3(); /* ipe - later! */ 1217 return 1;1398 return ERROR_D32_VERIFY_FAILED; 1218 1399 } 1219 1400 break; … … 1231 1412 case EPT_VARIMPORT32: 1232 1413 case EPT_VARIMPORT16: 1233 _aImportTab[i].cbProlog = (char)0;1234 *(unsigned long*)(void*)&callTab[i][0] = _aImportTab[i].ulAddress;1235 *(unsigned long*)(void*)&callTab[i][4] = _aImportTab[i].offObject;1236 *(unsigned short*)(void*)&callTab[i][8] = _aImportTab[i].usSel;1237 *(unsigned short*)(void*)&callTab[i][0xa] = (unsigned short) _aImportTab[i].offObject;1238 *(unsigned short*)(void*)&callTab[i][0xc] = _aImportTab[i].usSel;1414 aImportTab[i].cbProlog = (char)0; 1415 *(unsigned long*)(void*)&callTab[i][0] = aImportTab[i].ulAddress; 1416 *(unsigned long*)(void*)&callTab[i][4] = aImportTab[i].offObject; 1417 *(unsigned short*)(void*)&callTab[i][8] = aImportTab[i].usSel; 1418 *(unsigned short*)(void*)&callTab[i][0xa] = (unsigned short)aImportTab[i].offObject; 1419 *(unsigned short*)(void*)&callTab[i][0xc] = aImportTab[i].usSel; 1239 1420 break; 1240 1421 … … 1242 1423 kprintf(("ImportTabInit: unsupported type. (procedure no.%d, cb=%d)\n", i, cb)); 1243 1424 Int3(); /* ipe - later! */ 1244 return 1;1425 return ERROR_D32_VERIFY_FAILED; 1245 1426 } /* switch - type */ 1246 1427 } /* for */ … … 1248 1429 return NO_ERROR; 1249 1430 } 1250 #endif /* !DEBUGR3 */ 1251 1252 1253 1254 1255 /******************************************************************************* 1256 * Ring-3 Debug Stuff 1257 *******************************************************************************/ 1258 #ifdef DEBUGR3 1259 #include <stdio.h> 1260 1261 void main(void) 1431 1432 1433 #ifdef R3TST 1434 /** 1435 * Creates a fake kernel MTE, SMTE and OTE for use while testing in Ring3. 1436 * @returns Pointer to the fake kernel MTE. 1437 * @status completely implemented. 1438 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 1439 */ 1440 PMTE GetOS2KrnlMTETst(void) 1262 1441 { 1263 char ach_ldrRead[] = { 1264 0x55, 0x8b, 0xec, 0x8d, 0x65, 0xf8, 0x53, 0x56, 1265 0x57, 0x33, 0xd2, 0x42, 0x89, 0x55, 0xf8, 0x38, 1266 0x35, 0xce, 0x70, 0x00, 0x00, 0x75, 0x4d, 0x8b, 1267 0x55, 0x08, 0x66, 0x83, 0xfa, 0xff, 0x74, 0x62 1268 }; 1269 char ach_ldrOpen[] = { 1270 0x55, 0x8b, 0xec, 0x33, 0xc0, 0x38, 0x05, 0xce, 1271 0x70, 0x00, 0x00, 0x75, 0x4b, 0x50, 0xff, 0x75, 1272 0x08, 0x6a, 0x01, 0x68, 0xa3, 0x00, 0x00, 0x00, 1273 0xff, 0x75, 0x0c, 0xff, 0x15, 0xc4, 0xc1, 0x0d 1274 }; 1275 char ach_ldrClose[] = { 1276 0x55, 0x8b, 0xec, 0x33, 0xc0, 0x38, 0x05, 0xce, 1277 0x70, 0x00, 0x00, 0x75, 0x13, 0x8b, 0x55, 0x08, 1278 0x0f, 0xb7, 0xd2, 0x66, 0x83, 0xfa, 0xff, 0x74, 1279 0x07, 0x52, 0xff, 0x15, 0xcc, 0xc1, 0x0d, 0x00 1280 }; 1281 char ach_LDRQAppType[] = { 1282 0x55, 0x8b, 0x0d, 0xa0, 0x0a, 0x00, 0x00, 0x8b, 1283 0xec, 0x83, 0xec, 0x3c, 0x53, 0x81, 0xc1, 0x24, 1284 0x06, 0x00, 0x00, 0x57, 0x56, 0x6a, 0xff, 0x66, 1285 0xc7, 0x45, 0xc6, 0x00, 0x00, 0x51, 0xe8, 0x38 1286 }; 1287 char ach_ldrEnum32bitRelRecs[] = { 1288 0x55, 0xa1, 0xe8, 0xcf, 0x0d, 0x00, 0x8b, 0xec, 1289 0x83, 0xec, 0x5c, 0x53, 0x8b, 0x55, 0x08, 0x57, 1290 0x56, 0x8b, 0x52, 0x04, 0xf6, 0x40, 0x04, 0x80, 1291 0x89, 0x55, 0xfc, 0x0f, 0x84, 0x10, 0x01, 0x00 1292 }; 1293 char ach_IOSftOpen[] = { 1294 0x55, 0x8b, 0xec, 0x8d, 0xa5, 0xa0, 0xfe, 0xff, 1295 0xff, 0xf6, 0x05, 0x95, 0x2d, 0x00, 0x00, 0x80, 1296 0x74, 0x13, 0x66, 0x68, 0x50, 0x30, 0xff, 0x75, 1297 0x08, 0x6a, 0x3c, 0x6a, 0x06, 0xe8, 0x5a, 0x03 1298 }; 1299 char ach_IOSftClose[] = { 1300 0x55, 0x8b, 0xec, 0x8d, 0xa5, 0x28, 0xff, 0xff, 1301 0xff, 0xf6, 0x05, 0x95, 0x2d, 0x00, 0x00, 0x80, 1302 0x74, 0x16, 0x50, 0x66, 0x68, 0x51, 0x30, 0x8b, 1303 0x45, 0x08, 0x50, 0x6a, 0x0c, 0x6a, 0x06, 0xe8 1304 }; 1305 char ach_IOSftTransPath[] = { 1306 0x55, 0x8b, 0xec, 0x8d, 0xa5, 0xd8, 0xfd, 0xff, 1307 0xff, 0x53, 0x56, 0x57, 0x1e, 0x06, 0xa1, 0xa4, 1308 0x0a, 0x00, 0x00, 0x66, 0x8d, 0x9d, 0xe2, 0xfe, 1309 0xff, 0xff, 0x66, 0x89, 0x98, 0xf6, 0x01, 0x00 1310 }; 1311 char ach_IOSftReadAt[] = { 1312 0xb8, 0xc4, 0x68, 0x14, 0x00, 0xeb, 0x05, 0xb8, 1313 0xcc, 0x68, 0x14, 0x00, 0x55, 0x8b, 0xec, 0x8d, 1314 0xa5, 0x20, 0xff, 0xff, 0xff, 0xf6, 0x05, 0x95, 1315 0x2d, 0x00, 0x00, 0x80, 0x74, 0x28, 0x50, 0x66 1316 }; 1317 char ach_IOSftWriteAt[] = { 1318 0xb8, 0xcc, 0x68, 0x14, 0x00, 0x55, 0x8b, 0xec, 1319 0x8d, 0xa5, 0x20, 0xff, 0xff, 0xff, 0xf6, 0x05, 1320 0x95, 0x2d, 0x00, 0x00, 0x80, 0x74, 0x28, 0x50, 1321 0x66, 0x68, 0x52, 0x30, 0x8b, 0x45, 0x08, 0x25 1322 }; 1323 char ach_SftFileSize[] = { 1324 0x55, 0x8b, 0xec, 0x8d, 0xa5, 0x28, 0xff, 0xff, 1325 0xff, 0x57, 0x56, 0x53, 0xc6, 0x85, 0x2b, 0xff, 1326 0xff, 0xff, 0x00, 0x8b, 0x35, 0xa4, 0x0a, 0x00, 1327 0x00, 0xf6, 0x46, 0x04, 0x01, 0x74, 0x0a, 0x80 1328 }; 1329 char ach_VMAllocMem[] = { 1330 0xa1, 0xe8, 0xcf, 0x0d, 0x00, 0x55, 0x8b, 0xec, 1331 0x83, 0xec, 0x44, 0x53, 0x57, 0xf6, 0x40, 0x04, 1332 0x80, 0x56, 0x0f, 0x84, 0x34, 0x01, 0x00, 0x00, 1333 0xf6, 0x00, 0x40, 0x74, 0x44, 0xa1, 0xcc, 0x02 1334 }; 1335 char ach_VMGetOwner[] = { 1336 0x55, 0x8b, 0xec, 0x83, 0xec, 0x30, 0x57, 0x66, 1337 0x8b, 0x4d, 0x08, 0x66, 0x89, 0x4d, 0xd8, 0xf6, 1338 0xc1, 0x04, 0x75, 0x39, 0x80, 0x3d, 0x40, 0x8c, 1339 0x00, 0x00, 0x00, 0x74, 0x07, 0xa1, 0xac, 0x0a 1340 }; 1341 char achg_tkExecPgm[] = { 1342 0x55, 0x8b, 0xec, 0x8d, 0x65, 0xa4, 0x66, 0x89, 1343 0x5d, 0xf4, 0x66, 0x8c, 0x45, 0xf6, 0x66, 0x89, 1344 0x55, 0xfc, 0x66, 0x8c, 0x5d, 0xfe, 0x66, 0x89, 1345 0x75, 0xf0, 0x66, 0x89, 0x7d, 0xf2, 0xc7, 0x45 1346 }; 1347 char achf_FuStrLenZ[] = { 1348 0x6a, 0x02, 0x52, 0x66, 0x55, 0x0f, 0xa8, 0x68, 1349 0x0c, 0x00, 0x0f, 0xa9, 0x65, 0x67, 0x66, 0x8b, 1350 0x2d, 0xa8, 0x0a, 0x00, 0x00, 0x65, 0x67, 0xff, 1351 0xb5, 0xb4, 0x1f, 0x00, 0x00, 0x65, 0x67, 0x66 1352 }; 1353 char achf_FuStrLen[] = { 1354 0x6a, 0x02, 0x52, 0x66, 0x55, 0x0f, 0xa8, 0x68, 1355 0x0c, 0x00, 0x0f, 0xa9, 0x65, 0x67, 0x66, 0x8b, 1356 0x2d, 0xa8, 0x0a, 0x00, 0x00, 0x65, 0x67, 0xff, 1357 0xb5, 0xb4, 0x1f, 0x00, 0x00, 0x65, 0x67, 0x66 1358 }; 1359 char achf_FuBuff[] = { 1360 0x6a, 0x02, 0x52, 0x66, 0x55, 0x0f, 0xa8, 0x68, 1361 0x0c, 0x00, 0x0f, 0xa9, 0x65, 0x67, 0x66, 0x8b, 1362 0x2d, 0xa8, 0x0a, 0x00, 0x00, 0x65, 0x67, 0xff, 1363 0xb5, 0xb4, 0x1f, 0x00, 0x00, 0x65, 0x67, 0x66 1364 }; 1365 char achf_VMObjHandleInfo[] = { 1366 0x55, 0x8B, 0x0D, 0x9C, 0xBF, 0x0D, 0x00, 0x8B, 1367 0xEC, 0x83, 0xEC, 0x0C, 0x53, 0x57, 0x8D, 0x55, 1368 0xF8 1369 }; 1370 1371 1372 char *aProcs[] = 1442 static MTE KrnlMTE; 1443 static SMTE KrnlSMTE; 1444 1445 KrnlMTE.mte_swapmte = &KrnlSMTE; 1446 KrnlSMTE.smte_objtab = &aKrnlOTE[0]; 1447 KrnlSMTE.smte_objcnt = cObjectsFake; 1448 1449 return &KrnlMTE; 1450 } 1451 1452 /** 1453 * -Ring-3 testing- 1454 * Changes the entries in aImportTab to point to their fake equivalents. 1455 * @returns void 1456 * @param void 1457 * @status completely implemented. 1458 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 1459 * @remark Called before the aImportTab array is used/verified. 1460 */ 1461 VOID R3TstFixImportTab(VOID) 1462 { 1463 struct _TstFaker 1373 1464 { 1374 ach_ldrRead , 1375 ach_ldrOpen , 1376 ach_ldrClose , 1377 ach_LDRQAppType , 1378 ach_ldrEnum32bitRelRecs, 1379 ach_IOSftOpen , 1380 ach_IOSftClose , 1381 ach_IOSftTransPath , 1382 ach_IOSftReadAt , 1383 ach_IOSftWriteAt , 1384 ach_SftFileSize , 1385 ach_VMAllocMem , 1386 ach_VMGetOwner , 1387 achg_tkExecPgm , 1388 achf_FuStrLenZ , 1389 achf_FuStrLen , 1390 achf_FuBuff , 1391 achf_VMObjHandleInfo , 1392 NULL 1465 unsigned uAddress; 1466 int fObj; /* 1 = CODE32, 2 = CODE16, 3 = DATA32, 4 = DATA16 */ 1467 } 1468 aTstFakers[NBR_OF_KRNLIMPORTS] = 1469 { 1470 {(unsigned)fakeldrRead, 1}, 1471 {(unsigned)fakeldrOpen, 1}, 1472 {(unsigned)fakeldrClose, 1}, 1473 {(unsigned)fakeLDRQAppType, 1}, 1474 {(unsigned)fakeldrEnum32bitRelRecs, 1}, 1475 {(unsigned)fakeIOSftOpen, 1}, 1476 {(unsigned)fakeIOSftClose, 1}, 1477 {(unsigned)fakeIOSftTransPath, 1}, 1478 {(unsigned)fakeIOSftReadAt, 1}, 1479 {(unsigned)fakeIOSftWriteAt, 1}, 1480 {(unsigned)fakeSftFileSize, 1}, 1481 {(unsigned)fakeVMAllocMem, 1}, 1482 {(unsigned)fakeVMGetOwner, 1}, 1483 {(unsigned)fakeg_tkExecPgm, 1}, 1484 {(unsigned)fake_tkStartProcess, 1}, 1485 {(unsigned)fakef_FuStrLenZ, 2}, 1486 {(unsigned)fakef_FuStrLen, 2}, 1487 {(unsigned)fakef_FuBuff, 2}, 1488 {(unsigned)fakeVMObjHandleInfo, 1}, 1489 {(unsigned)fakeldrASMpMTEFromHandle,1}, 1490 {(unsigned)fakeldrOpenPath, 1}, 1491 {(unsigned)fakeLDRClearSem, 1}, 1492 {(unsigned)fakeldrFindModule, 1}, 1493 {(unsigned)fakeKSEMRequestMutex, 1}, 1494 {(unsigned)fakeKSEMReleaseMutex, 1}, 1495 {(unsigned)fakeKSEMQueryMutex, 1}, 1496 {(unsigned)fakeKSEMInit, 1}, 1497 {(unsigned)&fakeLDRSem, 3}, 1498 {(unsigned)&fakeLDRLibPath, 3}, 1499 {(unsigned)fakeTKSuBuff, 1}, 1500 {(unsigned)fakeTKFuBuff, 1}, 1501 {(unsigned)fakeTKFuBufLen, 1}, 1502 {(unsigned)fakeldrValidateMteHandle,1}, 1503 {(unsigned)&fakepTCBCur, 4}, 1504 {(unsigned)&fakepPTDACur, 4}, 1505 {(unsigned)&fakeptda_start, 4}, 1506 {(unsigned)&fakeptda_environ, 4}, 1507 {(unsigned)&fakeptda_ptdasem, 4}, 1508 {(unsigned)&fakeptda_module, 4}, 1509 {(unsigned)&fakeptda_pBeginLIBPATH, 4}, 1510 {(unsigned)&fakeldrpFileNameBuf, 3}, 1511 {(unsigned)&fakeSecPathFromSFN, 3} 1393 1512 }; 1394 1513 int i; 1395 1514 1396 /* loop thru procs */ 1397 for (i = 0; aProcs[i] != NULL; i++) 1515 for (i = 0; i < NBR_OF_KRNLIMPORTS; i++) 1398 1516 { 1399 unsigned cb; 1400 printf("Proc.no.%i\n", i); 1401 if (i < 14 || i > 16) 1402 cb = interpretFunctionProlog32(aProcs[i], i < 5 || i == 13); 1403 else 1404 cb = interpretFunctionProlog16(aProcs[i], FALSE); 1405 printf(" cb=%d\n\n", cb); 1406 } 1517 switch (aImportTab[i].fType) 1518 { 1519 case EPT_PROC32: 1520 if (aTstFakers[i].fObj != 1) 1521 kprintf(("R3TstFixImportTab: invalid segment config for entry %i. (PROC32)\n", i)); 1522 break; 1523 case EPT_PROCIMPORT32: 1524 if (aTstFakers[i].fObj != 1) 1525 kprintf(("R3TstFixImportTab: invalid segment config for entry %i. (PROCIMPORT32)\n", i)); 1526 break; 1527 case EPT_PROCIMPORT16: 1528 if (aTstFakers[i].fObj != 2) 1529 kprintf(("R3TstFixImportTab: invalid segment config for entry %i. (PROCIMPORT16)\n", i)); 1530 break; 1531 case EPT_VARIMPORT32: 1532 case EPT_VARIMPORT16: 1533 if (aTstFakers[i].fObj != 3 && aTstFakers[i].fObj != 4) 1534 kprintf(("R3TstFixImportTab: invalid segment config for entry %i. (VARIMPORT32/16)\n", i)); 1535 break; 1536 } /* switch - type */ 1537 1538 aImportTab[i].ulAddress = aTstFakers[i].uAddress; 1539 switch (aTstFakers[i].fObj) 1540 { 1541 case 1: 1542 aImportTab[i].usSel = GetSelectorCODE32(); 1543 aImportTab[i].offObject = aTstFakers[i].uAddress - (unsigned)&CODE32START; 1544 break; 1545 case 2: 1546 aImportTab[i].usSel = GetSelectorCODE16(); 1547 aImportTab[i].offObject = aTstFakers[i].uAddress - (unsigned)&CODE16START; 1548 break; 1549 case 3: 1550 aImportTab[i].usSel = GetSelectorDATA32(); 1551 aImportTab[i].offObject = aTstFakers[i].uAddress - (unsigned)&DATA32START; 1552 break; 1553 case 4: 1554 aImportTab[i].usSel = GetSelectorDATA16(); 1555 aImportTab[i].offObject = aTstFakers[i].uAddress - (unsigned)&DATA16START; 1556 break; 1557 default: 1558 kprintf(("R3TstFixImportTab: invalid segment config for entry %i.\n", i)); 1559 } 1560 } /* for */ 1407 1561 } 1408 1562 #endif 1563 1564 /** 1565 * Dummy nop function if SecPathFromSFN isn't found. 1566 */ 1567 PSZ SECCALL nopSecPathFromSFN(SFN hFile) 1568 { 1569 NOREF(hFile); 1570 return NULL; 1571 } -
trunk/src/win32k/dev32/devfirst.asm
r2898 r4164 1 ; $Id: devfirst.asm,v 1. 5 2000-02-25 18:15:03bird Exp $1 ; $Id: devfirst.asm,v 1.6 2000-09-02 21:07:58 bird Exp $ 2 2 ; 3 3 ; DevFirst - entrypoint and segment definitions … … 19 19 ; 20 20 public CODE16START 21 public CODE16_INITSTART 21 22 public DATA16START 22 23 public DATA16START 23 24 public DATA16_BSSSTART 24 25 public DATA16_CONSTSTART 26 public DATA16_INITSTART 25 27 public CODE16START 26 28 public CODE32START … … 60 62 ;$win32ki entry point 61 63 _strategyAsm0: 64 ; int 3 62 65 push 0 63 66 jmp _strategyAsm … … 65 68 ;$win32k entry point 66 69 _strategyAsm1: 70 ; int 3 67 71 push 1 68 72 jmp _strategyAsm … … 101 105 call far ptr FLAT:GETKERNELINFO32 102 106 pop ds 103 ret n107 ret 104 108 _CallGetKernelInfo32 ENDP 105 109 … … 155 159 ; @author knut st. osmundsen 156 160 ; @remark es is cs, not ds! 157 _SSToDS_16a proc near161 _SSToDS_16a proc NEAR 158 162 assume CS:CODE16, DS:DATA16, ES:NOTHING 159 163 mov edx, ds:_TKSSBase16 ; get pointer held by _TKSSBase16 (pointer to stack base) … … 168 172 mov edx, eax 169 173 shr edx, 16 ; dx high 16-bit of 32-bit stack pointer. 170 ret 174 retn 171 175 _SSToDS_16a endp 172 176 … … 218 222 CODE32 ends 219 223 224 CODE16_INIT segment 225 CODE16_INITSTART label byte 226 CODE16_INIT ends 220 227 221 228 DATA16 segment … … 231 238 DATA16_CONST ends 232 239 240 DATA16_INIT segment 241 DATA16_INITSTART label byte 242 DATA16_INIT ends 243 233 244 DATA32 segment 234 245 DATA32START label byte -
trunk/src/win32k/dev32/devlast.asm
r2898 r4164 1 ; $Id: devlast.asm,v 1. 5 2000-02-25 18:15:03bird Exp $1 ; $Id: devlast.asm,v 1.6 2000-09-02 21:07:58 bird Exp $ 2 2 ; 3 3 ; DevLast - the object file termintating the resident part of the objects. … … 21 21 ; Exported symbols 22 22 ; 23 public CODE16END24 23 public DATA16END 25 24 public DATA16_BSSEND 26 25 public DATA16_CONSTEND 26 public DATA16_INITEND 27 public DATA16_INIT_BSSEND 28 public DATA16_INIT_CONSTEND 27 29 public CODE16END 30 public CODE16_INITEND 28 31 public CODE32END 29 32 public DATA32END … … 32 35 public _VFTEND 33 36 public EH_DATAEND 37 34 38 public _CallR0Init32 35 39 public _CallVerifyImportTab32 … … 52 56 DATA16_CONST ends 53 57 58 DATA16_INIT segment 59 DATA16_INITEND db ? 60 DATA16_INIT ends 61 62 DATA16_INIT_BSS segment 63 DATA16_INIT_BSSEND db ? 64 DATA16_INIT_BSS ends 65 66 DATA16_INIT_CONST segment 67 DATA16_INIT_CONSTEND db ? 68 DATA16_INIT_CONST ends 69 70 CODE16 segment 71 CODE16END db ? 72 CODE16 ends 54 73 55 74 extrn R0INIT32:FAR 56 75 extrn VERIFYIMPORTTAB32:FAR 57 76 58 CODE16 segment 59 CODE16END db ? 60 77 CODE16_INIT segment 61 78 ;; 62 79 ; Thunk procedure for R0Init32. … … 67 84 ; @author knut st. osmundsen 68 85 _CallR0Init32 PROC NEAR 69 ASSUME CS:CODE16 86 ASSUME CS:CODE16_INIT 70 87 push ds 71 88 push word ptr [esp+6] ; push high word. … … 73 90 call far ptr FLAT:R0INIT32 74 91 pop ds 75 ret n92 ret 76 93 _CallR0Init32 ENDP 77 94 … … 84 101 ; @author knut st. osmundsen 85 102 _CallVerifyImportTab32 PROC NEAR 86 ASSUME CS:CODE16 103 ASSUME CS:CODE16_INIT 87 104 push ds 88 105 call far ptr FLAT:VERIFYIMPORTTAB32 89 106 pop ds 90 ret n107 ret 91 108 _CallVerifyImportTab32 ENDP 92 109 93 CODE16 ends 110 CODE16_INITEND LABEL BYTE 111 CODE16_INIT ends 94 112 95 113 … … 118 136 EH_DATA ends 119 137 138 120 139 END 121 140 -
trunk/src/win32k/elf2lx/elf2lx.cpp
r2924 r4164 1 /* $Id: elf2lx.cpp,v 1. 3 2000-02-27 02:13:19bird Exp $1 /* $Id: elf2lx.cpp,v 1.4 2000-09-02 21:07:58 bird Exp $ 2 2 * 3 3 * Elf2Lx - implementation. … … 28 28 #include <newexe.h> /* OS/2 NE structs and definitions. */ 29 29 #include <exe386.h> /* OS/2 LX structs and definitions. */ 30 31 #include "devSegDf.h" /* Win32k segment definitions. */ 30 32 31 33 #include "malloc.h" /* win32k malloc (resident). Not C library! */ -
trunk/src/win32k/include/LdrCalls.h
r2501 r4164 1 /* $Id: LdrCalls.h,v 1. 3 2000-01-22 18:21:00bird Exp $1 /* $Id: LdrCalls.h,v 1.4 2000-09-02 21:08:02 bird Exp $ 2 2 * 3 3 * Prototypes for the loader overrided function. … … 35 35 */ 36 36 extern ULONG LDRCALL ldrOpen( /* retd 0x0c */ 37 PSFN p1,/* ebp + 0x08 */38 PCHAR p2,/* ebp + 0x0c */39 ULONG p3/* ebp + 0x10 */40 ); 41 42 ULONG LDRCALL myldrOpen(PSFN ,PCHAR,ULONG);37 PSFN p1, /* ebp + 0x08 */ 38 PCHAR p2, /* ebp + 0x0c */ 39 PULONG p3 /* ebp + 0x10 */ 40 ); 41 42 ULONG LDRCALL myldrOpen(PSFN phFile, PSZ pszFilename, PULONG pfl); 43 43 44 44 … … 47 47 */ 48 48 extern ULONG LDRCALL ldrRead( /* retd 0x18 */ 49 SFN p1,/* ebp + 0x08 */50 ULONG p2,/* ebp + 0x0c */51 PVOID p3,/* ebp + 0x10 */52 ULONG p4,/* ebp + 0x14 */53 ULONG p5,/* ebp + 0x18 */54 PMTE p6/* ebp + 0x1c */49 SFN hFile, /* ebp + 0x08 */ 50 ULONG ulOffset, /* ebp + 0x0c */ 51 PVOID pvBuffer, /* ebp + 0x10 */ 52 ULONG fpBuffer, /* ebp + 0x14 */ 53 ULONG cbToRead, /* ebp + 0x18 */ 54 PMTE pMTE /* ebp + 0x1c */ 55 55 ); 56 56 57 57 ULONG LDRCALL myldrRead( 58 SFN hFile,59 ULONG ulOffset,60 PVOID pBuffer,61 ULONG ulFlags,62 ULONG ulBytesToRead,63 PMTE pMTE58 SFN hFile, 59 ULONG ulOffset, 60 PVOID pvBuffer, 61 ULONG fpBuffer, 62 ULONG cbToRead, 63 PMTE pMTE 64 64 ); 65 65 … … 99 99 100 100 101 #if 0 102 /****************************************/ 103 /* _LDRLoadExe */ 104 /****************************************/ 105 extern int LDRCALL _LDRLoadExe( /* retd 0x08 */ 106 PCHAR pExeName, /* ebp + 0x08 */ 107 PULONG param2 /* ebp + 0x0c */ 108 ); 109 110 int LDRCALL myLDRLoadExe(PCHAR,PULONG); 111 112 113 114 /****************************************/ 115 /* _ldrGetResource */ 116 /****************************************/ 117 extern int LDRCALL _ldrGetResource( /* retd 0x14 - 20d */ 118 USHORT idType, /* ebp + 0x08 */ 119 ULONG idName, /* ebp + 0x0c */ 120 USHORT hMod, /* ebp + 0x10 */ 121 PPVOID ppRes, /* ebp + 0x14 */ 122 ULONG ulP5 /* ebp + 0x18 */ 123 ); 124 125 int LDRCALL myldrGetResource(USHORT,ULONG,USHORT,PPVOID,ULONG); 126 127 128 129 /****************************************/ 130 /* _ldrOpenNewExe */ 131 /****************************************/ 132 extern int LDRCALL _ldrOpenNewExe( /* retd 0x10 - 16d */ 133 PCHAR pszName, /* ebp + 0x08 */ 134 USHORT lenName, /* ebp + 0x0c */ 135 ULONG ulP3, /* ebp + 0x10 */ 136 ULONG ulP4 /* ebp + 0x14 */ 137 ); 138 139 int LDRCALL myldrOpenNewExe(PCHAR,USHORT,ULONG,ULONG); 140 141 142 143 /****************************************/ 144 /* _ldrCreateMte */ 145 /****************************************/ 146 extern int LDRCALL _ldrCreateMte( /* retd 0x08 */ 147 ULONG p1, /* ebp + 0x08 */ 148 ULONG p2 /* ebp + 0x0c */ 149 ); 150 151 int LDRCALL myldrCreateMte(ULONG,ULONG); 152 153 154 155 /****************************************/ 156 /* _ldrGetMte */ 157 /****************************************/ 158 extern int LDRCALL _ldrGetMte( /* retd 0x14 - 20d */ 159 ULONG p1, /* ebp + 0x08 */ 160 ULONG p2, /* ebp + 0x0c */ 161 ULONG p3, /* ebp + 0x10 */ 162 ULONG p4, /* ebp + 0x14 */ 163 ULONG p5 /* ebp + 0x18 */ 164 ); 165 166 int LDRCALL myldrGetMte(ULONG,ULONG,ULONG,ULONG,ULONG); 167 168 #endif 101 102 /** 103 * Loader local variables from KERNEL.SDF. 104 */ 105 typedef struct ldrlv_s /* #memb 12 size 39 (0x027) */ 106 { 107 PMTE lv_pmte; /* Pointer to mte. (ldrCreateMte/ldrXXX) */ 108 ULONG lv_lbufaddr; 109 ULONG lv_sbufaddr; 110 ULONG lv_lrecbufaddr; 111 ULONG lv_srecbufaddr; 112 ULONG lv_new_exe_off; 113 USHORT lv_sfn; /* Handle to the module being loaded */ 114 USHORT lv_hobmte; 115 ULONG lv_objnum; 116 ULONG lv_csmte; /* size of the swappable mte heap block. (ldrCreateMte) */ 117 USHORT lv_class; /* Object class CLASS_* defines in OS2Krnl (mteflags1) it seems. */ 118 /* CLASS_PROGRAM Program class. */ 119 /* CLASS_GLOBAL Global class. */ 120 /* CLASS_SPECIFIC Specific class, as against global. */ 121 /* CLASS_ALL (0) Nonspecific class all modules. */ 122 /* CLASS_MASK Class mask. */ 123 UCHAR lv_type; /* Type of executable image expected loaded. */ 124 } ldrlv_t; 125 126 127 /* 128 * Values of the lv_type byte. (Qualified guesses.) 129 */ 130 #define LVTYPE_EXE 0 /* Executable program. */ 131 #define LVTYPE_DLL 1 /* Dynamic Link Library. */ 132 #define LVTYPE_DD 2 /* Device Driver. */ 133 #define LVTYPE_IFS 3 /* Installable Filesystem. */ 134 #define LVTYPE_VDD 4 /* Virtual Device Driver (for VDMs). */ 135 136 137 138 /** 139 * ldrOpenPath 140 * @returns OS2 return code. 141 * pLdrLv->lv_sfn is set to filename handle. 142 * @param pachModname Pointer to modulename. Not zero terminated! 143 * @param cchModname Modulename length. 144 * @param pLdrLv Loader local variables? (Struct from KERNEL.SDF) 145 * @param pfl Pointer to flags which are passed on to ldrOpen. 146 * @sketch 147 * if !CLASS_GLOBAL or miniifs then 148 * ldrOpen(pachModName) 149 * else 150 * loop until no more libpath elements 151 * get next libpath element and add it to the modname. 152 * try open the modname 153 * if successfull then break the loop. 154 * endloop 155 * endif 156 */ 157 extern ULONG LDRCALL ldrOpenPath( /* retd 0x10 */ 158 PCHAR pachFilename, /* ebp + 0x08 */ 159 USHORT cchFilename, /* ebp + 0x0c */ 160 ldrlv_t * plv, /* ebp + 0x10 */ 161 PULONG pful /* ebp + 0x14 */ 162 ); 163 164 ULONG LDRCALL myldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful); 165 166 167 /** 168 * Finds a module if it's loaded. 169 * @returns NO_ERROR on success. 170 * OS/2 errorcode on error. 171 * @param pachFilename Pointer to module filename. 172 * @param cchFilename Length of modulefilename. 173 * @param usClass Module class. (CLASS_*) 174 * @param ppMTE Pointer to pMTE found. 175 * @sketch 176 */ 177 ULONG LDRCALL ldrFindModule(PCHAR pachFilename, USHORT cchFilename, USHORT usClass, PPMTE ppMTE); 178 179 180 /** 181 * LDRClearSem - Clears the loader semaphore. 182 * (It does some garbage collection on release.) 183 * @returns NO_ERROR on success. 184 * OS/2 error on failure. (ERROR_INTERRUPT?) 185 */ 186 extern ULONG LDRCALL LDRClearSem(void); 187 188 189 /** 190 * LDRRequestSem - Requests the loader semaphore.. 191 * @returns NO_ERROR if succesfully. 192 * OS2 errorcode on failure. (ERROR_INTERRUPT?) 193 */ 194 #define LDRRequestSem() KSEMRequestMutex(pLdrSem, (ULONG)-1) 195 196 197 /* 198 * Pointer to the loader semaphore. 199 */ 200 #ifdef _OS2KSEM_h_ 201 extern PKSEMMTX pLdrSem; 202 #endif 203 204 205 /** 206 * Validates an hMTE and gets the MTE pointer. 207 * @returns Pointer to MTE on success. 208 * NULL on error. 209 * @param hMTE MTE handle. 210 * @remark If you wan't to this faster: 211 * Use the hMTE as a HOB and get the HOB address (by using VMGetHandleInfo). 212 */ 213 extern PMTE LDRCALL ldrValidateMteHandle(HMTE hMTE); 214 215 216 /** 217 * Gets the pMTE from a hMTE. No checks. 218 * @returns Pointer to the pMTE for a given hMTE. 219 * @param hMTE Module handle. 220 * @sketch 221 */ 222 extern PMTE KRNLCALL ldrASMpMTEFromHandle(HMTE hMTE); 223 224 225 /** 226 * Pointer to the loader filename buffer. 227 * Upon return from ldrOpen (and ldrOpenPath which calls ldrOpen) this is 228 * set to the fully qualified filename of the file last opened (successfully). 229 */ 230 extern PSZ *pldrpFileNameBuf; 231 #define ldrpFileNameBuf (*pldrpFileNameBuf) 232 169 233 170 234 #ifdef __cplusplus -
trunk/src/win32k/include/ModuleBase.h
r2925 r4164 1 /* $Id: ModuleBase.h,v 1. 3 2000-02-27 02:16:43bird Exp $1 /* $Id: ModuleBase.h,v 1.4 2000-09-02 21:07:59 bird Exp $ 2 2 * 3 3 * ModuleBase - Declaration of the Basic module class. 4 4 * 5 * Copyright (c) 1999 knut st. osmundsen5 * Copyright (c) 1999-2000 knut st. osmundsen 6 6 * 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 9 */ 10 #ifndef _ MODULEBASE_H_11 #define _ MODULEBASE_H_10 #ifndef _modulebase_h_ 11 #define _modulebase_h_ 12 12 13 13 … … 73 73 * RING0: Map this to ldrRead with 0UL as flFlags. 74 74 * RING3: Implementes this function as a static function, ReadAt. 75 * ReadAtF: Same as ReadAt but two extra parameters; an additional f lag and a pointer to an MTE.76 * Used in the read method.75 * ReadAtF: Same as ReadAt but two extra parameters; an additional far pointer to the buffer and 76 * a MTE pointer. Used in the read method. 77 77 * RING0: Map directly to ldrRead. 78 78 * RING3: Map to ReadAt, ignoring the two extra parameters. … … 81 81 #define ReadAt(hFile, ulOffset, pvBuffer, cbToRead) \ 82 82 ldrRead(hFile, ulOffset, pvBuffer, 0UL, cbToRead, NULL) 83 #define ReadAtF(hFile, ulOffset, pvBuffer, cbToRead, flFlags, pMTE) \84 ldrRead(hFile, ulOffset, pvBuffer, f lFlags, cbToRead, pMTE)83 #define ReadAtF(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE) \ 84 ldrRead(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE) 85 85 #else 86 #define ReadAtF(hFile, ulOffset, pvBuffer, cbToRead, flFlags, pMTE) \86 #define ReadAtF(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE) \ 87 87 ReadAt(hFile, ulOffset, pvBuffer, cbToRead) 88 88 #endif … … 96 96 #endif 97 97 98 98 /* 99 * Make sure that pLdrLv is defined. 100 */ 101 #if !defined(RING0) && !defined(_ldrCalls_h_) 102 typedef struct ldrlv_s ldrlv_t; 103 #endif 99 104 100 105 /** … … 111 116 112 117 /** @cat Public Main methods */ 113 virtual ULONG init(PCSZ pszFilename); 114 virtual ULONG read(ULONG offLXFile, PVOID pvBuffer, ULONG cbToRead, ULONG flFlags, PMTE pMTE) = 0; 115 virtual ULONG applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage, 116 ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/ 118 virtual ULONG init(PCSZ pszFilename); 119 virtual ULONG read(ULONG offLXFile, PVOID pvBuffer, ULONG fpBuffer, ULONG cbToRead, PMTE pMTE) = 0; 120 virtual ULONG applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage, 121 ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/ 122 virtual ULONG openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful); /* (ldrOpenPath) */ 117 123 #ifndef RING0 118 virtual ULONG writeFile(PCSZ pszLXFilename);124 virtual ULONG writeFile(PCSZ pszLXFilename); 119 125 #endif 120 126 121 127 /** @cat public Helper methods */ 122 virtual VOID dumpVirtualLxFile() = 0; 123 BOOL queryIsModuleName(PCSZ pszFilename); 128 virtual VOID dumpVirtualLxFile() = 0; 129 BOOL queryIsModuleName(PCSZ pszFilename); 130 PCSZ getFilename(); 131 PCSZ getModuleName(); 124 132 125 133 /** @cat static print method */ … … 133 141 SFN hFile; /* filehandle */ 134 142 PSZ pszFilename; /* fullpath */ 135 PSZ pszModuleName; /* filename without extention. */143 PSZ pszModuleName; /* filename without path and extention. */ 136 144 137 145 /** @cat public static data. */ -
trunk/src/win32k/include/OS2KPTDA.h
r3829 r4164 1 /* $Id: OS2KPTDA.h,v 1. 1 2000-07-16 22:21:19 bird Exp $1 /* $Id: OS2KPTDA.h,v 1.2 2000-09-02 21:07:59 bird Exp $ 2 2 * 3 3 * PTDA access functions. … … 54 54 55 55 56 USHORT ptdaGet_ptda_environ(PPTDA pPTDA); 57 56 USHORT ptdaGet_ptda_environ(PPTDA pPTDA); 57 USHORT ptdaGet_ptda_module(PPTDA pPTDA); 58 HKSEMMTX ptda_ptda_ptdasem(PPTDA pPTDA); 58 59 59 60 #ifdef __cplusplus -
trunk/src/win32k/include/OS2KSEM.h
r3829 r4164 1 /* $Id: OS2KSEM.h,v 1. 1 2000-07-16 22:21:19 bird Exp $1 /* $Id: OS2KSEM.h,v 1.2 2000-09-02 21:07:59 bird Exp $ 2 2 * 3 3 * OS/2 kernel Semaphore functions. … … 16 16 * Defined Constants And Macros * 17 17 *******************************************************************************/ 18 #define KSEM_INDEFINITE_WAIT -1L 19 #define KSEM_IMMEDIATE_RETURN 0L 18 #define KSEM_INDEFINITE_WAIT -1UL 19 #define KSEM_IMMEDIATE_RETURN 0UL 20 21 /* 22 * Semaphore type. ( Used with the generic KSEM routines. ) 23 */ 24 #define KSEM_EVENT 0 25 #define KSEM_MUTEX 1 26 #define KSEM_SHARED 2 27 28 /* 29 * Sempahore flags. (according to SG24-4640-00) 30 */ 31 #define KSEM_DEFAULT 0 32 #define KSEM_NOINTERRUPT 1 33 #define KSEM_WRITE 2 34 #define KSEM_DISPLAYID 4 35 #define KSEM_NOBLOCKED 8 20 36 21 37 … … 23 39 * Structures and Typedefs * 24 40 *******************************************************************************/ 25 typedef ULONG HKSEM; /* Handle to kernel semaphore. */ 26 typedef HKSEM PHKSEM; /* Pointer to kernel semaphore handle. */ 27 typedef HKSEM HKMTX; /* Handle to kernel mutex semaphore. */ 28 typedef HKSEM HKEV; /* Handle to kernel event semaphore. */ 41 /* (This is according to SG24-4640-00.) */ 42 43 typedef struct _KSEMSHR 44 { 45 /** 46 * Astrict 16 is byte while retail 12 is bytes. 47 * We'll reserve 20 bytes just to be sure!. 48 */ 49 char achDummy[20]; 50 51 struct 52 { 53 char ks_achSignature[4]; 54 char ks_bFlags; 55 char ks_bType; 56 unsigned short ks_Owner; 57 unsigned short ks_cusPendingWriters; 58 unsigned short ks_cusNest; 59 unsigned short ks_cusReaders; 60 unsigned short ks_cusPendingReaders; 61 } debug; 62 63 struct 64 { 65 char ks_bFlags; 66 char ks_bType; 67 unsigned short ks_Owner; 68 unsigned short ks_cusPendingWriters; 69 unsigned short ks_cusNest; 70 unsigned short ks_cusReaders; 71 unsigned short ks_cusPendingReaders; 72 } release; 73 74 } KSEMSHR, 75 *PKSEMSHR, 76 *HKSEMSHR; /* Handle to kernel shared semphore. */ 77 typedef HKSEMSHR * PHKSEMSHR; 78 79 80 typedef union _KSEMMTX 81 { 82 /** 83 * Astrict is 12 byte while retail is 8 bytes. 84 * We'll reserve 20 bytes just to be sure! 85 */ 86 char achDummy[20]; 87 88 struct 89 { 90 char ksem_achSignature[4]; 91 char ksem_bFlags; 92 char ksem_bType; 93 unsigned short ksem_Owner; 94 unsigned short ksem_cusPendingWriters; 95 unsigned short ksem_cusNest; 96 }debug; 97 struct 98 { 99 char ksem_bFlags; 100 char ksem_bType; 101 unsigned short ksem_Owner; 102 unsigned short ksem_cusPendingWriters; 103 unsigned short ksem_cusNest; 104 } release; 105 } KSEMMTX, 106 *PKSEMMTX, 107 *HKSEMMTX; /* Handle to kernel mutex semaphore. */ 108 typedef HKSEMMTX * PHKSEMMTX; 109 110 111 typedef struct _KSEMEVT 112 { 113 /** 114 * Astrict is 16 byte while retail is 12 bytes. 115 * We'll reserve 20 bytes just to be sure! 116 */ 117 char achDummy[20]; 118 119 struct 120 { 121 char kse_achSignature[4]; 122 char kse_bFlags; 123 char kse_bType; 124 unsigned short kse_Owner; 125 unsigned short kse_cusPendingWriters; 126 } debug; 127 128 struct 129 { 130 char kse_bFlags; 131 char kse_bType; 132 unsigned short kse_Owner; 133 unsigned short kse_cusPendingWriters; 134 } release; 135 136 } KSEMEVT, 137 *PKSEMEVT, 138 *HKSEMEVT; /* Handle to kernel event sempahore. */ 139 typedef HKSEMEVT * PHKSEMEVT; 140 141 142 typedef union _KSEM 143 { 144 KSEMSHR shr; 145 KSEMMTX mtx; 146 KSEMEVT evt; 147 } KSEM, *PKSEM, *HKSEM; /* Generic kernel semaphore handle. */ 148 typedef HKSEM * PHKSEM; 29 149 30 150 … … 34 154 /* 35 155 * Mutex semaphores. 36 * NOTE! Only is KSEMRequestMutex currently is imported!37 156 */ 38 extern ULONG KRNLCALL KSEMRequestMutex(HK MTX hkmtx, ULONG ulTimeout);39 extern VOID KRNLCALL KSEMReleaseMutex(HK MTX hkmtx);40 extern ULONG KRNLCALL KSEMQueryMutex(HK MTX hkmtx, PUSHORT pus);157 extern ULONG KRNLCALL KSEMRequestMutex(HKSEMMTX hkmtx, ULONG ulTimeout); 158 extern VOID KRNLCALL KSEMReleaseMutex(HKSEMMTX hkmtx); 159 extern ULONG KRNLCALL KSEMQueryMutex(HKSEMMTX hkmtx, PUSHORT pcusNest); 41 160 42 161 … … 48 167 extern VOID KRNLCALL KSEMPostEvent(HKEV hkevent); 49 168 extern ULONG KRNLCALL KSEMWaitEvent(HKEV hkevent); 169 #endif 50 170 51 171 /* 52 172 * Some other KSEM prefixed functions - parameters's not that obvious... 53 173 */ 174 #if 0 54 175 extern ULONG KRNLCALL KSEMAlloc(PHKSEM phksem, ULONG p1, ULONG p2); 55 176 extern ULONG KRNLCALL KSEMCreate(PHKSEM phksem, ULONG type); … … 57 178 extern ULONG KRNLCALL KSEMRequestShared(HKSEM hksem, ULONG); 58 179 extern VOID KRNLCALL KSEMDestroy(HKSEM hksem); 59 extern VOID KRNLCALL KSEMInit(HKSEM hksem, ULONG p1, ULONG p2); 180 #endif 181 extern VOID KRNLCALL KSEMInit(PKSEM pksem, ULONG fulType, ULONG fulFlags); 182 #if 0 60 183 extern VOID KRNLCALL KSEMQuery(HKSEM hksem, ULONG p2) 61 184 extern VOID KRNLCALL KSEMRelease(HKSEM hksem); -
trunk/src/win32k/include/OS2KTK.h
r3829 r4164 1 /* $Id: OS2KTK.h,v 1. 1 2000-07-16 22:21:18bird Exp $1 /* $Id: OS2KTK.h,v 1.2 2000-09-02 21:08:00 bird Exp $ 2 2 * 3 3 * OS2KTK - OS/2 Kernel Task. … … 21 21 22 22 #define TKFuChar(pch, pchUsr) \ 23 TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_FATAL) ;23 TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_FATAL) 24 24 #define TKSuChar(pchUsr, pch) \ 25 TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_FATAL) ;25 TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_FATAL) 26 26 27 27 #define TKFuCharNF(pch, pchUsr) \ 28 TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_NONFATAL) ;28 TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_NONFATAL) 29 29 #define TKSuCharNF(pchUsr, pch) \ 30 TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_NONFATAL) ;30 TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_NONFATAL) 31 31 32 32 33 33 #define TKFuUShort(pus, pusUsr) \ 34 TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_FATAL) ;34 TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_FATAL) 35 35 #define TKSuUShort(pusUsr, pus) \ 36 TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_FATAL) ;36 TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_FATAL) 37 37 38 38 #define TKFuUShortNF(pus, pusUsr) \ 39 TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_NONFATAL) ;39 TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_NONFATAL) 40 40 #define TKSuUShortNF(pusUsr, pus) \ 41 TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_NONFATAL) ;41 TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_NONFATAL) 42 42 43 43 44 44 #define TKFuULong(pul, pulUsr) \ 45 TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_FATAL) ;45 TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_FATAL) 46 46 #define TKSuULong(pulUsr, pul) \ 47 TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_FATAL) ;47 TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_FATAL) 48 48 49 49 #define TKFuULongNF(pul, pulUsr) \ 50 TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_NONFATAL) ;50 TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_NONFATAL) 51 51 #define TKSuULongNF(pulUsr, pul) \ 52 TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_NONFATAL) ;52 TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_NONFATAL) 53 53 54 54 -
trunk/src/win32k/include/OS2KVM.h
r3411 r4164 1 /* $Id: OS2KVM.h,v 1. 4 2000-04-17 01:56:49bird Exp $1 /* $Id: OS2KVM.h,v 1.5 2000-09-02 21:08:00 bird Exp $ 2 2 * 3 3 * OS/2 kernel VM functions. … … 82 82 83 83 84 typedef USHORT HMTE, *PHMTE;85 typedef USHORT HPTDA, *PHPTDA;86 87 84 /******************************************************************************* 88 85 * Exported Functions * … … 108 105 PUSHORT pushPTDA); 109 106 107 PMTE KRNLCALL VMPseudoHandleMap( 108 HMTE hMTE); 110 109 #endif -
trunk/src/win32k/include/OS2Krnl.h
r2799 r4164 1 /* $Id: OS2Krnl.h,v 1. 7 2000-02-15 23:39:19bird Exp $1 /* $Id: OS2Krnl.h,v 1.8 2000-09-02 21:08:00 bird Exp $ 2 2 * 3 3 * OS/2 kernel structures, typedefs and macros. … … 153 153 } MTE,*PMTE,**PPMTE; 154 154 155 typedef USHORT HMTE, *PHMTE; 156 typedef USHORT HPTDA, *PHPTDA; 155 157 156 158 … … 228 230 229 231 /* 232 * Calling convention for Security Helpers. 233 */ 234 #define SECCALL _System 235 236 /* 230 237 * 231 238 * Other Kernel Parts … … 235 242 #define INCL_OS2KRNL_IO 236 243 #define INCL_OS2KRNL_VM 244 #define INCL_OS2KRNL_SEM 245 #define INCL_OS2KRNL_TK 246 #define INCL_OS2KRNL_PTDA 247 #define INCL_OS2KRNL_TCB 248 #define INCL_OS2KRNL_SEC 249 #endif 250 251 #if defined(INCL_OS2KRNL_PTDA) && !defined(INCL_OS2KRNL_SEM) 252 #define INCL_OS2KRNL_SEM 237 253 #endif 238 254 … … 245 261 #endif 246 262 247 #endif 263 #ifdef INCL_OS2KRNL_SEM 264 #include <OS2KSEM.h> 265 #endif 266 267 #ifdef INCL_OS2KRNL_TK 268 #include <OS2KTK.h> 269 #endif 270 271 #ifdef INCL_OS2KRNL_PTDA 272 #include <OS2KPTDA.h> 273 #endif 274 275 #ifdef INCL_OS2KRNL_TCB 276 #include <OS2KTCB.h> 277 #endif 278 279 #ifdef INCL_OS2KRNL_SEC 280 #include <OS2KSEC.h> 281 #endif 282 283 #endif -
trunk/src/win32k/include/dev16.h
r2898 r4164 1 /* $Id: dev16.h,v 1. 8 2000-02-25 18:15:04bird Exp $1 /* $Id: dev16.h,v 1.9 2000-09-02 21:08:00 bird Exp $ 2 2 * dev16 - 16-bit specific. Should not be used in 32-bit C/C++. 3 3 * … … 113 113 USHORT NEAR R0Init16(PRP_GENIOCTL pRp); 114 114 USHORT NEAR initGetDosTableData(void); 115 115 #if 0 /*ndef CODE16_INIT*/ 116 #pragma alloc_text(CODE16_INIT, dev0Init, dev1Init, R0Init16, initGetDosTableData) 117 #endif 116 118 117 119 /* … … 123 125 USHORT NEAR CallElfIOCtl(LIN pRpIOCtl); 124 126 USHORT NEAR CallWin32kIOCtl(LIN pRpIOCtl); 127 #if 0 /*ndef CODE16_INIT*/ 128 #pragma alloc_text(CODE16_INIT, CallR0Init32, CallVerifyImportTab32, CallGetKernelInfo32) 129 #endif 125 130 126 131 … … 148 153 #define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar)) 149 154 150 extern LIN 155 extern LIN NEAR SSToDS_16a(void NEAR *pStackVar); 151 156 152 157 /* 153 158 * START and END labels. NOTE: these are not bytes only assembly labels. 154 159 */ 155 extern char PASCAL CODE16START ;156 extern char PASCAL DATA16START ;157 160 extern char PASCAL DATA16START ; 158 161 extern char PASCAL DATA16_BSSSTART ; 159 162 extern char PASCAL DATA16_CONSTSTART; 163 extern char PASCAL DATA16_INITSTART ; 164 extern char PASCAL DATA16_INIT_BSSSTART ; 165 extern char PASCAL DATA16_INIT_CONSTSTART; 160 166 extern char PASCAL CODE16START ; 167 extern char PASCAL CODE16_INITSTART ; 161 168 extern char PASCAL CODE32START ; 162 169 extern char PASCAL DATA32START ; … … 168 175 extern char PASCAL CODE16END ; 169 176 extern char PASCAL DATA16END ; 170 extern char PASCAL DATA16END ;171 177 extern char PASCAL DATA16_BSSEND ; 172 178 extern char PASCAL DATA16_CONSTEND; 179 extern char PASCAL DATA16_INITEND ; 180 extern char PASCAL DATA16_INIT_BSSEND ; 181 extern char PASCAL DATA16_INIT_CONSTEND; 173 182 extern char PASCAL CODE16END ; 183 extern char PASCAL CODE16_INITEND ; 174 184 extern char PASCAL CODE32END ; 175 185 extern char PASCAL DATA32END ; … … 180 190 181 191 182 183 184 192 #endif -
trunk/src/win32k/include/dev1632.h
r3321 r4164 1 /* $Id: dev1632.h,v 1. 5 2000-04-05 18:40:41bird Exp $1 /* $Id: dev1632.h,v 1.6 2000-09-02 21:08:00 bird Exp $ 2 2 * dev1632.h - Common header file for 16-bit and 32-bit C 3 3 * … … 50 50 typedef struct _KRNLINFO 51 51 { 52 unsigned long ulBuild; 53 unsigned short fKernel; 52 54 unsigned char cObjects; 53 unsigned char fDebug; 54 unsigned char fchType; /* TYPE_SMP, TYPE_UNI, TYPE_W4 */ 55 unsigned short usBuild; 55 unsigned char chPadding; 56 56 OTE aObjects[MAXKRNLOBJECTS]; 57 57 } KRNLINFO, FAR * PKRNLINFO; … … 64 64 65 65 #pragma pack() 66 67 68 /* 69 * Global data... 70 */ 71 extern CHAR DATA16_GLOBAL szBuildDate[]; 72 extern CHAR DATA16_GLOBAL szBuildTime[]; 73 #if defined(__IBMC__) || defined(__IBMCPP__) 74 #pragma map( szBuildDate , "_szBuildDate" ) 75 #pragma map( szBuildTime , "_szBuildTime" ) 66 76 #endif 77 78 #endif -
trunk/src/win32k/include/dev32.h
r2898 r4164 1 /* $Id: dev32.h,v 1. 8 2000-02-25 18:15:04bird Exp $1 /* $Id: dev32.h,v 1.9 2000-09-02 21:08:00 bird Exp $ 2 2 * 3 3 * dev32 - header file for 32-bit part of the driver. … … 100 100 * START and END labels. NOTE: these are not bytes only assembly labels. 101 101 */ 102 extern char CODE16START ;103 extern char DATA16START ;104 102 extern char DATA16START ; 105 103 extern char DATA16_BSSSTART ; 106 104 extern char DATA16_CONSTSTART; 105 extern char DATA16_INITSTART ; 106 extern char DATA16_INIT_BSSSTART ; 107 extern char DATA16_INIT_CONSTSTART; 107 108 extern char CODE16START ; 109 extern char CODE16_INITSTART ; 108 110 extern char CODE32START ; 109 111 extern char DATA32START ; … … 115 117 extern char CODE16END ; 116 118 extern char DATA16END ; 117 extern char DATA16END ;118 119 extern char DATA16_BSSEND ; 119 120 extern char DATA16_CONSTEND; 121 extern char DATA16_INITEND ; 122 extern char DATA16_INIT_BSSEND ; 123 extern char DATA16_INIT_CONSTEND; 120 124 extern char CODE16END ; 125 extern char CODE16_INITEND ; 121 126 extern char CODE32END ; 122 127 extern char DATA32END ; … … 126 131 extern char EH_DATAEND ; 127 132 128 129 130 131 133 #endif -
trunk/src/win32k/include/devSegDf.inc
r2838 r4164 1 ; $Id: devSegDf.inc,v 1. 5 2000-02-21 09:24:00bird Exp $1 ; $Id: devSegDf.inc,v 1.6 2000-09-02 21:08:01 bird Exp $ 2 2 ; 3 3 ; Segment definitions for win32k.sys. … … 18 18 DATA16_CONST ends 19 19 20 DATA16_GROUP group DATA16, DATA16_CONST, DATA16_BSS 20 DATA16_GLOBAL segment word public 'FAR_DATA' use16 21 DATA16_GLOBAL ends 22 23 ;DATA16_GROUP group DATA16, DATA16_CONST, DATA16_BSS, DATA16_GLOBAL 24 25 26 DATA16_INIT segment word public 'FAR_DATA' use16 27 DATA16_INIT ends 28 29 DATA16_INIT_CONST segment word public 'FAR_DATA' use16 30 DATA16_INIT_CONST ends 31 32 DATA16_INIT_BSS segment word public 'FAR_DATA' use16 33 DATA16_INIT_BSS ends 34 35 ;DATA16_INIT_GROUP group DATA16_INIT, DATA16_INIT_CONST, DATA16_INIT_BSS 36 ; 37 ;A bad trick to make all the 16-bit data segments one 38 ; 39 DATA16_GROUP group DATA16, DATA16_CONST, DATA16_BSS, DATA16_GLOBAL, DATA16_INIT, DATA16_INIT_CONST, DATA16_INIT_BSS 21 40 22 41 23 42 CODE16 segment word public 'CODE' use16 24 43 CODE16 ends 44 45 CODE16_INIT segment word public 'CODE' use16 46 CODE16_INIT ends 47 48 CODE16_IOSEG segment word public 'CODE' use16 49 CODE16_IOSEG ends 25 50 26 51 … … 33 58 34 59 ;DGROUP group BSS32, DATA32 35 DGROUP group BSS32, DATA32, CONST32_RO, _VFT, EH_DATA60 DGROUP group CALLTAB, BSS32, DATA32, CONST32_RO, _VFT, c_common, DDE4_DATA32, CTOR_DTOR1, CTOR_DTOR2, CTOR_DTOR3, EH_DATA 36 61 37 62 DATA32 segment dword public 'DATA' use32 … … 41 66 c_common ends 42 67 68 DDE4_DATA32 segment dword public 'DATA' use32 69 DDE4_DATA32 ends 70 43 71 BSS32 segment dword public 'BSS' use32 44 72 BSS32 ends 45 73 74 CTOR_DTOR1 segment dword public 'DATA' use32 75 CTOR_DTOR1 ends 76 77 CTOR_DTOR2 segment dword public 'DATA' use32 78 CTOR_DTOR2 ends 79 80 CTOR_DTOR3 segment dword public 'DATA' use32 81 CTOR_DTOR3 ends 46 82 47 83 ;CONSTGROUP group CONST32_RO, _VFT, EH_DATA -
trunk/src/win32k/include/env.h
r3412 r4164 1 /* $Id: env.h,v 1. 2 2000-04-17 02:26:04bird Exp $1 /* $Id: env.h,v 1.3 2000-09-02 21:08:01 bird Exp $ 2 2 * 3 3 * Environment access functions … … 21 21 *******************************************************************************/ 22 22 const char *ScanEnv(const char *paszEnv, const char *pszVar); 23 const char *GetEnv( void);23 const char *GetEnv(BOOL fExecChild); 24 24 25 25 -
trunk/src/win32k/include/k32.h
r2799 r4164 1 /* $Id: k32.h,v 1. 2 2000-02-15 23:39:19bird Exp $1 /* $Id: k32.h,v 1.3 2000-09-02 21:08:02 bird Exp $ 2 2 * 3 3 * k32 - definitions. … … 20 20 *******************************************************************************/ 21 21 APIRET k32AllocMemEx(PPVOID ppb, ULONG cb, ULONG flag, ULONG ulCS, ULONG ulEIP); 22 APIRET k32QueryOTEs(HMTE hMTE, PQOTEBUFFER pQOte, ULONG cbOte); 23 APIRET k32QueryOptionsStatus(PK32OPTIONS pOptions, PK32STATUS pStatus); 24 APIRET k32SetOptions(PK32OPTIONS pOptions); 22 25 23 26 -
trunk/src/win32k/include/ldr.h
r2501 r4164 1 /* $Id: ldr.h,v 1. 5 2000-01-22 18:20:59bird Exp $2 * 3 * ldr - loaderheader file.4 * 5 * Copyright (c) 1999 knut St. osmundsen1 /* $Id: ldr.h,v 1.6 2000-09-02 21:08:02 bird Exp $ 2 * 3 * ldr - Our loader "subsystem" public header file. 4 * 5 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 6 6 * 7 7 * Project Odin Software License can be found in LICENSE.TXT … … 12 12 #ifndef _ldr_h_ 13 13 #define _ldr_h_ 14 #ifndef LDR_INCL_INITONLY 15 /* state variable */ 16 extern BOOL fQAppType; 17 18 /* 19 * handle state - Array of handle states. Eight state per byte! 20 */ 21 #define MAX_FILE_HANDLES 0x10000 22 23 extern unsigned char achHandleStates[MAX_FILE_HANDLES/8]; 24 25 #define HSTATE_UNUSED 0x00 /* Handle not used (or OS/2). */ 26 #define HSTATE_OS2 0x00 /* OS/2 module filehandle. */ 27 #define HSTATE_OUR 0x01 /* Our module filehandle. */ 28 #define HSTATE_MASK 0xFE 29 #define HSTATE_UMASK 0x01 30 31 #define GetState(a) (HSTATE_UMASK & (achHandleStates[(a)/8] >> ((a)%8))) 32 #define SetState(a,b) (achHandleStates[(a)/8] = (achHandleStates[(a)/8] & (HSTATE_MASK << ((a)%8) | HSTATE_MASK >> 8-((a)%8)) | ((b) & 0x1) << ((a)%8))) 33 34 35 /* 36 * Module struct. 37 */ 38 typedef struct _Module 39 { 40 AVLNODECORE coreKey; /* Key is hFile. */ 41 AVLNODECORE coreMTE; /* Key is pMTE. */ 42 43 SFN hFile; /* System file number or file handle if you prefer that. */ 44 PMTE pMTE; /* Pointer to MTE if we got one - NULL is allowed. */ 45 46 ULONG fFlags; /* Flags. Flags if coreMte is in use and what Data contains. */ 47 union 48 { 49 ModuleBase *pModule; /* Pointer to a Pe2Lx object. (Win32 executables) */ 50 #if defined(_PE2LX_H_) 51 Pe2Lx * pPe2Lx; /* Pointer to a Pe2Lx object. (Win32 executables) */ 52 #endif 53 #if defined(_ELF2LX_H_) 54 Elf2Lx * pElf2Lx; /* Pointer to a Elf2Lx object. (ELF executables) */ 55 #endif 56 #if defined(_SCRIPT_H_) 57 Script * pScript; /* Pointer to a Script object. (Shell scripts) */ 58 #endif 59 #if defined(_PE_H_) 60 Pe * pPe; /* Pointer to a Pe object. (Ring3 loader) */ 61 #endif 62 } Data; /* Pointer to data. Currently it's allways a Pe2Lx object! */ 63 } MODULE, *PMODULE; 64 65 #define MOD_FLAGS_IN_MTETREE 0x00000010UL /* The node is present in the MTE-tree. */ 66 #define MOD_TYPE_MASK 0x0000000FUL /* Type mask. */ 67 #define MOD_TYPE_PE2LX 0x00000001UL /* Pe2Lx module. */ 68 #define MOD_TYPE_ELF2LX 0x00000002UL /* Elf2Lx module. */ 69 #define MOD_TYPE_SCRIPT 0x00000003UL /* Script module. */ 70 #define MOD_TYPE_PE 0x00000004UL /* Pe module. */ 71 72 73 /* 74 * Modules operations. 75 */ 76 PMODULE getModuleBySFN(SFN hFile); 77 PMODULE getModuleByMTE(PMTE pMTE); 78 PMODULE getModuleByFilename(PCSZ pszFilename); 79 80 ULONG addModule(SFN hFile, PMTE pMTE, ULONG fFlags, ModuleBase *pModObj); 81 ULONG removeModule(SFN hFile); 82 83 #endif 84 85 /*************/ 86 /* functions */ 87 /*************/ 88 #ifdef __cplusplus 89 extern "C" { 90 #endif 91 92 ULONG ldrInit(void); 93 94 #ifdef __cplusplus 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 20 #ifndef LDR_INCL_INITONLY 21 22 /* 23 * Fail if dependent header files is missing 24 */ 25 #ifndef _AVL_H_ 26 #error "You'll have to include avl.h before ldr.h!" 27 #endif 28 29 30 /** @design Loader State. 31 * 32 * Used to determin behaviour in different cases. 33 * Use the isLdrState<State> macros to query current state. 34 * IMPORTANT! Don't change this variable if you don't really mean it! 35 * And only change it thru the setLdrState* macros! 36 * 37 * The state is changing as follows: 38 * 1) Load a new program 39 * mytkExecPgm will set the state to LDRSTATE_TKEXECPGM on successful overloading. 40 * myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED) 41 * (NB! myldrOpenPath is called several times. First for the EXE then for imported modules.) 42 * IF executable THEN myLdrOpen might set the LDRSTATE_OUR flag. 43 * myldrOpenPath will reset the type part of the loaderbits upon return. 44 * mytkExecPgm resets the state to LDRSTATE_UNKNOWN upon return. 45 * 46 * 2) Query program type. 47 * myLDRQAppType will set the state to LDRSTATE_LDRQAPPTYPE on entry. 48 * myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED) 49 * (NB! myldrOpenPath may be called several times.) 50 * IF executable THEN myLdrOpen might set the LDRSTATE_OUR flag. 51 * myldrOpenPath will reset the type part of the loaderbits upon return. 52 * myLDRQAppType resets the state to LDRSTATE_UNKNOWN upon return. 53 * 54 * 3) Unknown invocation - probably DosLoadModule. Base state is LDRSTATE_UNKNOWN. 55 * myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED) 56 * (NB! myldrOpenPath is probably called several times. Import modules.) 57 * myldrOpenPath will reset the type part of the loaderbits upon return. 58 * 59 */ 60 extern ULONG ulLdrState; 61 62 #define LDRSTATE_UNKNOWN 0 /* Default state - undertermined. */ 63 #define LDRSTATE_TKEXECPGM 1 /* A program is being loaded. */ 64 #define LDRSTATE_LDRQAPPTYPE 2 /* Loader called from LDRQAPPTYPE */ 65 /*#define LDRSTATE_LOADMODULE 3 */ /* A module is being loaded by DosLoadModule. Not implemented! */ 66 #define LDRSTATE_MASK 0x00FF /* State mask. */ 67 68 /* 69 * The following flags are only valid when myldrOpenPath is on the stack!, ie. in ldrOpen. 70 * These flags is the "loading-bits". 71 */ 72 #define LDRSTATE_EXE 0x0100 /* Flags telling that an executable is being opened. */ 73 #define LDRSTATE_DLL 0x0200 /* Flags telling that an dll is being opened. */ 74 #define LDRSTATE_UNSUPPORTED 0x0300 /* Flags telling to not override this open call. */ 75 #define LDRSTATE_TYPE_MASK 0x0f00 /* Load Type Mask. */ 76 /* The following flag will tell us if the executable which is loading is ours or not. */ 77 #define LDRSTATE_OUREXE 0x1000 78 #define LDRSTATE_LOADERBITS 0xff00 /* Mask */ 79 80 81 /* 82 * Query macros. 83 */ 84 #define isLdrStateUnknown() ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_UNKNOWN) 85 #define isLdrStateExecPgm() ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_TKEXECPGM) 86 #define isLdrStateQAppType() ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_LDRQAPPTYPE) 87 /*#define isLdrStateLoadModule() ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_LOADMODULE)*/ 88 89 #define isLdrStateLoadingEXE() ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_EXE) 90 #define isLdrStateLoadingDLL() ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_DLL) 91 #define isLdrStateLoadingUnsupported() ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_UNSUPPORTED) 92 93 #define isLdrStateLoadingOurEXE() (ulLdrState & LDRSTATE_OUREXE) 94 95 96 /* 97 * Set macros. 98 */ 99 #define setLdrStateQAppType() ulLdrState = LDRSTATE_LDRQAPPTYPE 100 #define setLdrStateUnknown() ulLdrState = LDRSTATE_UNKNOWN 101 /* setLdrStateExecPgm() isn't needed as this is in assembly source! */ 102 /*#define setLdrStateLoadModule() ulLdrState = LDRSTATE_LOADMODULE */ 103 104 #define setLdrStateLoadingEXE() ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_EXE 105 #define setLdrStateLoadingDLL() ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_DLL 106 #define setLdrStateLoadingUnsupported() ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_UNSUPPORTED 107 #define setLdrStateClearLoadingType() ulLdrState &= (ULONG)(~LDRSTATE_TYPE_MASK) 108 109 #define setLdrStateLoadingOurEXE() ulLdrState |= LDRSTATE_OUREXE 110 111 112 /* 113 * Loader State assert macros. 114 */ 115 #define ASSERT_LdrStateUnknown(fn) ASSERT_LdrState(fn, LDRSTATE_UNKNOWN) 116 #define ASSERT_LdrStateExecPgm(fn) ASSERT_LdrState(fn, LDRSTATE_TKEXECPGM) 117 #define ASSERT_LdrStateQAppType(fn) ASSERT_LdrState(fn, LDRSTATE_LDRQAPPTYPE) 118 119 #define ASSERT_LdrState(fn, state) \ 120 { \ 121 if ((ulLdrState & LDRSTATE_MASK) != (state)) \ 122 { \ 123 kprintf((fn ": assertion incorrect loader state. ulLdrState (%d) != " #state "(%d)", \ 124 ulLdrState, state)); \ 125 } \ 95 126 } 96 #endif 97 98 #pragma pack() 99 100 #endif 127 128 129 /* 130 * handle state - Array of handle states. Eight state per byte! 131 */ 132 #define MAX_FILE_HANDLES 0x10000 133 134 extern unsigned char achHandleStates[MAX_FILE_HANDLES/8]; 135 136 #define HSTATE_UNUSED 0x00 /* Handle not used (or OS/2). */ 137 #define HSTATE_OS2 0x00 /* OS/2 module filehandle. */ 138 #define HSTATE_OUR 0x01 /* Our module filehandle. */ 139 #define HSTATE_MASK 0xFE 140 #define HSTATE_UMASK 0x01 141 142 #define GetState(a) (HSTATE_UMASK & (achHandleStates[(a)/8] >> ((a)%8))) 143 #define SetState(a,b) (achHandleStates[(a)/8] = (achHandleStates[(a)/8] & (HSTATE_MASK << ((a)%8) | HSTATE_MASK >> 8-((a)%8)) | ((b) & 0x1) << ((a)%8))) 144 145 146 /* 147 * Declare the module classes used below in case they aren't declared yet. 148 */ 149 #ifdef __cplusplus 150 class ModuleBase; 151 class Pe2Lx; 152 class Elf2Lx; 153 #else 154 typedef char ModuleBase; 155 typedef char Pe2Lx; 156 typedef char Elf2Lx; 157 #endif 158 159 160 /* 161 * Module struct. 162 */ 163 typedef struct _Module 164 { 165 AVLNODECORE coreKey; /* Key is hFile. */ 166 AVLNODECORE coreMTE; /* Key is pMTE. */ 167 168 SFN hFile; /* System file number or file handle if you prefer that. */ 169 PMTE pMTE; /* Pointer to MTE if we got one - NULL is allowed. */ 170 171 ULONG fFlags; /* Flags. Flags if coreMte is in use and what Data contains. */ 172 union 173 { 174 ModuleBase *pModule; /* Pointer to base module. */ 175 Pe2Lx * pPe2Lx; /* Pointer to a Pe2Lx object. (Win32 executables) */ 176 Elf2Lx * pElf2Lx; /* Pointer to a Elf2Lx object. (ELF executables) */ 177 #if 0 178 Script * pScript; /* Pointer to a Script object. (Shell scripts) */ 179 Pe * pPe; /* Pointer to a Pe object. (Ring3 loader) */ 180 #endif 181 } Data; /* Pointer to data. Currently it's allways a Pe2Lx object! */ 182 } MODULE, *PMODULE; 183 184 #define MOD_FLAGS_IN_MTETREE 0x00000010UL /* The node is present in the MTE-tree. */ 185 #define MOD_TYPE_MASK 0x0000000FUL /* Type mask. */ 186 #define MOD_TYPE_PE2LX 0x00000001UL /* Pe2Lx module. */ 187 #define MOD_TYPE_ELF2LX 0x00000002UL /* Elf2Lx module. */ 188 #define MOD_TYPE_SCRIPT 0x00000003UL /* Script module. */ 189 #define MOD_TYPE_PE 0x00000004UL /* Pe module. */ 190 191 192 /* 193 * Pointer to the currently loading executable module. 194 * Available at tkExecPgm time when loading a converted module. 195 */ 196 extern PMODULE pExeModule; 197 198 199 /* 200 * Modules operations. 201 */ 202 PMODULE getModuleBySFN(SFN hFile); 203 PMODULE getModuleByMTE(PMTE pMTE); 204 PMODULE getModuleByhMTE(HMTE hMTE); 205 PMODULE getModuleByFilename(PCSZ pszFilename); 206 207 ULONG addModule(SFN hFile, PMTE pMTE, ULONG fFlags, ModuleBase *pModObj); 208 ULONG removeModule(SFN hFile); 209 210 211 212 /* 213 * mytkExecPgm variables and functions 214 * 215 * (See ldr\mytkExecPgm.asm for further info on these variabels and functions.) 216 */ 217 #define CCHFILENAME 261 /* This is defined in mytkExecPgm.asm too. */ 218 #define CCHARGUMENTS 1536 /* This is defined in mytkExecPgm.asm too. */ 219 extern const char fTkExecPgm; 220 extern char achTkExecPgmFilename[CCHFILENAME]; 221 extern char achTkExecPgmArguments[CCHARGUMENTS]; 222 #endif 223 ULONG _Optlink tkExecPgmEnvLength(void); 224 ULONG _Optlink tkExecPgmCopyEnv(char *pachBuffer, unsigned cchBuffer); 225 226 227 228 /* 229 * functions 230 */ 231 PSZ ldrGetExePath(PSZ pszPath, BOOL fExecChild); 232 ULONG ldrInit(void); 233 234 #ifdef __cplusplus 235 } 236 #endif 237 238 #pragma pack() 239 240 #endif -
trunk/src/win32k/include/log.h
r2898 r4164 1 /* $Id: log.h,v 1. 4 2000-02-25 18:15:04bird Exp $1 /* $Id: log.h,v 1.5 2000-09-02 21:08:02 bird Exp $ 2 2 * 3 3 * log - C-style logging - kprintf. … … 25 25 #define OUTPUT_COM1 0x3f8 26 26 #define OUTPUT_COM2 0x2f8 27 #define OUTPUT_COM3 0x3e8 28 #define OUTPUT_COM4 0x2e8 27 29 28 30 … … 32 34 #define dprintf kprintf 33 35 #if defined(DEBUG) && !defined(NOLOGGING) 34 #ifndef INCL_16 36 #ifdef INCL_16 37 /* 16-bit */ 38 #include "vprntf16.h" 39 #define kprintf(a) printf16 a 40 #define printf this function is not used in 16-bit code! Use printf16! 41 #else 35 42 /* 32-bit */ 36 43 #include <stdarg.h> 37 44 #include "vprintf.h" 38 45 #define kprintf(a) printf a 39 #else40 /* 16-bit */41 #include "vprntf16.h"42 #define kprintf(a) printf16 a43 46 #endif 44 47 #else 45 #define kprintf(a) ( void)048 #define kprintf(a) ((void)0) 46 49 #endif 47 50 -
trunk/src/win32k/include/macros.h
r3485 r4164 1 /* $Id: macros.h,v 1. 2 2000-05-03 10:46:07bird Exp $1 /* $Id: macros.h,v 1.3 2000-09-02 21:08:02 bird Exp $ 2 2 * 3 3 * Common macros for Win32k/Elf. … … 24 24 #define ALIGN(a, alignment) (((a) + (alignment - 1UL)) & ~(alignment - 1UL)) 25 25 26 /* 27 * Not referenced parameter warning fix. 28 */ 29 #define NOREF(a) (a=a) 26 30 27 31 /* -
trunk/src/win32k/include/myExecPgm.h
r2828 r4164 1 /* $Id: myExecPgm.h,v 1. 1 2000-02-19 08:41:10bird Exp $1 /* $Id: myExecPgm.h,v 1.2 2000-09-02 21:08:03 bird Exp $ 2 2 * 3 3 * Desclarations for buffer.asm and mytkExecPgm. … … 12 12 #define _myExecPgm_h_ 13 13 14 /******************************************************************************* 15 * Defined Constants And Macros * 16 *******************************************************************************/ 17 #define CB_BUFFER 1536 /* This is to be updated in the files buffer.asm and tkExecPgm too! */ 18 #define CCH_FILENAME 261 /* This is to be updated in the files buffer.asm and tkExecPgm too! */ 19 20 21 /******************************************************************************* 22 * Structures and Typedefs * 23 *******************************************************************************/ 24 #pragma pack(1) 25 typedef struct _EXECPGMBUFFER 26 { 27 char szFilename[CCH_FILENAME]; /* Executable filename. */ 28 char achArgs[CB_BUFFER - CCH_FILENAME]; /* collection of ASCIIZ which ends with an empty string */ 29 } EXECPGMBUFFER, *PEXECPGMBUFFER; 30 #pragma pack() 31 32 33 /******************************************************************************* 34 * Functions Prototypes * 35 *******************************************************************************/ 36 PEXECPGMBUFFER _Optlink QueryBufferPointerFromFilename(const char *pszFilename); 14 /* obsolete */ 37 15 38 16 #endif -
trunk/src/win32k/include/omf.h
r1678 r4164 1 /* $Id: omf.h,v 1. 2 1999-11-10 01:45:33 bird Exp $ */1 /* $Id: omf.h,v 1.3 2000-09-02 21:08:03 bird Exp $ */ 2 2 /* 3 3 * OMF stuff … … 16 16 #define LIBEND 0xF1 17 17 #define THEADR 0x80 18 19 18 #define MODEND 0x8a 20 19 #define MODEND2 0x8b 21 22 20 #define COMENT 0x88 23 21 #define IMPDEF 0x01 24 22 #define PUBDEF 0x90 25 23 #define LNAMES 0x96 24 #define SEGDEF 0x98 25 #define SEGDEF2 0x99 26 #define GRPDEF 0x9A 27 #define FIXUPP 0x9C 28 #define FIXUPP2 0x9D 29 #define LEDATA 0xA0 30 #define LEDATA2 0xA1 26 31 27 32 #endif -
trunk/src/win32k/include/options.h
r2898 r4164 1 /* $Id: options.h,v 1.1 0 2000-02-25 18:15:06bird Exp $1 /* $Id: options.h,v 1.11 2000-09-02 21:08:03 bird Exp $ 2 2 * 3 3 * Options. … … 16 16 *******************************************************************************/ 17 17 /* fKernel */ 18 #define KF_UNI 0x00000000UL 19 #define KF_SMP 0x00000001UL 18 #define KF_UNI 0x0000 19 #define KF_SMP 0x0001 20 #define KF_W4 0x0002 21 #define KF_DEBUG 0x1000 22 #define KF_HAS_DEBUGTYPE 0x2000 23 #define KF_ALLSTRICT 0x3000 24 #define KF_HALFSTRICT 0x7000 20 25 21 26 /* fPE */ … … 33 38 34 39 /* default heapsizes */ 35 #define CB_SWP_INIT ( 1024*512) /* 512KB */36 #define CB_SWP_MAX ( 1024*1024*16) /* 16MB */37 #define CB_RES_INIT ( 1024*256) /* 256KB */38 #define CB_RES_MAX ( 1024*1024*10) /* 10MB */40 #define CB_SWP_INIT ((unsigned long)1024*512) /* 512KB */ 41 #define CB_SWP_MAX ((unsigned long)1024*1024*16) /* 16MB */ 42 #define CB_RES_INIT ((unsigned long)1024*256) /* 256KB */ 43 #define CB_RES_MAX ((unsigned long)1024*1024*10) /* 10MB */ 39 44 40 45 /* default assignments */ … … 47 52 (unsigned short)~0, /* usVerMajor */ \ 48 53 (unsigned short)~0, /* usVerMinor */ \ 49 FLAGS_PE_ PE2LX, /* fPE */ \54 FLAGS_PE_MIXED, /* fPE */ \ 50 55 INFOLEVEL_QUIET, /* ulInfoLevel */ \ 51 56 FALSE, /* fElf */ \ 52 TRUE, /* fScript */ \ 57 TRUE, /* fUNIXScript */ \ 58 TRUE, /* fREXXScript */ \ 59 TRUE, /* fJava */ \ 53 60 FALSE, /* fNoLoader */ \ 54 61 CB_SWP_INIT, /* cbSwpHeapInit */ \ … … 57 64 CB_RES_MAX} /* cbResHeapMax */ 58 65 66 #define isAnyLoaderEnabled() (!options.fNoLoader && \ 67 (isPELoaderEnabled() || isELFEnabled() || isUNIXScriptEnabled() || isREXXScriptEnabled() || isJAVAEnabled())) 68 #define isPELoaderEnabled() (options.fPE != FLAGS_PE_NOT) 69 #define isPELoaderDisabled() (options.fPE == FLAGS_PE_NOT) 70 #define isPe2LxLoaderEnabled() (options.fPE == FLAGS_PE_PE2LX) 71 #define isMixedPeLoaderEnabled() (options.fPE == FLAGS_PE_MIXED) 72 73 #define isELFDisabled() (!options.fElf) 74 #define isELFEnabled() (options.fElf) 75 #define isUNIXScriptDisabled() (!options.fUNIXScript) 76 #define isUNIXScriptEnabled() (options.fUNIXScript) 77 #define isREXXScriptDisabled() (!options.fREXXScript) 78 #define isREXXScriptEnabled() (options.fREXXScript) 79 #define isJAVADisabled() (!options.fJava) 80 #define isJAVAEnabled() (options.fJava) 81 82 #define isSMPKernel() (options.fKernel & KF_SMP) 83 #define isUNIKernel() !(options.fKernel & KF_SMP) 59 84 60 85 … … 86 111 ULONG fElf; /* Elf flags. */ 87 112 88 /** @cat Options affecting the script executables */89 ULONG f Script; /* Script flags. */113 /** @cat Options affecting the UNIX script executables */ 114 ULONG fUNIXScript; /* UNIX script flags. */ 90 115 91 /** @cat Options affecting the script executables */ 92 ULONG fNoLoader; /* No loader stuff. */ 116 /** @cat Options affecting the REXX script executables */ 117 ULONG fREXXScript; /* REXX script flags. */ 118 119 /** @cat Options affecting the JAVA executables */ 120 ULONG fJava; /* Java flags. */ 121 122 /** @cat Options affecting the executables */ 123 ULONG fNoLoader; /* No loader stuff. !FIXME! We should import / functions even if this flag is set!!! */ 93 124 94 125 /** @cat Options affecting the heap. */ … … 100 131 #pragma pack() 101 132 102 103 133 /******************************************************************************* 104 134 * Global Variables * 105 135 *******************************************************************************/ 106 extern struct options options; /* defined in d32globals.c */136 extern struct options DATA16_GLOBAL options; /* defined in d16globals.c */ 107 137 #if defined(__IBMC__) || defined(__IBMCPP__) 108 138 #pragma map( options , "_options" ) -
trunk/src/win32k/include/pe2lx.h
r2925 r4164 1 /* $Id: pe2lx.h,v 1. 9 2000-02-27 02:16:43 bird Exp $1 /* $Id: pe2lx.h,v 1.10 2000-09-02 21:08:03 bird Exp $ 2 2 * 3 3 * Pe2Lx class declarations. Ring 0 and Ring 3 … … 66 66 ULONG applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage, 67 67 ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/ 68 ULONG openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful); /* (ldrOpenPath) */ 69 static ULONG openPath2(PCHAR pachFilename, ULONG cchFilename, ldrlv_t *pLdrLv, PULONG pful, BOOL fOdin32PathValid); 68 70 #ifndef RING0 69 71 ULONG testApplyFixups(); 70 72 ULONG writeFile(PCSZ pszLXFilename); 71 73 #endif 74 75 /** @cat public query methods */ 76 BOOL isExe(); 77 BOOL isDll(); 78 static SFN getKernel32SFN() { return sfnKernel32; } 79 static VOID setKernel32SFN(SFN sfn) { sfnKernel32 = sfn; } 80 static VOID invalidateOdin32Path(); 81 static LONG getLoadedModuleCount() { return cLoadedModules;} 72 82 73 83 /** @cat public Helper methods */ … … 120 130 /** @cat static helpers */ 121 131 static PCSZ queryOdin32ModuleName(PCSZ pszWin32ModuleName); 132 static BOOL initOdin32Path(); 133 static BOOL setOdin32Path(const char *psz); 122 134 123 135 /** @cat static dump methods */ … … 195 207 ULONG flFlags; /* equivalent object flags */ 196 208 } paSecChars2Flags[]; 209 210 static LONG cLoadedModules; /* Count of existing objects. Updated by constructor and destructor. */ 211 static const char * pszOdin32Path; /* Odin32 base path (include a slash). */ 212 static ULONG cchOdin32Path; /* Odin32 base path length. */ 213 static SFN sfnKernel32; /* Odin32 Kernel32 filehandle. */ 197 214 }; 198 215 -
trunk/src/win32k/include/probkrnl.h
r3411 r4164 1 /* $Id: probkrnl.h,v 1.1 3 2000-04-17 01:56:49bird Exp $1 /* $Id: probkrnl.h,v 1.14 2000-09-02 21:08:04 bird Exp $ 2 2 * 3 3 * Include file for ProbKrnl. … … 16 16 * Defined Constants And Macros * 17 17 *******************************************************************************/ 18 #define NBR_OF_KRNLIMPORTS 18/* When this is changed make sure to */18 #define NBR_OF_KRNLIMPORTS 42 /* When this is changed make sure to */ 19 19 /* update the arrays in d32init.c and */ 20 /* probkrnl.c */ 20 /* probkrnl.c, make test faker in */ 21 /* test.h and the appropriate fake.c */ 22 /* fakea.asm. */ 21 23 #define MAX_LENGTH_NAME 32 /* Max length for the function. */ 22 24 … … 24 26 #define EPT_PROC 0x00 /* procedure - overload procedure*/ 25 27 #define EPT_PROCIMPORT 0x01 /* procedure 32bit - import only */ 26 #define EPT_VARIMPORT 0x02 /* variable/non-procedure 32bit - not implemented yet */ 27 #define EPT_32BIT 0x00 /* 16 bit entry-point */ 28 #define EPT_16BIT 0x80 /* 32 bit entry-point */ 28 #define EPT_VARIMPORT 0x02 /* variable/non-procedure 32bit */ 29 #define EPT_NOT_REQ 0x04 /* Not required flag. */ 30 #define EPT_32BIT 0x00 /* 32 bit entry-point */ 31 #define EPT_16BIT 0x80 /* 16 bit entry-point */ 29 32 #define EPT_BIT_MASK 0x80 /* Mask bit entry-point */ 30 33 #define EPT16BitEntry(a) (((a).fType & EPT_BIT_MASK) == EPT_16BIT) … … 34 37 #define EPT_PROC32 (EPT_PROC | EPT_32BIT) 35 38 #define EPT_PROCIMPORT32 (EPT_PROCIMPORT | EPT_32BIT) 39 #define EPT_PROCIMPORTNR32 (EPT_PROCIMPORT | EPT_32BIT | EPT_NOT_REQ) 36 40 #define EPT_VARIMPORT32 (EPT_VARIMPORT | EPT_32BIT) 37 41 … … 41 45 #define EPT_VARIMPORT16 (EPT_VARIMPORT | EPT_16BIT) 42 46 43 /* Kernel type: SMP/UNI/W4 */ 44 #define TYPE_UNI 0 /* Any UNI processor kernel except Warp 4 fp13 and above. */ 45 #define TYPE_SMP 1 /* SMP Warp3 Adv. or Warp 4.5 SMP */ 46 #define TYPE_W4 2 /* Warp4 fp13 and above. */ 47 48 /* Kernel type: SMP/UNI/W4 (flags matches KF_* in options.h) */ 49 #if 0 50 #define TYPE_UNI 0x00 /* Any UNI processor kernel except Warp 4 fp13 and above. */ 51 #define TYPE_SMP 0x01 /* SMP Warp3 Adv. or Warp 4.5 SMP */ 52 #define TYPE_W4 0x02 /* Warp4 fp13 and above. */ 53 #endif 47 54 48 55 … … 73 80 { 74 81 unsigned short usBuild; /* Build number */ 75 unsigned char fchBldType; /* R, H, A */ 76 unsigned char fchType; /* TYPE_SMP, TYPE_UNI, TYPE_W4 */ 82 unsigned short fKernel; /* Kernel flag (KF_* defines in options.h). */ 77 83 unsigned char cObjects; /* Count of objects */ 78 84 struct … … 91 97 * NOTE! These are only available at init time! * 92 98 *******************************************************************************/ 93 extern IMPORTKRNLSYM _aImportTab[NBR_OF_KRNLIMPORTS]; /* 'aImportTab' in PrbKrnl.c */ 94 extern unsigned short int _usBuild; /* 'ulBuild' in PrbKrnl.c */ 95 extern unsigned short int _usVerMajor; /* 'usVerMajor' in PrbKrnl.c */ 96 extern unsigned short int _usVerMinor; /* 'usVerMinor' in PrbKrnl.c */ 97 extern KRNLDBENTRY aKrnlSymDB[]; /* defined in symdb.c (for 16-bit usage) */ 98 extern KRNLDBENTRY _aKrnlSymDB[]; /* defined in symdb.c (for 32-bit usage) */ 99 extern IMPORTKRNLSYM DATA16_GLOBAL aImportTab[NBR_OF_KRNLIMPORTS]; /* Defined in ProbKrnl.c */ 100 extern char DATA16_GLOBAL szUsrSym[50]; /* Defined in ProbKrnl.c */ 101 extern KRNLDBENTRY DATA16_INIT aKrnlSymDB[]; /* Defined in symdb.c (for 16-bit usage) */ 99 102 103 #if defined(__IBMC__) || defined(__IBMCPP__) 104 #pragma map( aImportTab , "_aImportTab" ) 105 #pragma map( szUsrSym , "_szUsrSym" ) 106 #pragma map( aKrnlSymDB , "_aKrnlSymDB" ) 107 #endif 100 108 101 109 #if defined(INCL_16) && defined(MAX_DISKDD_CMD) /* 16-bit only */ 102 110 int ProbeKernel(PRPINITIN pReqPack); 111 112 #if 0 /*ndef CODE16_INIT*/ 113 #pragma alloc_text(CODE16_INIT, ProbeKernel) 103 114 #endif 104 115 105 116 #endif 106 117 118 #endif 119 -
trunk/src/win32k/include/rmalloc.h
r2506 r4164 1 /* $Id: rmalloc.h,v 1. 2 2000-01-24 01:44:08bird Exp $1 /* $Id: rmalloc.h,v 1.3 2000-09-02 21:08:04 bird Exp $ 2 2 * 3 3 * Resident Heap. … … 20 20 #endif 21 21 /* XLATON */ 22 /******************************************************************************* 23 * Structures and Typedefs * 24 *******************************************************************************/ 25 typedef struct HeapState_s /* note: this is used by both swappable and resident heaps */ 26 { 27 ULONG cbHeapSize; /* Amount of memory used by the heap free and used++. */ 28 ULONG cbHeapFree; /* Amount of used space. */ 29 ULONG cbHeapUsed; /* Amount of free space reserved. */ 30 ULONG cBlocksUsed; /* Count of used blocks. */ 31 ULONG cBlocksFree; /* Count of free blocks. */ 32 } HEAPSTATE, *PHEAPSTATE; 33 22 34 23 35 /******************************************************************************* … … 33 45 int _res_validptr2(void *, unsigned); 34 46 unsigned _res_memfree(void); 47 unsigned _res_memused(void); 48 int _res_state(PHEAPSTATE); 35 49 int _res_heap_check(void); 36 50 void _res_heapmin(void); 37 51 void _res_dump_subheaps(void); 38 52 void _res_dump_allocated(unsigned); 53 54 extern unsigned cbResHeapMax; /* Maximum amount of memory used by the heap. */ 55 39 56 40 57 /* XLATOFF */ -
trunk/src/win32k/include/smalloc.h
r2506 r4164 1 /* $Id: smalloc.h,v 1. 1 2000-01-24 01:44:08bird Exp $1 /* $Id: smalloc.h,v 1.2 2000-09-02 21:08:04 bird Exp $ 2 2 * 3 3 * Swappable Heap. … … 21 21 /* XLATON */ 22 22 23 struct HeapState_s; 24 23 25 /******************************************************************************* 24 26 * Exported Functions and Variables * … … 33 35 int _swp_validptr2(void *, unsigned); 34 36 unsigned _swp_memfree(void); 37 unsigned _swp_memused(void); 38 int _swp_state(struct HeapState_s *); 35 39 int _swp_heap_check(void); 36 40 void _swp_heapmin(void); 37 41 void _swp_dump_subheaps(void); 38 42 void _swp_dump_allocated(unsigned); 43 44 extern unsigned cbSwpHeapMax; /* Maximum amount of memory used by the heap. */ 39 45 40 46 /* XLATOFF */ -
trunk/src/win32k/include/test.h
r3829 r4164 1 /* $Id: test.h,v 1. 1 2000-07-16 22:17:13bird Exp $1 /* $Id: test.h,v 1.2 2000-09-02 21:08:04 bird Exp $ 2 2 * 3 3 * Definitions and declarations for test moduls. … … 93 93 PULONG pulAddr, 94 94 PUSHORT pushPTDA); 95 ULONG LDRCALL fakeldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful); 96 ULONG LDRCALL fakeLDRClearSem(void); 97 ULONG KRNLCALL fakeKSEMRequestMutex(HKMTX hkmtx, ULONG ulTimeout); 98 extern HKMTX fakeLDRSem; 99 ULONG KRNLCALL fakeTKFuBuff(PVOID pv, PVOID pvUsr, ULONG cb, ULONG fl); 100 ULONG KRNLCALL fakeTKSuBuff(PVOID pvUsr, PVOID pv, ULONG cb, ULONG fl); 101 ULONG KRNLCALL fakeTKFuBufLen(PLONG pcch, PVOID pvUsr, ULONG cchMax, ULONG fl, BOOL fDblNULL); 102 PMTE LDRCALL fakeldrValidateMteHandle(HMTE hMTE); 103 void _Optlink fakeg_tkExecPgm(void); /* Not callable! (fakea.asm) */ 104 void _Optlink fakef_FuStrLenZ(void); /* Not callable! (fakea.asm) */ 105 void _Optlink fakef_FuStrLen(void); /* Not callable! (fakea.asm) */ 106 void _Optlink fakef_FuBuff(void); /* Not callable! (fakea.asm) */ 95 PMTE KRNLCALL fakeldrASMpMTEFromHandle( 96 HMTE hMTE); 97 ULONG LDRCALL fakeldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful); 98 ULONG LDRCALL fakeLDRClearSem(void); 99 ULONG LDRCALL fakeldrFindModule(PCHAR pachFilename, USHORT cchFilename, USHORT usClass, PPMTE ppMTE); 100 ULONG KRNLCALL fakeKSEMRequestMutex(HKSEMMTX hkmtx, ULONG ulTimeout); 101 ULONG KRNLCALL fakeKSEMReleaseMutex(HKSEMMTX hkmtx); 102 BOOL KRNLCALL fakeKSEMQueryMutex(HKSEMMTX hkmtx, PUSHORT pcusNest); 103 VOID KRNLCALL fakeKSEMInit(PKSEM pksem, ULONG fulType, ULONG fulFlags); 104 extern KSEMMTX fakeLDRSem; 105 extern char * fakeLDRLibPath; 106 ULONG KRNLCALL fakeTKFuBuff(PVOID pv, PVOID pvUsr, ULONG cb, ULONG fl); 107 ULONG KRNLCALL fakeTKSuBuff(PVOID pvUsr, PVOID pv, ULONG cb, ULONG fl); 108 ULONG KRNLCALL fakeTKFuBufLen(PLONG pcch, PVOID pvUsr, ULONG cchMax, ULONG fl, BOOL fDblNULL); 109 PMTE LDRCALL fakeldrValidateMteHandle(HMTE hMTE); 110 PSZ SECCALL fakeSecPathFromSFN(SFN hFile); 111 void _Optlink fakeg_tkExecPgm(void); /* Not callable! (fakea.asm) */ 112 void _Optlink fake_tkStartProcess(void);/* Not callable! (fakea.asm) */ 113 void _Optlink fakef_FuStrLenZ(void); /* Not callable! (fakea.asm) */ 114 void _Optlink fakef_FuStrLen(void); /* Not callable! (fakea.asm) */ 115 void _Optlink fakef_FuBuff(void); /* Not callable! (fakea.asm) */ 107 116 extern PTCB fakepTCBCur; 108 117 extern PPTDA fakepPTDACur; 109 118 extern char fakeptda_start; 110 119 extern USHORT fakeptda_environ; 120 extern KSEMMTX fakeptda_ptdasem; 121 extern HMTE fakeptda_module; 122 extern PSZ fakeptda_pBeginLIBPATH; 123 extern PSZ fakeldrpFileNameBuf; 111 124 112 125 #endif /* INCL_NO_FAKE */ 113 126 114 127 #ifdef INCL_16 115 extern USHORT usFakeVerMajor;/* define in probkrnl.c */116 extern USHORT usFakeVerMinor;/* define in probkrnl.c */128 extern USHORT usFakeVerMajor; /* define in probkrnl.c */ 129 extern USHORT usFakeVerMinor; /* define in probkrnl.c */ 117 130 #else 118 extern USHORT _usFakeVerMajor;119 extern USHORT _usFakeVerMinor;131 extern USHORT _usFakeVerMajor; 132 extern USHORT _usFakeVerMinor; 120 133 #endif 121 134 122 extern const char *pszInternalRevision; /* defined in win32ktst.c */ 135 #ifdef _OS2Krnl_h_ 136 extern int cObjectsFake; /* defined in win32ktst.c */ 137 extern OTE aKrnlOTE[24]; /* defined in win32ktst.c */ 138 #endif 123 139 124 140 #ifdef __cplusplus -
trunk/src/win32k/include/vprntf16.h
r2898 r4164 1 /* $Id: vprntf16.h,v 1. 1 2000-02-25 18:15:06bird Exp $1 /* $Id: vprntf16.h,v 1.2 2000-09-02 21:08:04 bird Exp $ 2 2 * 3 3 * printf/vprintf header file - 16bit. … … 30 30 * Function prototypes 31 31 */ 32 int printf16(const char *pszFormat, ...); 33 int vprintf16(const char *pszFormat, va_list args); 32 int FAR printf16(const char *pszFormat, ...); 33 int FAR vprintf16(const char *pszFormat, va_list args); 34 35 /*#pragma alloc_text(CODE16, printf16, vprintf16)*/ 34 36 35 37 -
trunk/src/win32k/include/win32k.h
r2918 r4164 1 /* $Id: win32k.h,v 1. 4 2000-02-26 20:21:42bird Exp $1 /* $Id: win32k.h,v 1.5 2000-09-02 21:08:00 bird Exp $ 2 2 * 3 3 * Top level make file for the Win32k library. … … 25 25 */ 26 26 #define K32_ALLOCMEMEX 0x01 27 27 #define K32_QUERYOTES 0x02 28 #define K32_QUERYOPTIONSSTATUS 0x03 29 #define K32_SETOPTIONS 0x04 28 30 29 31 /* … … 36 38 * Structures and Typedefs * 37 39 *******************************************************************************/ 40 #pragma pack(1) 41 42 /* 43 * Object Table Entry buffer. 44 */ 45 typedef struct _QueryOTE 46 { 47 ULONG ote_size; /* Object virtual size */ 48 ULONG ote_base; /* Object base virtual address */ 49 ULONG ote_flags; /* Attribute flags */ 50 ULONG ote_pagemap; /* Object page map index */ 51 ULONG ote_mapsize; /* Num of entries in obj page map */ 52 /*ULONG ote_reserved;*/ 53 USHORT ote_sel; /* Object Selector */ 54 USHORT ote_hob; /* Object Handle */ 55 } QOTE, *PQOTE; 56 57 typedef struct _QueryOTEBuffer 58 { 59 ULONG cOTEs; /* Number of entries in aOTE. */ 60 QOTE aOTE[1]; /* Array of OTEs. */ 61 } QOTEBUFFER, *PQOTEBUFFER; 62 63 64 /* 65 * Options struct. 66 * 67 * (The function of these members are described in options.h in 68 * the src\win32k\include directory.) 69 * All members of this struct (except cb ofcourse) is changable. 70 */ 71 typedef struct _K32Options 72 { 73 ULONG cb; 74 75 /** @cat logging options */ 76 USHORT usCom; /* Output port no. */ 77 ULONG fLogging; /* Logging. */ 78 79 /** @cat Options affecting the generated LX executables */ 80 ULONG fPE; /* Flags set the type of conversion. */ 81 ULONG ulInfoLevel; /* Pe2Lx InfoLevel. */ 82 83 /** @cat Options affecting the generated ELF executables */ 84 ULONG fElf; /* Elf flags. */ 85 86 /** @cat Options affecting the UNIX script executables */ 87 ULONG fUNIXScript; /* UNIX script flags. */ 88 89 /** @cat Options affecting the REXX script executables */ 90 ULONG fREXXScript; /* REXX script flags. */ 91 92 /** @cat Options affecting the JAVA executables */ 93 ULONG fJava; /* Java flags. */ 94 95 /** @cat Options affecting the executables */ 96 ULONG fNoLoader; /* No loader stuff. !FIXME! We should import / functions even if this flag is set!!! */ 97 98 /** @cat Options affecting the heap. */ 99 ULONG cbSwpHeapMax; /* Maximum heapsize. */ 100 ULONG cbResHeapMax; /* Maxiumem residentheapsize. */ 101 } K32OPTIONS, *PK32OPTIONS; 102 103 104 /* 105 * Status struct. 106 * 107 */ 108 typedef struct _K32Status 109 { 110 ULONG cb; 111 112 /** @cat Options status. */ 113 ULONG fQuiet; /* Quiet initialization. */ 114 115 /** @cat Kernel status. */ 116 ULONG fKernel; /* Smp or uni kernel. */ 117 ULONG ulBuild; /* Kernel build. */ 118 USHORT usVerMajor; /* OS/2 major ver - 20 */ 119 USHORT usVerMinor; /* OS/2 minor ver - 30,40 */ 120 121 /** @cat Heap status. */ 122 ULONG cbSwpHeapInit; /* Initial heapsize. */ 123 ULONG cbSwpHeapFree; /* Amount of used space. */ 124 ULONG cbSwpHeapUsed; /* Amount of free space reserved. */ 125 ULONG cbSwpHeapSize; /* Amount of memory used by the heap free and used++. */ 126 ULONG cSwpBlocksUsed; /* Count of used blocks. */ 127 ULONG cSwpBlocksFree; /* Count of free blocks. */ 128 129 ULONG cbResHeapInit; /* Initial heapsize. */ 130 ULONG cbResHeapFree; /* Amount of free space reserved. */ 131 ULONG cbResHeapUsed; /* Amount of used space. */ 132 ULONG cbResHeapSize; /* Amount of memory used by the heap free and used++. */ 133 ULONG cResBlocksUsed; /* Count of used blocks. */ 134 ULONG cResBlocksFree; /* Count of free blocks. */ 135 136 /** @cat Win32k build, version and init stuff */ 137 CHAR szBuildDate[12]; /* Date of the win32k build. (Sep 02 2000) */ 138 CHAR szBuildTime[9]; /* Time of the win32k build. (11:44:21) */ 139 ULONG ulVersion; /* Win32k version */ 140 CHAR szSymFile[CCHMAXPATH]; /* The name of the symbol file or sym database. */ 141 142 /** @cat Statistics */ 143 ULONG cPe2LxModules; /* Number of Pe2Lx modules currently loaded. */ 144 ULONG cElf2LxModules; /* Number of Elf2Lx modules currently loaded. */ 145 /*...*/ 146 } K32STATUS, *PK32STATUS; 147 148 149 38 150 /* 39 151 * K32 category parameter structs … … 51 163 } K32ALLOCMEMEX, *PK32ALLOCMEMEX; 52 164 53 54 55 56 #ifdef INCL_WIN32K_LIB 165 typedef struct _k32QueryOTEs 166 { 167 HMODULE hMTE; /* Module handle. */ 168 PQOTEBUFFER pQOte; /* Pointer to output buffer. */ 169 ULONG cbQOte; /* Size of the buffer pointed to by pQOte */ 170 ULONG rc; /* Return code. */ 171 } K32QUERYOTES, *PK32QUERYOTES; 172 173 typedef struct _k32QueryOptionsStatus 174 { 175 PK32OPTIONS pOptions; /* Pointer to option struct. (NULL allowed) */ 176 PK32STATUS pStatus; /* Pointer to status struct. (NULL allowed) */ 177 ULONG rc; /* Return code. */ 178 } K32QUERYOPTIONSSTATUS, *PK32QUERYOPTIONSSTATUS; 179 180 typedef struct _k32SetOptions 181 { 182 PK32OPTIONS pOptions; /* Pointer to option struct. (NULL allowed) */ 183 ULONG rc; /* Return code. */ 184 } K32SETOPTIONS, *PK32SETOPTIONS; 185 186 187 #pragma pack() 188 189 #ifndef NO_WIN32K_LIB_FUNCTIONS 57 190 /******************************************************************************* 58 191 * External Functions * 59 192 *******************************************************************************/ 193 /* Win32k APIs */ 60 194 APIRET APIENTRY libWin32kInit(void); 61 195 APIRET APIENTRY libWin32kTerm(void); 196 BOOL APIENTRY libWin32kInstalled(void); 197 APIRET APIENTRY libWin32kQueryOptionsStatus(PK32OPTIONS pOptions, PK32STATUS pStatus); 198 APIRET APIENTRY libWin32kSetOptions(PK32OPTIONS pOptions); 199 200 /* "Extra OS2 APIs" */ 201 APIRET APIENTRY DosAllocMemEx(PPVOID ppv, ULONG cb, ULONG flag); 202 APIRET APIENTRY W32kQueryOTEs(HMODULE hMTE, PQOTEBUFFER pQOte, ULONG cbQOte); 203 204 /* Helper function */ 62 205 USHORT APIENTRY libHelperGetCS(void); 63 APIRET APIENTRY DosAllocMemEx(PPVOID ppv, ULONG cb, ULONG flag);64 206 65 207 -
trunk/src/win32k/k32/k32AllocMemEx.cpp
r2823 r4164 1 /* $Id: k32AllocMemEx.cpp,v 1. 2 2000-02-18 19:27:30bird Exp $1 /* $Id: k32AllocMemEx.cpp,v 1.3 2000-09-02 21:08:05 bird Exp $ 2 2 * 3 3 * k32AllocMemEx - Equivalent to DosAllocMem, but this one … … 18 18 #define INCL_OS2KRNL_VM 19 19 20 #define NO_WIN32K_LIB_FUNCTIONS 21 20 22 #ifndef OBJ_SELMAPALL 21 23 #define OBJ_SELMAPALL 0x00000800UL … … 27 29 *******************************************************************************/ 28 30 #include <os2.h> 31 #include "devSegDf.h" /* Win32k segment definitions. */ 29 32 #include "OS2Krnl.h" 33 #include "win32k.h" 30 34 #include "k32.h" 31 35 #include "options.h" 32 36 #include "dev32.h" 33 37 #include "log.h" 38 #include "macros.h" 34 39 35 40 … … 95 100 APIRET k32AllocMemEx(PPVOID ppv, ULONG cb, ULONG flag, ULONG ulCS, ULONG ulEIP) 96 101 { 102 #if 0 97 103 APIRET rc; 98 104 ULONG flFlags2; … … 133 139 134 140 return rc; 141 #else 142 NOREF(ppv); 143 NOREF(cb); 144 NOREF(flag); 145 NOREF(ulCS); 146 NOREF(ulEIP); 147 return ERROR_NOT_SUPPORTED; 148 #endif 135 149 } 136 150 -
trunk/src/win32k/ldr/ModuleBase.cpp
r2926 r4164 1 /* $Id: ModuleBase.cpp,v 1. 3 2000-02-27 02:17:06 bird Exp $1 /* $Id: ModuleBase.cpp,v 1.4 2000-09-02 21:08:06 bird Exp $ 2 2 * 3 3 * ModuleBase - Implementetation. … … 12 12 * Defined Constants And Macros * 13 13 *******************************************************************************/ 14 #define INCL_DOSERRORS 14 #define INCL_DOSERRORS /* DOS Error codes. */ 15 15 #ifdef RING0 16 #define INCL_NOAPI 16 #define INCL_NOAPI /* RING0: No apis. */ 17 17 #else /*RING3*/ 18 #define INCL_DOSFILEMGR 18 #define INCL_DOSFILEMGR /* RING3: DOS File api. */ 19 19 #endif 20 20 … … 23 23 * Header Files * 24 24 *******************************************************************************/ 25 #include <os2.h> /* OS/2 header file. */ 26 27 #include "malloc.h" /* win32k malloc. Not C library! */ 28 29 #include <string.h> /* C library string.h. */ 30 #include <stdarg.h> /* C library stdarg.h. */ 31 32 #include "vprintf.h" /* win32k printf and vprintf. Not C library! */ 33 #include "dev32.h" /* 32-Bit part of the device driver. (SSToDS) */ 34 #include "OS2Krnl.h" /* kernel structs. (SFN) */ 35 #include "modulebase.h" /* ModuleBase class definitions, ++. */ 25 #include <os2.h> /* OS/2 header file. */ 26 27 #include "devSegDf.h" /* Win32k segment definitions. */ 28 #include "malloc.h" /* Win32k malloc. Not C library! */ 29 30 #include <string.h> /* C library string.h. */ 31 #include <stdarg.h> /* C library stdarg.h. */ 32 33 #include "vprintf.h" /* win32k printf and vprintf. Not C library! */ 34 #include "dev32.h" /* 32-Bit part of the device driver. (SSToDS) */ 35 #include "OS2Krnl.h" /* kernel structs. (SFN) */ 36 #include "ldrCalls.h" /* ldrOpenPath and ldrlv_t. */ 37 #include "modulebase.h" /* ModuleBase class definitions, ++. */ 36 38 37 39 … … 159 161 } 160 162 163 164 /** 165 * openPath - opens file eventually searching loader specific paths. 166 * 167 * This base implementation simply calls ldrOpenPath. 168 * This method is only called for DLLs. DosLoadModule and Imports. 169 * 170 * @returns OS2 return code. 171 * pLdrLv->lv_sfn is set to filename handle. 172 * @param pachFilename Pointer to filename. Not zero terminated! 173 * @param cchFilename Filename length. 174 * @param pLdrLv Loader local variables? (Struct from KERNEL.SDF) 175 * @param pful Pointer to flags which are passed on to ldrOpen. 176 * @sketch 177 * This is roughly what the original ldrOpenPath does: 178 * if !CLASS_GLOBAL or miniifs then 179 * ldrOpen(pachModName) 180 * else 181 * loop until no more libpath elements 182 * get next libpath element and add it to the modname. 183 * try open the modname 184 * if successfull then break the loop. 185 * endloop 186 * endif 187 */ 188 ULONG ModuleBase::openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful) /* (ldrOpenPath) */ 189 { 190 #ifdef RING0 191 printf("ModuleBase::openPath:\n"); 192 return ldrOpenPath(pachFilename, cchFilename, pLdrLv, pful); 193 #else 194 NOREF(pachFilename); 195 NOREF(cchFilename); 196 NOREF(pLdrLv); 197 NOREF(pful); 198 return ERROR_NOT_SUPPORTED; 199 #endif 200 } 161 201 162 202 … … 232 272 233 273 /** 274 * Gets the fullpath filename. 275 * @returns Const ("Readonly") pointer to the filename. 276 * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) 277 */ 278 PCSZ ModuleBase::getFilename() 279 { 280 return pszFilename; 281 } 282 283 284 /** 285 * Gets the modulename. 286 * @returns Const ("Readonly") pointer to the module name. 287 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 288 * @remark Modulename is filename without path and extention. 289 */ 290 PCSZ ModuleBase::getModuleName() 291 { 292 return pszModuleName; 293 } 294 295 296 /** 234 297 * Output function for Modules. 235 298 * @param pszFormat Pointer to format string. … … 273 336 rc = DosRead(hFile, pvBuffer, cbToRead, &cbRead); 274 337 else 275 printErr(("DosSetFilePtr(hfile, %#8x(%d),..) failed with rc = %d. ",338 printErr(("DosSetFilePtr(hfile, %#8x(%d),..) failed with rc = %d.\n", 276 339 ulOffset, ulOffset, rc)); 277 340 -
trunk/src/win32k/ldr/calltab.asm
r3411 r4164 1 ; $Id: calltab.asm,v 1.12 2000-04-17 01:56:49 bird Exp $ 2 ; 3 ; callTab - Call back again table - table with entry for each function which is overrided. 4 ; It holds the part of the prolog which was replaced by a jmp instruction. 5 ; 6 ; Copyright (c) 1998-1999 knut st. osmundsen 1 ; $Id: calltab.asm,v 1.13 2000-09-02 21:08:06 bird Exp $ 2 ; 3 ; callTab - Call back again table - table with entry for each function or 4 ; variable which is overrided. 5 ; It holds the part of the prolog which was replaced by the jmp 6 ; instruction (overridden functions). 7 ; 8 ; Copyright (c) 1998-2000 knut st. osmundsen 7 9 ; 8 10 ; Project Odin Software License can be found in LICENSE.TXT … … 35 37 public _VMGetOwner@8 36 38 public _g_tkExecPgm 39 public _tkStartProcess 37 40 public _f_FuStrLenZ 38 41 public _f_FuBuff 39 42 43 public _VMObjHandleInfo@12 44 public _ldrASMpMTEFromHandle@4 45 public _ldrOpenPath@16 46 public _LDRClearSem@0 47 public _ldrFindModule@16 48 public _KSEMRequestMutex@8 49 public _KSEMReleaseMutex@4 50 public _KSEMQueryMutex@8 51 public _KSEMInit@12 52 53 public pLDRSem 54 public LDRSem_offObject 55 public _fpLDRSem 56 public LDRSem_sel 57 58 public pLDRLibPath 59 public LDRLibPath_offObject 60 public _fpLDRLibPath 61 public LDRLibPath_sel 62 63 public _TKSuBuff@16 64 public _TKFuBuff@16 65 public _TKFuBufLen@20 66 public _ldrValidateMteHandle@4 67 68 public ppTCBCur 69 public pTCBCur_offObject 70 public _fppTCBCur 71 public pTCBCur_sel 72 73 public ppPTDACur 74 public pPTDACur_offObject 75 public _fppPTDACur 76 public pPTDACur_sel 77 78 public pptda_start 79 public ptda_start_offObject 80 public _fpptda_start 81 public ptda_start_sel 82 83 public pptda_environ 84 public ptda_environ_offObject 85 public _fpptda_environ 86 public ptda_environ_sel 87 88 public pptda_ptdasem 89 public ptda_ptdasem_offObject 90 public _fpptda_ptdasem 91 public ptda_ptdasem_sel 92 93 public pptda_module 94 public ptda_module_offObject 95 public _fpptda_module 96 public ptda_module_sel 97 98 public pptda_pBeginLIBPATH 99 public ptda_pBeginLIBPATH_offObject 100 public _fpptda_pBeginLIBPATH 101 public pptda_pBeginLIBPATH_sel 102 103 public pldrpFileNameBuf 104 public pldrpFileNameBuf_offObject 105 public _fpldrpFileNameBuf 106 public pldrpFileNameBuf_sel 107 108 public SecPathFromSFN 109 40 110 41 111 ; … … 47 117 48 118 CALLTAB segment 49 assume cs:CALLTAB, ds:flat, ss:nothing 119 ;assume cs:CALLTAB, ds:flat, ss:nothing 120 assume ds:flat, ss:nothing 50 121 ; 51 122 ; callTab is an array of evt. function prologs with a jump to the real function. … … 56 127 ; 57 128 callTab: 129 130 ; 0 58 131 _ldrRead@24 PROC NEAR 59 132 db MAXSIZE_PROLOG dup(0cch) 60 133 _ldrRead@24 ENDP 61 134 135 ; 1 62 136 _ldrOpen@12 PROC NEAR 63 137 db MAXSIZE_PROLOG dup(0cch) 64 138 _ldrOpen@12 ENDP 65 139 140 ; 2 66 141 _ldrClose@4 PROC NEAR 67 142 db MAXSIZE_PROLOG dup(0cch) 68 143 _ldrClose@4 ENDP 69 144 145 ; 3 70 146 _LDRQAppType@8 PROC NEAR 71 147 db MAXSIZE_PROLOG dup(0cch) 72 148 _LDRQAppType@8 ENDP 73 149 150 ; 4 74 151 _ldrEnum32bitRelRecs@24 PROC NEAR 75 152 db MAXSIZE_PROLOG dup(0cch) 76 153 _ldrEnum32bitRelRecs@24 ENDP 77 154 78 155 ; 5 79 156 _IOSftOpen@20 PROC NEAR 80 157 db MAXSIZE_PROLOG dup(0cch) 81 158 _IOSftOpen@20 ENDP 82 159 160 ; 6 83 161 _IOSftClose@4 PROC NEAR 84 162 db MAXSIZE_PROLOG dup(0cch) 85 163 _IOSftClose@4 ENDP 86 164 165 ; 7 87 166 _IOSftTransPath@4 PROC NEAR 88 167 db MAXSIZE_PROLOG dup(0cch) 89 168 _IOSftTransPath@4 ENDP 90 169 170 ; 8 91 171 _IOSftReadAt@20 PROC NEAR 92 172 db MAXSIZE_PROLOG dup(0cch) 93 173 _IOSftReadAt@20 ENDP 94 174 175 ; 9 95 176 _IOSftWriteAt@20 PROC NEAR 96 177 db MAXSIZE_PROLOG dup(0cch) 97 178 _IOSftWriteAt@20 ENDP 98 179 180 ; 10 99 181 _SftFileSize@8 PROC NEAR 100 182 db MAXSIZE_PROLOG dup(0cch) 101 183 _SftFileSize@8 ENDP 102 184 103 185 ; 11 104 186 _VMAllocMem@36 PROC NEAR 105 187 db MAXSIZE_PROLOG dup(0cch) 106 188 _VMAllocMem@36 ENDP 107 189 190 ; 12 108 191 _VMGetOwner@8 PROC NEAR 109 192 db MAXSIZE_PROLOG dup(0cch) 110 193 _VMGetOwner@8 ENDP 111 194 195 ; 13 112 196 _g_tkExecPgm PROC NEAR 113 197 db MAXSIZE_PROLOG dup(0cch) 114 198 _g_tkExecPgm ENDP 115 199 116 200 ; 14 201 _tkStartProcess PROC NEAR 202 db MAXSIZE_PROLOG dup(0cch) 203 _tkStartProcess ENDP 204 205 ; 15 117 206 _f_FuStrLenZ PROC FAR 118 207 db MAXSIZE_PROLOG dup(0cch) 119 208 _f_FuStrLenZ ENDP 120 209 210 ; 16 121 211 _f_FuStrLen PROC FAR 122 212 db MAXSIZE_PROLOG dup(0cch) 123 213 _f_FuStrLen ENDP 124 214 215 ; 17 125 216 _f_FuBuff PROC FAR 126 217 db MAXSIZE_PROLOG dup(0cch) 127 218 _f_FuBuff ENDP 128 219 220 ; 18 129 221 _VMObjHandleInfo@12 PROC NEAR 130 222 db MAXSIZE_PROLOG dup(0cch) 131 223 _VMObjHandleInfo@12 ENDP 132 224 225 ; 19 226 _ldrASMpMTEFromHandle@4 PROC NEAR 227 db MAXSIZE_PROLOG dup(0cch) 228 _ldrASMpMTEFromHandle@4 ENDP 229 230 ; 20 231 _ldrOpenPath@16 PROC NEAR 232 db MAXSIZE_PROLOG dup(0cch) 233 _ldrOpenPath@16 ENDP 234 235 ; 21 236 _LDRClearSem@0 PROC NEAR 237 db MAXSIZE_PROLOG dup(0cch) 238 _LDRClearSem@0 ENDP 239 240 ; 22 241 _ldrFindModule@16 PROC NEAR 242 db MAXSIZE_PROLOG dup(0cch) 243 _ldrFindModule@16 ENDP 244 245 ; 23 246 _KSEMRequestMutex@8 PROC NEAR 247 db MAXSIZE_PROLOG dup(0cch) 248 _KSEMRequestMutex@8 ENDP 249 250 ; 24 251 _KSEMReleaseMutex@4 PROC NEAR 252 db MAXSIZE_PROLOG dup(0cch) 253 _KSEMReleaseMutex@4 ENDP 254 255 ; 25 256 _KSEMQueryMutex@8 PROC NEAR 257 db MAXSIZE_PROLOG dup(0cch) 258 _KSEMQueryMutex@8 ENDP 259 260 ; 26 261 _KSEMInit@12 PROC NEAR 262 db MAXSIZE_PROLOG dup(0cch) 263 _KSEMInit@12 ENDP 264 265 ; 27 266 pLDRSem dd 0 267 LDRSem_offObject dd 0 268 _fpLDRSem dd 0 269 LDRSem_sel dw 0 270 db (MAXSIZE_PROLOG - 14) dup(0cch) 271 272 273 ; 28 274 pLDRLibPath dd 0 275 LDRLibPath_offObject dd 0 276 _fpLDRLibPath dd 0 277 LDRLibPath_sel dw 0 278 db (MAXSIZE_PROLOG - 14) dup(0cch) 279 280 ; 29 281 _TKSuBuff@16 PROC NEAR 282 db MAXSIZE_PROLOG dup(0cch) 283 _TKSuBuff@16 ENDP 284 285 ; 30 286 _TKFuBuff@16 PROC NEAR 287 db MAXSIZE_PROLOG dup(0cch) 288 _TKFuBuff@16 ENDP 289 290 ; 31 291 _TKFuBufLen@20 PROC NEAR 292 db MAXSIZE_PROLOG dup(0cch) 293 _TKFuBufLen@20 ENDP 294 295 ; 32 296 _ldrValidateMteHandle@4 PROC NEAR 297 db MAXSIZE_PROLOG dup(0cch) 298 _ldrValidateMteHandle@4 ENDP 299 300 ; 33 301 ppTCBCur dd 0 302 pTCBCur_offObject dd 0 303 _fppTCBCur dd 0 304 pTCBCur_sel dw 0 305 db (MAXSIZE_PROLOG - 14) dup(0cch) 306 307 ; 34 308 ppPTDACur dd 0 309 pPTDACur_offObject dd 0 310 _fppPTDACur dd 0 311 pPTDACur_sel dw 0 312 db (MAXSIZE_PROLOG - 14) dup(0cch) 313 314 ; 35 315 pptda_start dd 0 316 ptda_start_offObject dd 0 317 _fpptda_start dd 0 318 ptda_start_sel dw 0 319 db (MAXSIZE_PROLOG - 14) dup(0cch) 320 321 ; 36 322 pptda_environ dd 0 323 ptda_environ_offObject dd 0 324 _fpptda_environ dd 0 325 ptda_environ_sel dw 0 326 db (MAXSIZE_PROLOG - 14) dup(0cch) 327 328 ; 37 329 pptda_ptdasem dd 0 330 ptda_ptdasem_offObject dd 0 331 _fpptda_ptdasem dd 0 332 ptda_ptdasem_sel dw 0 333 db (MAXSIZE_PROLOG - 14) dup(0cch) 334 335 ; 38 336 pptda_module dd 0 337 ptda_module_offObject dd 0 338 _fpptda_module dd 0 339 ptda_module_sel dw 0 340 db (MAXSIZE_PROLOG - 14) dup(0cch) 341 342 ; 39 343 pptda_pBeginLIBPATH dd 0 344 ptda_pBeginLIBPATH_offObject dd 0 345 _fpptda_pBeginLIBPATH dd 0 346 pptda_pBeginLIBPATH_sel dw 0 347 db (MAXSIZE_PROLOG - 14) dup(0cch) 348 349 ; 40 350 pldrpFileNameBuf dd 0 351 pldrpFileNameBuf_offObject dd 0 352 _fpldrpFileNameBuf dd 0 353 pldrpFileNameBuf_sel dw 0 354 db (MAXSIZE_PROLOG - 14) dup(0cch) 355 356 ; 41 357 SecPathFromSFN PROC NEAR 358 db MAXSIZE_PROLOG dup(0cch) 359 SecPathFromSFN ENDP 360 361 133 362 CALLTAB ENDS 134 363 -
trunk/src/win32k/ldr/ldr.cpp
r2501 r4164 1 /* $Id: ldr.cpp,v 1. 7 2000-01-22 18:21:01bird Exp $1 /* $Id: ldr.cpp,v 1.8 2000-09-02 21:08:06 bird Exp $ 2 2 * 3 3 * ldr.cpp - Loader helpers. … … 14 14 #define INCL_DOSERRORS 15 15 #define INCL_NOPMAPI 16 16 #define INCL_OS2KRNL_SEM 17 #define INCL_OS2KRNL_PTDA 17 18 18 19 /******************************************************************************* … … 21 22 #include <os2.h> 22 23 24 #include "devSegDf.h" 23 25 #include "malloc.h" 24 26 #include "new.h" … … 26 28 #include <stdlib.h> 27 29 #include <stddef.h> 30 #include <string.h> 28 31 29 32 #include "log.h" 33 #include "avl.h" 30 34 #include <peexe.h> 31 35 #include <exe386.h> 32 36 #include "OS2Krnl.h" 37 #include "ldr.h" 38 #include "ldrCalls.h" 33 39 #include "ModuleBase.h" 34 40 #include "pe2lx.h" 35 #include "avl.h"36 #include "ldr.h"37 41 #include "options.h" 38 42 … … 41 45 * Global Variables * 42 46 *******************************************************************************/ 43 PAVLNODECORE pSFNRoot = NULL; 44 PAVLNODECORE pMTERoot = NULL; 45 47 static PAVLNODECORE pSFNRoot = NULL; 48 static PAVLNODECORE pMTERoot = NULL; 49 50 51 /* 52 * Loader State. (See ldr.h for more info.) 53 */ 54 ULONG ulLdrState = LDRSTATE_UNKNOWN; 55 56 57 /* 58 * Pointer to the executable module being loaded. 59 * This pointer is set by ldrOpen and cleared by tkExecPgm. 60 * It's hence only valid at tkExecPgm time. (isLdrStateExecPgm() == TRUE). 61 */ 62 PMODULE pExeModule = NULL; 63 64 65 /* 66 * Filehandle bitmap. 67 */ 46 68 unsigned char achHandleStates[MAX_FILE_HANDLES/8]; 69 70 47 71 48 72 … … 64 88 * Gets a module by the MTE. 65 89 * @returns Pointer to module node. If not found NULL. 66 * @param pMTE Pointer a nModule Table Entry.90 * @param pMTE Pointer a Module Table Entry. 67 91 * @sketch Try find it in the MTE tree. 68 92 * IF not found THEN … … 124 148 125 149 /** 150 * Gets a module by the hMTE. 151 * @returns Pointer to module node. If not found NULL. 152 * @param hMTE Handle to a Module Table Entry. 153 * @sketch Convert hMte to an pMTE (pointer to MTE). 154 * Call getModuleByMTE with MTE pointer. 155 * @status completely implemented. 156 * @author knut st. osmundsen 157 */ 158 PMODULE getModuleByhMTE(HMTE hMTE) 159 { 160 PMTE pMTE; 161 162 pMTE = ldrValidateMteHandle(hMTE); 163 if (pMTE != NULL) 164 return getModuleByMTE(pMTE); 165 166 return NULL; 167 } 168 169 170 /** 126 171 * Get a module by filename. 127 172 * @returns Pointer to module node. If not found NULL. … … 236 281 delete pMod->Data.pPe2Lx; 237 282 break; 238 283 /* 239 284 case MOD_TYPE_ELF2LX: 240 case MOD_TYPE_SCRIPT: 241 case MOD_TYPE_PE: 285 break; 286 */ 287 #ifdef DEBUG 242 288 default: 243 289 kprintf(("removeModule: Unknown type, %#x\n", pMod->fFlags & MOD_TYPE_MASK)); 290 #endif 244 291 } 245 292 … … 248 295 249 296 return NO_ERROR; 297 } 298 299 300 /** 301 * Gets the path of the executable being executed. 302 * @returns Pointer to pszPath on success. Path has _NOT_ a trailing slash. 303 * NULL pointer on error. 304 * @param pszPath Pointer to path buffer. Expects CCHMAXPATH length. 305 * @param fExecChild Use hMTE of the PTDAExecChild if present. 306 * @sketch 307 * @status completely implemented. 308 * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) 309 * @remark The path from the pExeModule might not be fully qualified. 310 */ 311 PSZ ldrGetExePath(PSZ pszPath, BOOL fExecChild) 312 { 313 PCSZ pszFilename; 314 PCSZ psz; 315 316 #if 0 /* getFilename not implemented */ 317 if (pExeModule != NULL) 318 /* 319 * We have the executable object pointer. Let's use it! 320 */ 321 pszFilename = pExeModule->Data.pModule->getFilename(); 322 else 323 #endif 324 { 325 /* 326 * Get the hMTE for the executable using the pPTDAExecChild 327 * Then get the pMTE, and access the smte_path to get a pointer to the executable path. 328 */ 329 PPTDA pPTDACur; /* Pointer to the current (system context) PTDA */ 330 PPTDA pPTDA; /* PTDA in question. */ 331 HMTE hMTE = NULLHANDLE; /* Modulehandle of the executable module. */ 332 PMTE pMTE; /* Pointer to ModuleTableEntry of the executable module. */ 333 334 /* 335 * Get the current PTDA. (Fail if this call failes.) 336 * IF pPTDAExecChild isn't NULL THEN get hMTE for that. 337 * IF no pPTDAExecChild THEN get hMte for the current PTDA. 338 */ 339 pPTDACur = ptdaGetCur(); 340 if (pPTDACur != NULL) 341 { 342 pPTDA = ptdaGet_pPTDAExecChild(pPTDACur); 343 if (pPTDA != NULL && fExecChild) 344 hMTE = ptdaGet_ptda_module(pPTDA); 345 if (hMTE == NULLHANDLE) 346 hMTE = ptdaGet_ptda_module(pPTDACur); 347 } 348 else 349 { /* Not called at task time? No current task! */ 350 kprintf(("ldrGetExePath: Failed to get current PTDA.\n")); 351 return NULL; 352 } 353 354 /* fail if hMTE is NULLHANDLE ie. not found / invalid */ 355 if (hMTE == NULLHANDLE) 356 { 357 kprintf(("ldrGetExePath: Failed to get hMTE from the PTDAs.\n")); 358 return NULL; 359 } 360 361 /* get the pMTE for this hMTE */ 362 pMTE = ldrASMpMTEFromHandle(hMTE); 363 if (pMTE == NULL) 364 { 365 kprintf(("ldrGetExePath: ldrASMpMTEFromHandle failed for hMTE=0x%04.\n", hMTE)); 366 return NULL; 367 } 368 if (pMTE->mte_swapmte == NULL) /* paranoia */ 369 { 370 kprintf(("ldrGetExePath: mte_swapmte is NULL.\n")); 371 return NULL; 372 } 373 374 /* take the filename from the swappable MTE */ 375 pszFilename = pMTE->mte_swapmte->smte_path; 376 if (pszFilename == NULL) 377 { 378 kprintf(("ldrGetExePath: smte_path is NULL.\n")); 379 return NULL; 380 } 381 } 382 383 /* paranoia... */ 384 if (*pszFilename == '\0') 385 { 386 kprintf(("ldrGetExePath: pszFilename is empty!\n")); 387 return NULL; 388 } 389 390 /* 391 * Skip back over the filename. (stops pointing at the slash or ':') 392 */ 393 psz = pszFilename + strlen(pszFilename)-1; 394 while (psz >= pszFilename && *psz != '\\' && *psz != '/' && *psz != ':') 395 psz--; 396 397 /* 398 * If no path the fail. 399 */ 400 if (psz <= pszFilename) 401 { 402 kprintf(("ldrGetExePath: Exepath is empty.\n")); 403 return NULL; 404 } 405 406 /* 407 * Copy path and return. 408 */ 409 memcpy(pszPath, pszFilename, psz - pszFilename); 410 pszPath[psz - pszFilename] = '\0'; 411 return pszPath; 250 412 } 251 413 -
trunk/src/win32k/ldr/myLDRQAppType.cpp
r2501 r4164 1 /* $Id: myLDRQAppType.cpp,v 1. 3 2000-01-22 18:21:02bird Exp $1 /* $Id: myLDRQAppType.cpp,v 1.4 2000-09-02 21:08:07 bird Exp $ 2 2 * 3 3 * _myLDRQAppType - _LDRQAppType overload. … … 15 15 #define INCL_NOPMAPI 16 16 17 #define INCL_OS2KRNL_PTDA 18 #define INCL_OS2KRNL_SEM 19 17 20 /******************************************************************************* 18 21 * Header Files * … … 20 23 #include <os2.h> 21 24 25 #include "devSegDf.h" /* Win32k segment definitions. */ 22 26 #include "OS2Krnl.h" 27 #include "avl.h" 28 #include "ldr.h" 23 29 #include "ldrCalls.h" 24 30 #include "log.h" 25 31 26 BOOL fQAppType = FALSE;27 32 28 33 /** 29 * LDRQAppType - Loader Query Application Type. 30 * We set a flag while we're executing this function. Just to speed up processing. 31 * If a PE file is queried, a dummy LX header is presented. 34 * LDRQAppType - Loader Query Application Type - DosQueryAppType worker. 35 * 36 * We overrides this be able to determin if a convertion is only for a 37 * LDRQAppType call. 38 * 39 * isLdrStateQAppType() returns TRUE when this procedure is on the stack. 40 * 32 41 * @returns return code. 33 42 * @param p1 … … 38 47 APIRET rc; 39 48 40 kprintf(("_LDRQAppType: entry\n")); 41 fQAppType = 1; 49 kprintf(("myLDRQAppType: entry\n")); 50 rc = KSEMRequestMutex(ptda_ptda_ptdasem(ptdaGetCur()), KSEM_INDEFINITE_WAIT); 51 if (rc != NO_ERROR) 52 { 53 kprintf(("myLDRQAppType: failed to get intra-process semaphore.\n")); 54 return rc; 55 } 56 rc = LDRRequestSem(); 57 if (rc != NO_ERROR) 58 { 59 kprintf(("myLDRQAppType: failed to get loader semaphore.\n")); 60 return rc; 61 } 62 63 ASSERT_LdrStateUnknown("myLDRQAppType") 64 setLdrStateQAppType(); 42 65 43 66 rc = LDRQAppType(p1, p2); 44 67 45 fQAppType = 0; 46 kprintf(("_LDRQAppType: exit\n")); 68 ASSERT_LdrStateQAppType("myLDRQAppType") 69 setLdrStateUnknown(); 70 71 LDRClearSem(); 72 KSEMReleaseMutex(ptda_ptda_ptdasem(ptdaGetCur())); 73 kprintf(("myLDRQAppType: exit\n")); 47 74 48 75 return rc; -
trunk/src/win32k/ldr/myldrClose.cpp
r2501 r4164 1 /* $Id: myldrClose.cpp,v 1. 5 2000-01-22 18:21:02bird Exp $1 /* $Id: myldrClose.cpp,v 1.6 2000-09-02 21:08:07 bird Exp $ 2 2 * 3 3 * myldrClose - ldrClose … … 23 23 #include <stdlib.h> 24 24 25 #include "devSegDf.h" /* Win32k segment definitions. */ 25 26 #include "log.h" 27 #include "avl.h" 26 28 #include <peexe.h> 27 29 #include <exe386.h> 28 30 #include "OS2Krnl.h" 29 #include "avl.h"30 #include "ModuleBase.h"31 31 #include "ldr.h" 32 32 #include "ldrCalls.h" 33 #include "ModuleBase.h" 34 #include "Pe2Lx.h" 33 35 34 36 … … 42 44 { 43 45 /* closes handle */ 44 kprintf((" ldrClose: hFile = %.4x\n", hFile));46 kprintf(("myldrClose: hFile = %.4x\n", hFile)); 45 47 if (GetState(hFile) == HSTATE_OUR) 46 48 { … … 52 54 pMod->Data.pModule->dumpVirtualLxFile(); 53 55 else 54 kprintf((" ldrClose: getModuleBySFN failed!!!"));56 kprintf(("myldrClose: getModuleBySFN failed!!!")); 55 57 #endif 56 58 57 59 rc = removeModule(hFile); 58 60 if (rc != NO_ERROR) 59 kprintf((" ldrClose: removeModule retured rc=%d\n", rc));61 kprintf(("myldrClose: removeModule retured rc=%d\n", rc)); 60 62 61 63 #pragma info(notrd) … … 63 65 #pragma info(restore) 64 66 } 67 /* 68 * Invalidate the odin32path if kernel32 is closed. 69 * (Might possible not be needed as Pe2Lx does invalides 70 * the odin32path on object destruction.) 71 */ 72 else if (Pe2Lx::getKernel32SFN() == hFile) 73 Pe2Lx::invalidateOdin32Path(); 65 74 75 /* 76 * Finally call the real close function. 77 */ 66 78 return ldrClose(hFile); 67 79 } -
trunk/src/win32k/ldr/myldrEnum32bitRelRecs.cpp
r2537 r4164 1 /* $Id: myldrEnum32bitRelRecs.cpp,v 1. 2 2000-01-27 23:43:07bird Exp $1 /* $Id: myldrEnum32bitRelRecs.cpp,v 1.3 2000-09-02 21:08:08 bird Exp $ 2 2 * 3 3 * myldrEnum32bitRelRecs - ldrEnum32bitRelRecs … … 24 24 #include <stdlib.h> 25 25 26 #include "devSegDf.h" /* Win32k segment definitions. */ 27 #include "avl.h" 26 28 #include "log.h" 27 29 #include <peexe.h> 28 30 #include <exe386.h> 29 31 #include "OS2Krnl.h" 30 #include "avl.h"31 #include "ModuleBase.h"32 32 #include "ldr.h" 33 33 #include "ldrCalls.h" 34 #include "ModuleBase.h" 34 35 35 36 … … 63 64 APIRET rc; 64 65 #if 1 65 kprintf((" ldrEnum32BitRelRecs: pMTE=0x%08x iObject=0x%02x iPageTable=0x%03x pvPage=0x%08x\n"66 kprintf(("myldrEnum32BitRelRecs: pMTE=0x%08x iObject=0x%02x iPageTable=0x%03x pvPage=0x%08x\n" 66 67 " ulPageAddress=0x%08x pvPTDA=0x%08x\n", 67 68 pMTE, iObject, iPageTable, pvPage, ulPageAddress, pvPTDA -
trunk/src/win32k/ldr/myldrOpen.cpp
r2838 r4164 1 /* $Id: myldrOpen.cpp,v 1.1 0 2000-02-21 09:24:01bird Exp $1 /* $Id: myldrOpen.cpp,v 1.11 2000-09-02 21:08:09 bird Exp $ 2 2 * 3 3 * myldrOpen - ldrOpen. 4 4 * 5 * Copyright (c) 1998- 1999knut st. osmundsen5 * Copyright (c) 1998-2000 knut st. osmundsen 6 6 * 7 7 * Project Odin Software License can be found in LICENSE.TXT … … 17 17 18 18 #define INCL_OS2KRNL_IO 19 #define INCL_OS2KRNL_TCB 20 #define INCL_OS2KRNL_SEM 21 #define INCL_OS2KRNL_SEC 19 22 20 23 /******************************************************************************* … … 23 26 #include <os2.h> 24 27 28 #include "devSegDf.h" /* Win32k segment definitions. */ 25 29 #include "rmalloc.h" 26 30 #include "malloc.h" … … 28 32 #include <stdlib.h> 29 33 #include <string.h> 34 #include <stdarg.h> 30 35 31 36 #include "log.h" 37 #include "avl.h" 38 #include "options.h" 32 39 #include <peexe.h> 33 40 #include <exe386.h> 41 #include "elf.h" 34 42 #include "OS2Krnl.h" 35 43 #include "dev32.h" 44 #include "ldr.h" 45 #include "ldrCalls.h" 36 46 #include "ModuleBase.h" 37 47 #include "pe2lx.h" 38 #include "elf.h"39 #include "avl.h"40 #include "ldr.h"41 #include "ldrCalls.h"42 #include "options.h"43 48 #include "myExecPgm.h" 44 45 /******************************************************************************* 46 * Global Variables * 47 *******************************************************************************/ 48 extern BOOL fQAppType; /* From LDRQAppType */ 49 #include "env.h" 50 #include "vprintf.h" /* Make 100% sure we have va_start. */ 51 52 49 53 50 54 /******************************************************************************* 51 55 * Internal Functions * 52 56 *******************************************************************************/ 53 static unsigned getArgsLength(const char *pachArgs); 57 /* static */ APIRET AddArgsToFront(int cArgs, ...); 58 /* static */ APIRET SetExecName(const char *pszExeName); 59 /* static */ APIRET OpenPATH(PSFN phFile, char *pszFilename, PULONG pfl); 54 60 55 61 … … 59 65 * @param phFile Pointer to file handler. Holds filehandle on output. 60 66 * @param pszFilename Pointer to filename. 61 * @parma p aram3 Probablysome flags.67 * @parma pfl Pointer to some flags. 62 68 */ 63 ULONG LDRCALL myldrOpen(PSFN phFile, char *pszFilename, ULONG param3)69 ULONG LDRCALL myldrOpen(PSFN phFile, PSZ pszFilename, PULONG pfl) 64 70 { 65 ULONG rc; 66 67 /* 68 * Try open the file (thats why this function is called anyway) 71 static int cNesting = 0; /* This is an variable which hold the nesting */ 72 /* level of this function. This is useful */ 73 /* when we call it recurcively. */ 74 /* The maximum nesting level is currently 3. */ 75 /* When the maximum depth has been reached */ 76 /* we'll not intercept loading any longer! */ 77 ULONG rc; /* Return value. */ 78 79 /** @sketch 80 * Try open the file (that's why this function is called anyway) 69 81 */ 70 rc = ldrOpen(phFile, pszFilename, param3); 71 72 /* log sucesses */ 82 rc = ldrOpen(phFile, pszFilename, pfl); 73 83 if (rc == NO_ERROR) 74 kprintf(("ldrOpen: phFile=%#.4x, flags=%#.8x, pszFn=%s\n", *phFile, param3, pszFilename)); 75 76 /* 84 kprintf(("myldrOpen-%d: phFile=%#.4x, flags=%#.8x, pszFn=%s\n", cNesting, *phFile, pfl, pszFilename)); 85 86 87 /** @sketch 77 88 * Are we to intercept the loading? 78 * - Only if open were succesful and one of the loaders are enabled. 89 * - If open were successful. 90 * - And Not too deep nesting. 91 * - And that this isn't an unsupported load. 92 * - And one of the loaders are enabled. 79 93 */ 80 if (rc == NO_ERROR && (options.fElf || options.fPE != FLAGS_PE_NOT || options.fScript)) 81 { 82 char *pszBuffer = (char*)rmalloc(640); /* Read buffer. */ 83 PIMAGE_DOS_HEADER pMzHdr = (PIMAGE_DOS_HEADER)pszBuffer; /* Pointer to the buffer as it were a dosheader. */ 84 PIMAGE_NT_HEADERS pNtHdrs = (PIMAGE_NT_HEADERS)pszBuffer; /* Pointer to the buffer as if it were an NT header. */ 85 char *pach = pszBuffer; /* Finally an pointer to the buffer as if it were chars.. (which it is!) */ 86 PEXECPGMBUFFER pBuffer; /* Pointer to a buffer containing the programname and arguments. */ 87 /* For scripts and PE.EXE this has to be changed to have correct */ 88 /* parameters sendt in to the program. */ 89 unsigned cchRead = sizeof(IMAGE_DOS_HEADER); /* Amount of the buffer which contains valid data. */ 90 unsigned cbFile; /* Filesize (0xffffffff if call to SftFileSize failed - should _never_ happen though) */ 91 92 /* 93 * Verify that rmalloc completed successfully. 94 */ 95 if (pszBuffer == NULL) 94 if (rc == NO_ERROR 95 && cNesting < 3 96 && !isLdrStateLoadingUnsupported() 97 && isAnyLoaderEnabled() 98 ) 99 { 100 union _u_ReadBufferPointers /* Read buffer pointer(s). */ 96 101 { 97 kprintf(("ldrOpen: rmalloc(1024) failed\n")); 98 return NO_ERROR; 102 char *pach; /* Pointer to the buffer as char. */ 103 unsigned long *pul; /* Pointer to the buffer as unsigned long. */ 104 PIMAGE_DOS_HEADER pMzHdr; /* Use the buffer as a dosheader. */ 105 PIMAGE_NT_HEADERS pNtHdrs; /* Use the buffer as a NT header. */ 106 } u1; 107 unsigned cbFile; /* Filesize (0xffffffff if call to SftFileSize failed - should _never_ happen though) */ 108 unsigned cbRead; /* Amount of the buffer which contains valid data. */ 109 char * psz; /* Multipurpose string pointer no.1. */ 110 char * psz2; /* Multipurpose string pointer no.2. */ 111 char * psz3; /* Multipurpose string pointer no.3. */ 112 113 /** @sketch 114 * Allocate read buffer from resident heap. 115 * IF this fails THEN we'll simply return NO_ERROR. 116 */ 117 u1.pach = (char*)rmalloc(640); 118 if (u1.pach == NULL) 119 { 120 kprintf(("myldrOpen-%d: rmalloc(640) failed\n", cNesting)); 121 goto ret; 99 122 } 100 123 101 /* 102 * Try get the filesize 124 125 /** @sketch 126 * Increment nesting level. 127 */ 128 cNesting++; 129 130 131 /** @sketch 132 * Get the filesize. On failure filesize is set to ~0. 103 133 */ 104 134 rc = SftFileSize(*phFile, (PULONG)SSToDS(&cbFile)); 105 135 if (rc != NO_ERROR) 106 136 { 107 kprintf((" ldrOpen: SftFileSize failed with rc=%d\n", rc));137 kprintf(("myldrOpen-%d: SftFileSize failed with rc=%d\n", cNesting, rc)); 108 138 cbFile = (unsigned)~0; 109 139 } 110 140 111 /* 112 * See if this is an recognizable module format. 113 * This costs up to two disk reads! 114 */ 115 rc = ldrRead(*phFile, 0UL, pMzHdr, 0UL, cchRead, NULL); 116 if (rc == NO_ERROR) 141 142 /** @sketch 143 * Read the size of a DOS (ie. MZ) header. 144 * IF successful and more stuff in file THEN 145 * See if this is an recognizable module binary format: 146 */ 147 cbRead = min(sizeof(IMAGE_DOS_HEADER), cbFile); 148 rc = ldrRead(*phFile, 0UL, u1.pMzHdr, 0UL, cbRead, NULL); 149 if (rc == NO_ERROR && cbRead < cbFile) 117 150 { 118 /* 119 * PE header? 120 * - If DOS Magic is found AND a valid e_lfanew (offset of NE/LX/LE/PE header) is found 121 * - OR if PE siganture is found. 151 /** @sketch 152 * If LX header just give up at once. 122 153 */ 123 if ((pMzHdr->e_magic == IMAGE_DOS_SIGNATURE && 124 pMzHdr->e_lfanew > sizeof(IMAGE_DOS_HEADER) && pMzHdr->e_lfanew < 0x04000000UL) /* Larger than 64 bytes and less that 64MB. */ 125 || *(PULONG)pach == IMAGE_NT_SIGNATURE) 126 { /* 127 * MZ or PE header found 154 if (u1.pMzHdr->e_magic == E32MAGIC) 155 goto cleanup; 156 157 /** @sketch 158 * IF PE or MZ header THEN 159 */ 160 if (u1.pMzHdr->e_magic == IMAGE_DOS_SIGNATURE 161 || u1.pNtHdrs->Signature == IMAGE_NT_SIGNATURE) 162 { 163 ULONG offPe; /* Offset to PE header. */ 164 165 /** @sketch 166 * --- 167 * We now known that this is file has a MZ or a PE header. If it's 168 * a MZ header, we might end up with no "New" header or the "New" 169 * header might turn out to be a NE, LE, or LX header. I any of 170 * these non PE headers occur OS/2 will take care of it, we'll do nothing. 171 * --- 172 * IF PE loading is disable or MZ header and e_lfanew is invalid THEN 173 * return (successfully) to the caller. 174 * ENDIF 175 * (Find the offset of the PE header while testing (offPe).) 128 176 */ 129 130 /* if PE loading is diable return to the caller */131 if ( options.fPE == FLAGS_PE_NOT)177 if (isPELoaderDisabled()) 178 goto cleanup; 179 if (u1.pMzHdr->e_magic == IMAGE_DOS_SIGNATURE) 132 180 { 133 rfree(pszBuffer); 134 return NO_ERROR; 181 offPe = u1.pMzHdr->e_lfanew; 182 if (offPe < sizeof(IMAGE_DOS_HEADER) || offPe > 0x04000000UL) 183 goto cleanup; 135 184 } 136 137 /* 138 * Read the PE header if it isn't what we allready have! 185 else 186 offPe = 0; 187 188 189 /** @sketch 190 * Read the PE header. 191 * If the read failes or not PE signature, there isn't anything for us to do. 139 192 */ 140 cchRead = sizeof(IMAGE_NT_HEADERS); 141 if (*(PULONG)pach != IMAGE_NT_SIGNATURE) 142 rc = ldrRead(*phFile, pMzHdr->e_lfanew, pach, 0UL, cchRead, NULL); 143 else 144 rc = ldrRead(*phFile, 0UL, pach, 0UL, cchRead, NULL); 145 146 /* 147 * If successfully read, and a PE signature is present the continue and try load it! 148 * Else don't do anything, simply return NO_ERROR to the caller. (probably NE or LX exec) 193 rc = ldrRead(*phFile, offPe, u1.pach, 0UL, sizeof(IMAGE_NT_HEADERS), NULL); 194 if (rc != NO_ERROR || u1.pNtHdrs->Signature != IMAGE_NT_SIGNATURE) 195 goto cleanup_noerror; 196 197 198 /** @sketch 199 * PE signature found! 149 200 */ 150 if (rc == NO_ERROR && *(PULONG)pach == IMAGE_NT_SIGNATURE) 151 { /* 152 * PE signature found. 153 */ 154 kprintf(("ldrOpen: PE executable...\n")); 155 156 /* 157 * PE2LX? 158 * - When PE2LX flag is set 159 * - OR when the MIXED flag is set and the image is with the first 64MB of memory. 160 */ 161 if (options.fPE == FLAGS_PE_PE2LX 162 || (options.fPE == FLAGS_PE_MIXED 163 && !((pNtHdrs->FileHeader.Characteristics & IMAGE_FILE_DLL == 0UL) 164 && pNtHdrs->OptionalHeader.ImageBase >= 0x04000000UL /* 64MB */ 165 ) 201 kprintf(("myldrOpen-%d: PE executable...\n", cNesting)); 202 203 204 /** @sketch 205 * Use Pe2Lx? 206 * - When Pe2Lx flag is set 207 * - When the MIXED flag is set and the image isn't an executable 208 * above the first 64MB private limit without relocations 209 */ 210 if (isPe2LxLoaderEnabled() 211 || (isMixedPeLoaderEnabled() 212 && ((u1.pNtHdrs->FileHeader.Characteristics & IMAGE_FILE_DLL) 213 || !(u1.pNtHdrs->FileHeader.Characteristics & IMAGE_FILE_RELOCS_STRIPPED) 214 || u1.pNtHdrs->OptionalHeader.ImageBase < 0x04000000UL /* 64MB */ 166 215 ) 167 216 ) 168 { /* 169 * Pe2Lx (Ring0 of course) 170 * - Create a Pe2Lx class, 171 * - initiate it 172 * - Add the module to the module tree so we may find it later... 173 * - Set the handle state to 'our'. 174 */ 175 Pe2Lx * pPe2Lx = new Pe2Lx(*phFile); 176 if (pPe2Lx != NULL) 217 ) 218 { /** @sketch 219 * Pe2Lx (Ring0 of course) 220 * - Create a Pe2Lx class, 221 * - initiate it 222 * - Add the module to the module tree so we may find it later... 223 * - Set the (file)handle state to 'our'. 224 * - Set pExeModule to module pointer and loaderstate to our exe. 225 */ 226 Pe2Lx * pPe2Lx = new Pe2Lx(*phFile); 227 if (pPe2Lx != NULL) 228 { 229 rc = pPe2Lx->init(pszFilename); 230 if (rc == NO_ERROR) 177 231 { 178 rc = pPe2Lx->init(pszFilename); 232 kprintf(("myldrOpen-%d: Successfully init of Pe2Lx object.\n", cNesting)); 233 rc = addModule(*phFile, NULL, MOD_TYPE_PE2LX, pPe2Lx); 179 234 if (rc == NO_ERROR) 180 235 { 181 kprintf(("ldrOpen: Successfully init of Pe2Lx object.\n")); 182 rc = addModule(*phFile, NULL, MOD_TYPE_PE2LX, pPe2Lx); 183 if (rc == NO_ERROR) 184 #pragma info(notrd) 185 SetState(*phFile, HSTATE_OUR); 186 #pragma info(restore) 187 else 188 kprintf(("ldrOpen: Failed to add the module. rc=%d\n")); 236 #pragma info(notrd) 237 SetState(*phFile, HSTATE_OUR); 238 #pragma info(restore) 239 if (pPe2Lx->isExe()) 240 { 241 setLdrStateLoadingOurEXE(); 242 pExeModule = getModuleBySFN(*phFile); 243 #ifdef DEBUG 244 if (pExeModule == NULL) 245 kprintf(("myldrOpen-%d: getModuleBySFN failed when setting pExeModule! FATAL!\n", cNesting)); 246 #endif 247 } 189 248 } 190 249 else 191 kprintf(("ldrOpen: Failed to init Pe2Lx object. rc=%d\n")); 192 if (rc != NO_ERROR) 193 delete pPe2Lx; 250 kprintf(("myldrOpen-%d: Failed to add the module. rc=%d\n", cNesting)); 194 251 } 195 252 else 196 kprintf(("ldrOpen: Failed to allocate Pe2Lx object.\n")); 253 kprintf(("myldrOpen-%d: Failed to init Pe2Lx object. rc=%d\n", cNesting)); 254 if (rc != NO_ERROR) 255 delete pPe2Lx; 197 256 } 198 257 else 199 258 { 200 /* 201 * Starting of PE.EXE enable? 259 kprintf(("myldrOpen-%d: Failed to allocate Pe2Lx object.\n", cNesting)); 260 rc = ERROR_NOT_ENOUGH_MEMORY; 261 } 262 263 goto cleanup; 264 } 265 266 267 /** @sketch 268 * Using PE.EXE to start EXE? 269 * - When the file is an EXE file and PE.EXE is enabled. 270 */ 271 if ((u1.pNtHdrs->FileHeader.Characteristics & IMAGE_FILE_DLL) == 0UL 272 && (options.fPE == FLAGS_PE_PE || options.fPE == FLAGS_PE_MIXED) 273 && (isLdrStateExecPgm() || isLdrStateQAppType()) 274 ) 275 { 276 /** @sketch 277 * PE.EXE: 278 * Find pe.exe - look in current directory and thru the PATH. 279 * Note! We use the read buffer (u1.p*) as a storage for the 280 * pe.exe filename and path. 281 */ 282 kprintf(("myldrOpen-%d: pe.exe - opening\n", cNesting)); 283 ldrClose(*phFile); 284 strcpy(u1.pach, "PE.EXE"); 285 rc = ldrOpen(phFile, u1.pach, pfl); /* This isn't recusive! */ 286 if (rc != NO_ERROR) 287 rc = OpenPATH(phFile, u1.pach, pfl); 288 if (rc == NO_ERROR) 289 { 290 /** @sketch 291 * If we're in tkExecPgm state we'll have to shuffle the parameters 292 * and executable filename tkExecPgm were called with. 293 * If not tkExecPgm we can't do anything about parameters (and there is 294 * probably nothing to do either). 202 295 */ 203 if (options.fPE == FLAGS_PE_PE || options.fPE == FLAGS_PE_MIXED) 204 { /* 205 * pe.exe - need the path! 206 */ 207 kprintf(("ldrOpen: pe.exe - opening\n")); 208 ldrClose(*phFile); 209 rc = ldrOpen(phFile, "pe.exe", param3); /* path....! problems! */ 210 kprintf(("ldrOpen: pe.exe - open returned with rc = %d\n", rc)); 211 rfree(pszBuffer); 212 return rc; 296 kprintf(("myldrOpen-%d: pe.exe - %s\n", cNesting, u1.pach)); 297 if (isLdrStateExecPgm() && fTkExecPgm) 298 { 299 rc = AddArgsToFront(2, ldrpFileNameBuf, achTkExecPgmFilename); 300 if (rc == NO_ERROR) 301 { 302 rc = SetExecName(ldrpFileNameBuf); 303 if (rc != NO_ERROR) 304 kprintf(("myldrOpen-%d: pe.exe - failed to set pe.exe as execname. rc=%d\n", cNesting)); 305 } 306 else 307 kprintf(("myldrOpen-%d: pe.exe - failed to add programname as argument. rc=%d\n", cNesting, rc)); 308 goto cleanup_noerror; 213 309 } 214 310 } 311 else 312 kprintf(("myldrOpen-%d: pe.exe - couldn't find/open pe.exe\n", cNesting)); 215 313 } 216 rfree(pszBuffer); 217 return NO_ERROR; 314 goto cleanup; 218 315 } 219 else 316 /** @sketch End of PE Loading. */ 317 318 319 /** @sketch 320 * ELF image? 321 */ 322 if (*u1.pul == ELFMAGICLSB) 220 323 { 324 if (isELFDisabled()) 325 goto cleanup_noerror; 326 221 327 /* 222 * ELF image?328 * ELF signature found. 223 329 */ 224 if (pach[0] == ELFMAG0 && pach[1] == ELFMAG1 && pach[2] == ELFMAG2 && pach[3] == ELFMAG3) 330 kprintf(("myldrOpen-%d: ELF image! - not implemented yet!\n", cNesting)); 331 332 /* 333 * Do nothing more yet. NEED AN ELF LOADER!!! 334 */ 335 goto cleanup; 336 } 337 338 339 /** @sketch 340 * Java image? 341 */ 342 if (*u1.pul == 0xBEBAFECAUL) //CAh FEh BAh BEh 343 { 344 char *pszName = NULL; 345 int cchName; 346 347 if (isJAVADisabled()) 348 goto cleanup_noerror; 349 350 /** @sketch 351 * Java signature found. 352 * Copy the name to a temporary buffer. (only if necessary) 353 * Remove the extention (.class) and insert a space between the name and the path. 354 * (This is the needed processing of the class filename to make it a classpath 355 * entry (path) and a class name (filename).) 356 * Try find the java executor in current dir or PATH: java.exe 357 */ 358 kprintf(("myldrOpen-%d: Jave image!\n", cNesting)); 359 360 if (isLdrStateExecPgm() && fTkExecPgm) 225 361 { 226 /* 227 * ELF signature found. 362 /* Ooops we had to get the file name from the MFT. ldrpFileNameBuf is allways uppercased... */ 363 /* MFT seems to hold uppercased filenames! ARG! But (by pure luck?) achTkExecPgmArguments is 364 * not uppercased (yet). Nothing could be simpler! 228 365 */ 229 kprintf(("ldrOpen: ELF executable! - not implemented yet!\n")); 230 231 /* 232 * Do nothing more yet. NEED AN ELF LOADER!!! 366 #if 1 367 psz3 = achTkExecPgmArguments; 368 #elif 0 369 psz3 = SecPathFromSFN(*phFile); 370 if (psz3 == NULL) 371 psz3 = ldrpFileNameBuf; 372 #else 373 psz3 = ldrpFileNameBuf; 374 #endif 375 cchName = strlen(psz3); 376 pszName = (char*)rmalloc(cchName + 2); 377 if (pszName == NULL) 378 { 379 rc = ERROR_NOT_ENOUGH_MEMORY; 380 goto cleanup; 381 } 382 memcpy(pszName, psz3, cchName+1); 383 384 psz = pszName + strlen(pszName) - 1; 385 while (psz > pszName && *psz != '.' && *psz != '\\' && *psz != '/') 386 psz--; 387 if (*psz == '.') 388 { 389 cchName = psz - pszName; 390 *psz-- = '\0'; 391 while (psz > pszName && *psz != '\\' && *psz != '/') 392 psz--; 393 394 /* check for root and evt. make room for an extra slash. */ 395 if (psz - pszName == 2) 396 { 397 memmove(psz + 1, psz, cchName - 1); 398 *psz++ = '\\'; 399 } 400 } 401 /* check if no path */ 402 if (psz == pszName) 403 memmove(pszName + 1, pszName, cchName + 1); 404 *psz = ' '; 405 } 406 407 ldrClose(*phFile); 408 rc = ldrOpen(phFile, ".\\JAVA.EXE", pfl); 409 if (rc != NO_ERROR) 410 rc = OpenPATH(phFile, "JAVA.EXE", pfl); 411 if (rc == NO_ERROR) 412 { 413 kprintf(("myldrOpen-%d: java - %s\n", cNesting, ldrpFileNameBuf)); 414 415 /** @sketch 416 * To be able to execute any given class name we'll have to pass in the 417 * directory as -classpath. But -classpath seems to override the default 418 * and environmental CLASSPATHs. So, we'll have to pass in the value of 419 * the CLASSPATH env.var. or generate the default class path (what ever that is). 420 * 233 421 */ 234 rfree(pszBuffer); 235 return NO_ERROR; 422 if (isLdrStateExecPgm() && fTkExecPgm) 423 { 424 psz = u1.pach; 425 426 /* 427 * Get classpath and add it as a parameter 428 */ 429 strcpy(u1.pach, "-classpath "); 430 psz = u1.pach + strlen(u1.pach); 431 432 psz3 = (char*)ScanEnv(GetEnv(TRUE), "CLASSPATH"); 433 if (psz3 != NULL) 434 { /* environment variable set */ 435 if (strlen(psz3) > 640 - 11 - 1 - cchName) //check for overflow 436 { // TODO? should reallocate... 437 memcpy(psz, psz3, 640 - 11 - 1 - cchName); 438 psz[640 - 11 - 1 - cchName] = '\0'; 439 } 440 else 441 strcpy(psz, psz3); 442 psz += strlen(psz); 443 } 444 else 445 { 446 /* Make default classpath by taking the java.exe path + '..\lib\classes.zip' */ 447 strcpy(psz, ldrpFileNameBuf); 448 psz3 = psz + strlen(psz) - 1; 449 while (psz3 > psz && *psz3 != '\\' && *psz3 != '/') 450 psz3--; 451 strcpy(++psz3, "..\\lib\\classes.zip"); 452 psz = psz3 + strlen(psz3); 453 } 454 455 /* 456 * Add the class directory (as the last classpath entry) and the class name. 457 * (Note. I may happen that there is no directory, but that don't matter 458 * a space is allways preceding the class name.) 459 */ 460 *psz++ = ';'; 461 strcpy(psz, pszName); 462 if (pszName != NULL) 463 rfree(pszName); 464 465 /* 466 * Setup JAVA.EXE as executable with the parameters we've build. 467 */ 468 rc = AddArgsToFront(2, ldrpFileNameBuf, u1.pach); 469 kprintf(("myldrOpen-%d: java - Exe: %s Args: %s\n", cNesting, ldrpFileNameBuf, u1.pach)); 470 if (rc == NO_ERROR) 471 { 472 rc = SetExecName(ldrpFileNameBuf); 473 if (rc != NO_ERROR) 474 kprintf(("myldrOpen-%d: java - failed to set java.exe as execname. rc=%d\n", cNesting, rc)); 475 } 476 else 477 kprintf(("myldrOpen-%d: java - failed to setup the parameters. rc=%d\n", cNesting, rc)); 478 479 goto cleanup_noerror; 480 } 236 481 } 482 else 483 kprintf(("myldrOpen-%d: java - couldn't find/open java.exe\n", cNesting)); 484 485 486 /** @sketch 487 * End of Java loading. (return) 488 */ 489 if (pszName != NULL) 490 rfree(pszName); 491 goto cleanup; 237 492 } 493 238 494 } 495 else 496 { 497 /** @sketch 498 * ELSE - the reading size of a DOS header failed or file is smaller than the dos header. 499 * IF read failed or filesize is less than 4 bytes THEN 500 * return no_error to the caller. 501 * ENDIF 502 */ 503 #ifdef DEBUG 504 if (rc != NO_ERROR) 505 { 506 kprintf(("myldrOpen-%d: ldrRead failed cbRead=%d, cbFile=%d, rc=%d\n", cNesting, cbRead, cbFile, rc)); 507 goto cleanup_noerror; 508 } 509 if (cbRead < 4) 510 { 511 kprintf(("myldrOpen-%d: File too small! cbFile=%d\n", cNesting, cbFile)); 512 goto cleanup_noerror; 513 } 514 #else 515 if (rc != NO_ERROR || cbRead < 4) //just forget files less than 4 bytes! 516 goto cleanup_noerror; 517 #endif 518 } 519 /** @sketch ENDIF (dos header read) */ 520 521 239 522 240 523 /* 241 * Only unreconized files and readerrorpasses this point!524 * Only unreconized files passes this point! 242 525 * 243 526 * * Fileformats with lower priority should reside here. * … … 245 528 */ 246 529 247 /* 248 * If the initial readoperation failed try to read a smaller amount, in case it is a small script... 249 * 4 bytes is a small amount isn't it? 250 */ 251 if (rc != NO_ERROR) 530 /** @sketch 531 * UNIX styled script? 532 * - Starts with a hash (#) 533 * - And we're loading an EXE 534 * - And we're either in QAppType or ExecPgm state. 535 * - And that a bang (!) is the first char after the hash (ignoring blanks). 536 */ 537 if (*u1.pach == '#' 538 && isLdrStateLoadingEXE() 539 && (isLdrStateQAppType() || isLdrStateExecPgm()) 540 ) 252 541 { 253 kprintf(("ldrOpen: first ldrread failed with rc=%d. tries to read 4 byte.\n", rc)); 254 cchRead = 4; 255 if ((rc = ldrRead(*phFile, 0UL, pach, 0UL, cchRead, NULL)) != NO_ERROR) 256 kprintf(("ldrOpen: second ldrread failed with rc=%d.\n ", rc)); 257 } 258 259 /* 260 * Now we'll try again, UNIX styled script? 261 */ 262 if (rc == NO_ERROR && *pach == '#' && pach[1] == '!') 263 { 542 if (isUNIXScriptDisabled()) 543 goto cleanup_noerror; 264 544 /* 265 * UNIX styled script? 266 * FIXME! Must be more than 64 bytes long? 267 * No options! 268 * Firstline < 64 bytes! 545 * Look for a bang (!). Tabs and spaces are skipped, anything else result in error. 269 546 */ 270 kprintf(("ldrOpen: unix script?\n"));271 cchRead = min(cbFile, 256);272 rc = ldrRead(*phFile, 0UL, pach, 0UL, cchRead, NULL);273 if ( rc == NO_ERROR)547 psz = u1.pach + 1; 548 while ((*psz == ' ' || *psz == '\t') && psz - u1.pach < cbRead) 549 psz++; 550 if (*psz == '!') 274 551 { 275 char *pszStart = pach+2; 276 kprintf(("ldrOpen: script debug 1\n")); 277 278 /* Make sure we don't read to much... */ 279 pszBuffer[cchRead] = '\0'; 280 281 /* 282 * Skip blanks 552 /** @sketch Found UNIX styled script! */ 553 554 /** @sketch 555 * Read more of the script if necessary. (max is 256 chars (- Linux max is 127)) 556 * Terminate the string read from the file to make sure with stop somewhere! 283 557 */ 284 pszStart = pszBuffer + 2; /* skips the "#!" stuff. */ 285 while (*pszStart != '\0' && (*pszStart == ' ' || *pszStart == '\t')) 286 pszStart++; 287 kprintf(("ldrOpen: script debug 2\n")); 288 289 /* anything left on the line? */ 290 if (*pszStart != '\0' && *pszStart != '\r' && *pszStart != '\n') 558 if (cbRead < cbFile /*&& cbRead != 256*/) 291 559 { 292 char * pszEnd; /* Pointer to the end of the string(s) when the next step is finished. */ 293 unsigned cchToAdd = 1; /* Chars to add */ 294 BOOL fFirst = TRUE; /* Set if a '\0' has not been set yet. 295 * If this is clear, there are one or more parameters after the interpreter name. */ 296 297 /* 298 * find linesize and make parameters ready for copying 560 cbRead = min(256, cbFile); 561 rc = ldrRead(*phFile, 0UL, u1.pach, 0UL, cbRead, NULL); 562 } 563 u1.pach[cbRead] = '\0'; 564 565 if (rc == NO_ERROR) 566 { 567 /** @sketch 568 * Parse out filename and optional arguments (if any). 569 * The result of the parsing is that: 570 * psz will point at the executable name. 571 * psz2 will point at the arguments. 572 * Both strings are trimmed. 299 573 */ 300 pszEnd = pszStart; 301 kprintf(("ldrOpen: script debug 3\n")); 302 while (*pszEnd != '\0' && *pszEnd != '\r' && *pszEnd != '\n') 574 psz++; /* psz points to the bang, skip it. */ 575 while (*psz == ' ' || *psz == '\t') /* skip blanks after bang */ 576 psz++; 577 if (*psz == '\r' || *psz == '\n' || *psz == '\0') /* End-of-line? */ 303 578 { 304 if (fFirst && (*pszEnd == ' ' || *pszEnd == '\t')) 579 kprintf(("myldrOpen-%d: script no executable name.\n", cNesting)); 580 goto cleanup_noerror; /* other error code? */ 581 } 582 psz2 = psz + 1; /* Not end-of-line, so add 1 before searching for args. */ 583 while (*psz2 != '\0' && *psz2 != '\n' && *psz2 != '\r' /* skip executable name. */ 584 && *psz2 != ' ' && *psz2 != '\t') 585 psz2++; 586 while (*psz2 == ' ' || *psz2 == '\t') /* skip blanks after executable - pad them with '\0'! */ 587 *psz2++ = '\0'; 588 589 psz3 = psz2; 590 while (*psz3 != '\n' && *psz3 != '\r' && *psz3 != '\0') /* find end of parameters and terminate the string. */ 591 psz3++; 592 *psz3 = '\0'; 593 while (psz3 >= psz2 && (*psz3 == '\0' || *psz3 == ' ' || *psz3 == '\t')) /* trim args */ 594 *psz3-- = '\0'; 595 596 597 /** @sketch 598 * IF tkExecPgm THEN 599 * Correct parameters - ie. add exec name (as argv[0]), 600 * arguments (psz2) as argv[1+], old exec name, and finally 601 * the existing parameters (current argv[1+]). 602 * Set the executable name. 603 * ENDIF 604 * Open the new executable file recursively. (psz) 605 */ 606 if (isLdrStateExecPgm()) 607 { 608 if (*psz2) 609 rc = AddArgsToFront(3, psz, psz2, achTkExecPgmFilename); 610 else 611 rc = AddArgsToFront(2, psz, achTkExecPgmFilename); 612 if (rc != NO_ERROR) 305 613 { 306 *pszEnd = '\0'; 307 fFirst = FALSE; 308 if (pszEnd[1] == '\0' || pszEnd[1] == '\r' || pszEnd[1] == '\n') 309 fFirst = TRUE; 614 kprintf(("myldrOpen-%d: AddArgsToFront failed with rc=%d\n", cNesting)); 615 goto cleanup_noerror; 310 616 } 311 312 /* next */ 313 pszEnd++; 314 cchToAdd++; 617 rc = SetExecName(psz); 618 if (rc != NO_ERROR) 619 kprintf(("myldrOpen-%d: SetExecName failed with rc=%d\n", cNesting)); 315 620 } 316 *pszEnd = '\0'; 317 kprintf(("ldrOpen: script debug 4\n")); 318 319 /* 320 * If ldrQueryApp type we don't have any ExecPgm buffer we need to mess with. 321 * We'll simply try open the the interpreter. 322 */ 323 if (fQAppType) 621 ldrClose(*phFile); 622 rc = myldrOpen(phFile, psz, pfl); 623 if (rc != NO_ERROR) 324 624 { 325 rc = ldrClose(*phFile); 326 rc = ldrOpen(phFile, pszStart, param3); /* FIXME, recusion! check that name not equal! Use flags to prevent race? */ 327 } 328 else 329 { 330 /* 331 * Find the ExecPgm buffer. 332 */ 333 pBuffer = QueryBufferPointerFromFilename(pszFilename); 334 kprintf(("ldrOpen: script debug 5\n")); 335 if (pBuffer != NULL) 625 psz2 = psz + strlen(psz); 626 if (psz + 4 >= psz2 || strcmp(psz2 - 4, ".EXE") != 0) 336 627 { 337 unsigned cchArguments = getArgsLength(pBuffer->achArgs); /* minus the first argument. */ 338 unsigned cchScriptnameDelta = strlen(pBuffer->szFilename) - strlen(pBuffer->achArgs); /* scriptname size difference. */ 339 340 kprintf(("ldrOpen: script debug 6\n")); 341 342 /* 343 * Is there enough space in the struct? 344 */ 345 if (cchArguments + cchToAdd + cchScriptnameDelta < sizeof(pBuffer->achArgs)) 346 { 347 kprintf(("ldrOpen: script debug 7\n")); 348 /* 349 * Open the interpreter. 350 */ 351 rc = ldrClose(*phFile); 352 rc = ldrOpen(phFile, pszStart, param3); /* FIXME, recusion! check that name not equal! Use flags to prevent race? */ 353 if (rc == NO_ERROR) 354 { 355 kprintf(("ldrOpen: script debug 8\n")); 356 /* Make space for the addition arguments. */ 357 #ifdef DEBUG 358 char *psz = &pBuffer->achArgs[0]; 359 int i = 0; 360 while (*psz != '\0') 361 { 362 kprintf(("Arg %d: %s\n", i++, psz)); 363 psz += 1 + strlen(psz); 364 } 365 #endif 366 memmove(&pBuffer->achArgs[cchToAdd + cchScriptnameDelta], 367 &pBuffer->achArgs[0], cchArguments); 368 369 /* 370 * Copy the arguments. 371 */ 372 kprintf(("ldrOpen: script debug 8\n")); 373 memcpy(&pBuffer->achArgs[0], pszStart, cchToAdd); /* Interpreter with arguments */ 374 if (!fFirst) 375 pBuffer->achArgs[cchToAdd - 1] = ' '; 376 strcpy(&pBuffer->achArgs[cchToAdd], pszFilename); /* Scriptname */ 377 kprintf(("ldrOpen: script debug a\n")); 378 379 #ifdef DEBUG 380 psz = &pBuffer->achArgs[0]; 381 i = 0; 382 while (*psz != '\0') 383 { 384 kprintf(("Arg %d: %s\n", i++, psz)); 385 psz += 1 + strlen(psz); 386 } 387 #endif 388 } 389 else 390 kprintf(("ldrOpen: failed to open interpreter (%s), rc=%d\n", pszStart, rc)); 391 } 392 else 393 { 394 kprintf(("ldrOpen: Argument buffer too small, %d\n", cchArguments + cchToAdd)); 395 rc = ERROR_BAD_EXE_FORMAT; 396 } 628 strcpy(psz2, ".EXE"); 629 rc = myldrOpen(phFile, psz, pfl); 630 *psz2 = '\0'; 397 631 } 398 632 else 633 psz2 = NULL; 634 635 //should we search the PATH??? For a starting, we'll do it. 636 if (rc != NO_ERROR 637 && (rc = OpenPATH(phFile, psz, pfl)) != NO_ERROR 638 && psz2 != NULL) 399 639 { 400 kprintf(("ldrOpen: QueryBufferPointerFromFilename failed.\n"));401 rc = ERROR_BAD_EXE_FORMAT; /*?*/640 *psz2 = '.'; 641 rc = OpenPATH(phFile, psz, pfl); 402 642 } 403 643 } … … 405 645 else 406 646 { 407 kprintf((" ldrOpen: no interpereter on the first line.\n"));408 rc = ERROR_BAD_EXE_FORMAT; /*?*/647 kprintf(("myldrOpen-%d: script - failed to read more of the script!, rc=%d cbRead=%d cbFile=%d.\n", 648 cNesting, rc, cbRead, cbFile)); 409 649 } 650 651 goto cleanup; 410 652 } 411 653 else 412 654 { 413 kprintf((" ldrOpen: read of min(cbFile, 256) = %d failed, rc = %d\n", cchRead, rc));655 kprintf(("myldrOpen-%d: script - hash found but no bang (!).\n", cNesting)); 414 656 } 415 } /* else inn other formats here. */ 416 rfree(pszBuffer); 417 } 657 } /**@sketch ENDIF - UNIX styled script. */ 658 659 660 661 /** @sketch 662 * REXX script? 663 * - Starts with a REXX start comment ('/','*') 664 * - And we're loading an EXE 665 * - And we're either in QAppType or ExecPgm state. 666 * - Extention: 667 * .RX and .REX are known to be pure REXX scripts. 668 * While .CMD has to invoked used the commandline OS2_SHELL or COMSPEC variable. 669 */ 670 psz2 = pszFilename + strlen(pszFilename) - 1; 671 while (psz2 > pszFilename && *psz2 != '.') 672 psz2--; 673 if (*psz2 == '.' 674 && *u1.pach == '/' && u1.pach[1] == '*' 675 && isLdrStateLoadingEXE() 676 && (isLdrStateQAppType() || isLdrStateExecPgm()) 677 && (stricmp(psz2, ".RX") == 0 || stricmp(psz2, ".REX") == 0) 678 ) 679 { 680 if (isREXXScriptDisabled()) 681 goto cleanup_noerror; 682 683 /** @sketch 684 * Found REXX styled script! 685 * Find the REXX interpreter. We'll use kRx.exe to execute the REXX scripts. 686 * (This interpreter could be embedded as a child of ModuleBase as it turned out 687 * to be quite small about 700 bytes.) 688 */ 689 kprintf(("myldrOpen-%d: Found REXX script\n", cNesting)); 690 ldrClose(*phFile); 691 psz = "KRX.EXE"; 692 rc = ldrOpen(phFile, psz, pfl); 693 if (rc != NO_ERROR) 694 rc = OpenPATH(phFile, psz, pfl); 695 696 /** @sketch 697 * IF tkExecPgm THEN 698 * Correct parameters - ie. add exec name (as argv[0]), old exec name, 699 * and finally the existing parameters (current argv[1+]). 700 * Set the executable name. 701 * ENDIF 702 */ 703 if (rc == NO_ERROR && isLdrStateExecPgm()) 704 { 705 rc = AddArgsToFront(2, ldrpFileNameBuf, achTkExecPgmFilename); 706 if (rc != NO_ERROR) 707 { 708 kprintf(("myldrOpen-%d: AddArgsToFront failed with rc=%d\n", cNesting)); 709 goto cleanup_noerror; 710 } 711 rc = SetExecName(ldrpFileNameBuf); 712 if (rc != NO_ERROR) 713 kprintf(("myldrOpen-%d: SetExecName failed with rc=%d\n", cNesting)); 714 715 goto cleanup_noerror; 716 } 717 goto cleanup; 718 } /**@sketch ENDIF - REXX styled script. */ 719 720 721 /* 722 * Cleanup with rc set to NO_ERROR. 723 */ 724 cleanup_noerror: 725 rc = NO_ERROR; 726 727 /* 728 * Cleanup without having rc set to NO_ERROR. 729 * Decrement the nesting count. 730 */ 731 cleanup: 732 rfree(u1.pach); 733 cNesting--; 734 } 735 #ifdef DEBUG 736 else if (cNesting >= 3) 737 kprintf(("myldrOpen-%d: cNesting = %d, which is too deep!\n", cNesting, cNesting)); 738 #endif 739 740 ret: 741 /** @sketch 742 * Return rc. 743 */ 418 744 return rc; 419 745 } … … 421 747 422 748 /** 423 * Get the lenght of the arguments. 424 * @returns Lenght in char, includes the two '\0's. 425 * @param pachArgs Pointer to the ASCIIZs which makes up the arguments. 426 * @status completely implemented. 749 * Adds new arguments to the front of the startup arguments for the program about to be 750 * executed. 751 * 752 * @returns OS/2 return code. 753 * @param cArgs Count of arguments to add. At least 1!!! 754 * @param ... Pointers to the arguments to add. 755 * The first argument have to be the executable name. This have to the 756 * the only argument in the first string. 757 * The other arguements are space separated, so you could add a bunch 758 * of arguments in a single string! 759 * The last argument should be the old first parameter if this is to be 760 * preserved. The old first parameter is overwritten since it's 761 * normally the executable name. 762 * 763 * @status completly implemented. 427 764 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 765 * @remark Implementation note: 766 * The arguments convention is as follows: 767 * First argument, which should be the executable name, is terminated with a '\0'. 768 * It starts at offset 0 into the argument buffer, of course. 769 * All other arguemnts are separated by a space and follows the immediately after the 770 * first argument. 771 * The arguments are terminated by a double nulltermination: '\0\0'. 428 772 */ 429 static unsigned getArgsLength(const char *pachArgs)773 APIRET AddArgsToFront(int cArgs, ...) 430 774 { 431 unsigned cch = 1; 432 const char *psz = pachArgs; 433 775 va_list vaarg; /* Variable length argument list. */ 776 int cchOldArgs; /* Length of the old arguments (including the first argument). */ 777 /* cchOldArgs = 1 means no arguments. It don't include the very last '\0' */ 778 /* (remember argumets are terminated with two '\0's). */ 779 int iSecondArg; /* Index of the second argument. (Used to skip the first argument.) */ 780 /* Used first on the original arguments and them when adding the first */ 781 /* new argument. */ 782 int cchNewArgs; /* Length of the new arguments to be inserted. */ 783 int i; /* Loop variable. Current function argument. */ 784 char * psz; /* General string pointer. */ 785 786 787 /** @sketch 788 * Assert that we're in the right state. 789 * Calc the length of the existing parameters. 790 * Calc the length of the new arguments to determin. 791 * Assert that the new arguments have length > 0. 792 */ 793 #ifdef DEBUG 794 if (!isLdrStateExecPgm()) 795 { 796 kprintf(("AddArgsToFront: not in tkExecPgm state.\n")); 797 return ERROR_INVALID_PARAMETER; 798 } 799 #endif 800 if (!fTkExecPgm) 801 { 802 kprintf(("AddArgsToFront: called when not in tkExecPgm data is invalid!\n")); 803 return ERROR_INVALID_PARAMETER; 804 } 805 806 iSecondArg = strlen(&achTkExecPgmArguments[0]) + 1; 807 psz = &achTkExecPgmArguments[iSecondArg]; 434 808 while (*psz != '\0') 435 { 436 register unsigned cch2 = strlen(psz); 437 cch += cch2; 438 psz += cch2 + 1; 439 } 440 441 return cch; 809 psz += strlen(psz) + 1; 810 cchOldArgs = psz - &achTkExecPgmArguments[iSecondArg]; 811 812 va_start(vaarg, cArgs); 813 for (cchNewArgs = i = 0; i < cArgs; i++) 814 cchNewArgs += strlen(va_arg(vaarg, char *)) + 1; /* 1 is for space or '\0'. */ 815 va_end(vaarg); 816 #ifdef DEBUG 817 if (cchNewArgs == 0) 818 { 819 kprintf(("AddArgsToFront: the size of the arguments to add is zero!\n")); 820 return ERROR_INVALID_PARAMETER; 821 } 822 #endif 823 824 825 /** @sketch 826 * Check if we have enough room for the new arguments. Fail if not enough. 827 * Move the existing arguments to make room for the new ones. 828 * !IMPORTANT! The first existing arguments (executable name) is skipped !IMPORTANT! 829 * !IMPORTANT! in this move as this have to be re-added in this call! !IMPORTANT! 830 */ 831 if (cchOldArgs + cchNewArgs + 1 > CCHARGUMENTS) 832 { 833 kprintf(("AddArgsToFront: argument buffer is too small to hold the arguments to add, cchOldArgs=%d, cchNewArgs=%d\n", 834 cchOldArgs, cchNewArgs)); 835 return ERROR_BAD_ARGUMENTS; 836 } 837 838 if (cchOldArgs > 0) 839 { 840 memmove(&achTkExecPgmArguments[cchNewArgs], &achTkExecPgmArguments[iSecondArg], 841 cchOldArgs + 1); 842 } 843 else 844 achTkExecPgmArguments[cchNewArgs] = '\0'; 845 846 847 /** @sketch 848 * Copy new arguments. 849 * Since the first argument is special case we'll do it separately. (Uses '\0' as separator.) 850 * We assume that the entire first argument passed into this function should be the first argument! 851 * (This don't have to be true for the other arguments since these are space separated. You could 852 * pass in more than argument in a single string.) 853 * Loop thru the rest of the new arguments and add them with space as separator. 854 */ 855 va_start(vaarg, cArgs); 856 psz = va_arg(vaarg, char *); 857 memcpy(&achTkExecPgmArguments[0], psz, (i = strlen(psz) + 1)); 858 psz = &achTkExecPgmArguments[i]; 859 860 for (i = 1; i < cArgs; i++) 861 { 862 if (i > 1) *psz++ = ' '; //Add space if not second argument. 863 strcpy(psz, va_arg(vaarg, char *)); 864 psz += strlen(psz); 865 } 866 va_end(vaarg); 867 if (cchOldArgs > 0) *psz++ = ' '; //Add space if old arguments 868 869 #ifdef DEBUG /* assertion */ 870 if (psz != &achTkExecPgmArguments[cchNewArgs]) 871 { 872 kprintf(("AddArgsToFront: !Assertion failed! psz didn't end up where it should! (psz -> %d should be %d)\n", 873 psz - &achTkExecPgmArguments[0], cchNewArgs)); 874 if (cchOldArgs <= 1) 875 psz[0] = psz[1] = '\0'; 876 } 877 #endif 878 879 return NO_ERROR; 442 880 } 881 882 883 /** 884 * Sets the executable name of the module. 885 * This function is normally invoked after a different executable than the one requested was 886 * opened. It does _NOT_ set the new executable name as the first argument, since it is more 887 * convenient to this while calling AddArgsToFront to add other arguments. 888 * 889 * @returns OS/2 return code. 890 * @param pszExecName Pointer to new executable name. 891 * @status completly implemented. 892 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 893 * @remark . 894 */ 895 APIRET SetExecName(const char *pszExecName) 896 { 897 #ifdef DEBUG 898 int cch; 899 cch = strlen(pszExecName); 900 if (cch > CCHMAXPATH) 901 { 902 kprintf(("ChangeExecName: filename is too long! cch=%d. name=%s\n", cch, pszExecName)); 903 return ERROR_FILENAME_EXCED_RANGE; 904 } 905 if (!isLdrStateExecPgm()) 906 { 907 kprintf(("ChangeExecName: called when not in tkExecPgm state!!! FATAL ERROR!\n")); 908 return ERROR_INVALID_PARAMETER; 909 } 910 #endif 911 if (!fTkExecPgm) 912 { 913 kprintf(("ChangeExecName: called when not in tkExecPgm data is invalid!!! FATAL ERROR!\n")); 914 return ERROR_INVALID_PARAMETER; 915 } 916 917 strcpy(achTkExecPgmFilename, pszExecName); 918 919 return 0; 920 } 921 922 923 /** 924 * Opens a file using the PATH environment variable of the current process. 925 * @returns OS2 return code. 926 * @param phFile Pointer to filehandle. The filehandle is set to the SFN for the opened 927 * file on successful return. 928 * The filehandle is 0 on failure. 929 * @param pszFilename Pointer to filename buffer. This will hold the filename on input. 930 * On successful return it holds the filepath found. 931 * On failiure it's undefined. 932 * @param pfl Some flags set by ldrOpen. 933 * @sketch stub 934 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 935 * @remark 936 */ 937 APIRET OpenPATH(PSFN phFile, char *pszFilename, PULONG pfl) 938 { 939 APIRET rc; 940 USHORT TCBFailErr_save; 941 int cchFile; /* Filename length + 1. */ 942 const char *pszFile; /* Pointer to filename portion. */ 943 const char *pszPath = ScanEnv(GetEnv(FALSE), "PATH"); /* Current Process environment? */ 944 945 /**@sketch 946 * No PATH environment. 947 */ 948 if (pszPath == NULL) 949 return ERROR_FILE_NOT_FOUND; 950 951 /**@sketch 952 * Skip any paths in the filename. 953 */ 954 pszFile = pszFilename + (cchFile = strlen(pszFilename)); 955 while (pszFile >= pszFilename && *pszFile != '\\' && *pszFile != '/') 956 pszFile--; 957 cchFile -= pszFile - pszFilename; 958 pszFile++; 959 960 /**@sketch 961 * We'll have to save the TCBFailErr since we don't want to cause 962 * Hard Errors while searching invalid paths, etc. (ldrOpenPath does this!) 963 */ 964 TCBFailErr_save = tcbGetTCBFailErr(tcbGetCur()); 965 966 /**@ sketch 967 * Loop thru the PATH trying to open the specified file in each 968 * directory. 969 */ 970 while (*pszPath != '\0') 971 { 972 const char * pszNext; 973 int cchPath; 974 char chEnd; 975 register char ch; 976 977 /* 978 * Find end of this path. 979 */ 980 while (*pszPath == ' ') pszPath++; //skip leading spaces. 981 if (*pszPath == '"') 982 { 983 chEnd = '"'; 984 pszPath++; 985 } 986 else 987 chEnd = ';'; 988 pszNext = pszPath; 989 while ((ch = *pszNext) != chEnd && ch != '\0') 990 pszNext++; 991 992 cchPath = pszNext - pszPath; 993 if (chEnd == '"') 994 { 995 /* Skip anything between the " and the ; or string end. */ 996 while ((ch = *pszNext) != ';' && ch != '\0') 997 pszNext++; 998 } 999 else 1000 { 1001 /* Trim the string. */ 1002 while (cchPath > 0 && pszPath[cchPath-1] == ' ') //?? 1003 cchPath--; 1004 } 1005 1006 /* 1007 * No length? No Path! Or path'\'filename too long? => Next 1008 */ 1009 if (cchPath > 0 && cchPath + cchFile + 1 < CCHMAXPATH) 1010 { 1011 static char achFilename[CCHMAXPATH]; 1012 /* 1013 * Build filename 1014 */ 1015 memcpy(achFilename, pszPath, cchPath); 1016 if ((ch = achFilename[cchPath - 1]) == '\\' || ch == '/') 1017 cchPath--; 1018 else 1019 achFilename[cchPath] = '\\'; 1020 memcpy(&achFilename[cchPath + 1], pszFile, cchFile); /* cchFile = length + 1; hence we copy the terminator too. */ 1021 1022 /* 1023 * Try open the file. 1024 */ 1025 rc = myldrOpen(phFile, achFilename, pfl); 1026 switch (rc) 1027 { 1028 case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: case ERROR_ACCESS_DENIED: case ERROR_INVALID_ACCESS: 1029 case ERROR_INVALID_DRIVE: case ERROR_NOT_DOS_DISK: case ERROR_REM_NOT_LIST: case ERROR_BAD_NETPATH: 1030 case ERROR_NETWORK_BUSY: case ERROR_DEV_NOT_EXIST: case ERROR_TOO_MANY_CMDS: case ERROR_ADAP_HDW_ERR: 1031 case ERROR_UNEXP_NET_ERR: case ERROR_BAD_REM_ADAP: case ERROR_NETNAME_DELETED: case ERROR_BAD_DEV_TYPE: 1032 case ERROR_NETWORK_ACCESS_DENIED: case ERROR_BAD_NET_NAME: case ERROR_TOO_MANY_SESS: case ERROR_REQ_NOT_ACCEP: 1033 case ERROR_INVALID_PASSWORD: case ERROR_OPEN_FAILED: case ERROR_INVALID_NAME: case ERROR_FILENAME_EXCED_RANGE: 1034 case ERROR_VC_DISCONNECTED: 1035 break; 1036 1037 case NO_ERROR: 1038 strcpy(pszFilename, achFilename); 1039 default: 1040 tcbSetTCBFailErr(tcbGetCur(), TCBFailErr_save); 1041 return rc; 1042 } 1043 } 1044 #ifdef DEBUG 1045 else if (cchPath > 0) kprintf(("OpenPATH: Path component is too long\n")); 1046 #endif 1047 1048 /* 1049 * Next 1050 */ 1051 if (*pszNext == '\0') 1052 break; 1053 pszPath = pszNext + 1; 1054 } 1055 1056 1057 /* 1058 * File is not found. 1059 */ 1060 *phFile = 0; 1061 tcbSetTCBFailErr(tcbGetCur(), TCBFailErr_save); 1062 return ERROR_FILE_NOT_FOUND; 1063 } -
trunk/src/win32k/ldr/myldrOpenPath.cpp
r3829 r4164 1 /* $Id: myldrOpenPath.cpp,v 1. 1 2000-07-16 22:21:16bird Exp $1 /* $Id: myldrOpenPath.cpp,v 1.2 2000-09-02 21:08:10 bird Exp $ 2 2 * 3 3 * myldrOpenPath - ldrOpenPath used to open executables we'll override … … 16 16 #define INCL_NOPMAPI 17 17 #define INCL_OS2KRNL_TCB 18 #define INCL_OS2KRNL_PTDA 18 19 19 20 /******************************************************************************* … … 25 26 #include <stdlib.h> 26 27 28 #include "devSegDf.h" /* Win32k segment definitions. */ 27 29 #include "log.h" 28 30 #include "dev32.h" … … 134 136 else 135 137 { 136 struct InfoSegLDT *pInfoSeg; 137 pInfoSeg = (struct InfoSegLDT *)D32Hlp_GetDOSVar(DHGETDOSV_SYSINFOSEG, 0); 138 if (pInfoSeg == NULL) 138 PPTDA pPTDA = ptdaGetCur(); 139 if (pPTDA) 139 140 { 140 pExe = getModuleByhMTE(p InfoSeg->LIS_DI); /* LIS_DI is the same as hmod in LINFOSEG from bsedos16.h. */141 pExe = getModuleByhMTE(ptdaGet_ptda_module(pPTDA)); 141 142 #ifdef DEBUG /* While testing! */ 142 kprintf(("myldrOpenPath: getModuleByhMTE returned 0x% x08 for hmod=0x%04\n",143 pExe, p InfoSeg->LIS_DI));143 kprintf(("myldrOpenPath: getModuleByhMTE returned 0x%08x for hmod=0x%04x\n", 144 pExe, ptdaGet_ptda_module(pPTDA))); 144 145 #endif 145 146 } 146 #ifdef DEBUG /* While testing! */147 else148 dprintf(("myldrOpenPath: D32Hlp_GetDOSVar(DHGETDOSV_SYSINFOSEG) failed.\n"));149 #endif150 147 } 151 148 -
trunk/src/win32k/ldr/myldrRead.cpp
r2501 r4164 1 /* $Id: myldrRead.cpp,v 1. 6 2000-01-22 18:21:02bird Exp $1 /* $Id: myldrRead.cpp,v 1.7 2000-09-02 21:08:10 bird Exp $ 2 2 * 3 3 * myldrRead - ldrRead. 4 4 * 5 * Copyright (c) 1998- 1999 knut st. osmundsen5 * Copyright (c) 1998-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.no) 6 6 * 7 7 * Project Odin Software License can be found in LICENSE.TXT … … 23 23 #include <stdlib.h> 24 24 25 #include "devSegDf.h" /* Win32k segment definitions. */ 25 26 #include "log.h" 27 #include "avl.h" 26 28 #include "dev32.h" 27 29 #include <peexe.h> 28 30 #include <exe386.h> 29 31 #include "OS2Krnl.h" 32 #include "ldrCalls.h" 33 #include "ldr.h" 30 34 #include "ModuleBase.h" 31 35 #include "pe2lx.h" 32 #include "avl.h"33 #include "ldrCalls.h"34 #include "ldr.h"35 36 36 37 38 /** 39 * Overloads ldrRead. 40 * @returns OS/2 return code. 41 * @param hFile Filehandle to read from. 42 * @param pvBuffer Buffer to read into. 43 * @param fpBuffer This is not flags as I first though, but probably a far 16-bit pointer 44 * to the buffer. 45 * @param cbToRead Count of bytes to read. 46 * @param pMTE 47 * @sketch IF it's our module THEN 48 * Get module pointer. (complain if this failes and backout to ldrRead.) 49 * Currently - verify that it's a Pe2Lx module. (complain and fail if not.) 50 * Invoke the read method of the module do the requested read operation. 51 * Save pMTE if present and not save allready. 52 * ENDIF 53 * - backout or not our module - 54 * forward request to the original ldrRead. 55 * @status Completely implemented. 56 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 57 */ 37 58 ULONG LDRCALL myldrRead( 38 SFNhFile,39 ULONGulOffset,40 PVOID pBuffer,41 ULONG ulFlags,42 ULONG ulBytesToRead,43 PMTEpMTE44 59 SFN hFile, 60 ULONG ulOffset, 61 PVOID pvBuffer, 62 ULONG fpBuffer, 63 ULONG cbToRead, 64 PMTE pMTE 65 ) 45 66 { 46 67 ULONG rc; … … 50 71 { 51 72 PMODULE pMod; 52 kprintf(("ldrRead+: hF=%+04x off=%+08x pB=%+08x fl=%+08x cb=%+04x pMTE=%+08x\n",hFile,ulOffset,pBuffer,ulFlags,ulBytesToRead,pMTE)); 73 kprintf(("myldrRead: hF=%+04x off=%+08x pB=%+08x fp=%+08x cb=%+04x pMTE=%+08x\n", 74 hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE)); 53 75 54 76 pMod = getModuleBySFN(hFile); … … 59 81 pMod->pMTE = pMTE; 60 82 61 /* debug */62 if (ulFlags != 0)63 kprintf(("ldrRead: Warning ulFlags = 0x%x (!= 0)\n", ulFlags));64 65 83 if ((pMod->fFlags & MOD_TYPE_MASK) == MOD_TYPE_PE2LX) 66 rc = pMod->Data.pModule->read(ulOffset, p Buffer, ulBytesToRead, ulFlags, pMTE);84 rc = pMod->Data.pModule->read(ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE); 67 85 else 68 86 { 69 kprintf((" ldrRead: Invalid module type, %#x\n", pMod->fFlags & MOD_TYPE_MASK));87 kprintf(("myldrRead: Invalid module type, %#x\n", pMod->fFlags & MOD_TYPE_MASK)); 70 88 rc = ERROR_READ_FAULT; 71 89 } 72 return rc;73 90 } 74 91 else 75 kprintf(("ldrRead: DON'T PANIC! - but I can't get Node ptr! - This is really an IPE!\n")); 92 { 93 kprintf(("myldrRead: DON'T PANIC! - but I can't get Node ptr! - This is really an IPE!\n")); 94 rc = ERROR_READ_FAULT; 95 } 76 96 } 77 78 rc = ldrRead(hFile, ulOffset, pBuffer, ulFlags, ulBytesToRead, pMTE); 79 97 else 98 { 99 rc = ldrRead(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE); 100 } 80 101 #if 0 81 kprintf((" ldrRead: hF=%+04x off=%+08x pB=%+08x fl=%+08x cb=%+04x pMTE=%+08x rc=%d\n",82 hFile, ulOffset,pBuffer,ulFlags,ulBytesToRead,pMTE,rc));102 kprintf(("myldrRead: hF=%+04x off=%+08x pB=%+08x fp=%+08x cb=%+04x pMTE=%+08x rc=%d\n", 103 hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE, rc)); 83 104 #endif 84 105 -
trunk/src/win32k/ldr/mytkExecPgm.asm
r2872 r4164 1 ; $Id: mytkExecPgm.asm,v 1.1 0 2000-02-23 16:53:04bird Exp $1 ; $Id: mytkExecPgm.asm,v 1.11 2000-09-02 21:08:10 bird Exp $ 2 2 ; 3 3 ; mytkExecPgm - tkExecPgm overload … … 10 10 11 11 ; 12 ; Defined Constants And Macros 13 ; 14 CCHFILENAME EQU 261 ; The size of the filename buffer 15 CCHARGUMENTS EQU 1536 ; The size of the argument buffer 16 CCHMAXPATH EQU CCHFILENAME - 1 ; Max path length 17 18 ; 12 19 ; Include files 13 20 ; 14 21 include devsegdf.inc 15 22 16 ; 17 ; Imported Functions 23 24 ; 25 ; Imported Functions and variables. 18 26 ; 19 27 extrn _g_tkExecPgm:PROC 20 extrn AcquireBuffer:PROC21 extrn ReleaseBuffer:PROC22 extrn QueryBufferSegmentOffset:PROC23 28 24 29 ; Scans strings until empy-string is reached. … … 45 50 extrn _f_FuBuff:PROC 46 51 52 53 ; 32-bit memcpy. (see OS2KTK.h) 54 extrn _TKFuBuff@16:PROC 55 56 ; 57 ; LDR semaphore 58 ; 59 extrn pLdrSem:DWORD 60 extrn _LDRClearSem@0:PROC 61 extrn _KSEMRequestMutex@8:PROC 62 extrn _KSEMQueryMutex@8:PROC 63 64 ; 65 ; Loader State 66 ; 67 extrn ulLDRState:DWORD 68 69 ; 70 ; Pointer to current executable module. 71 ; 72 extrn pExeModule:DWORD 73 74 ; 75 ; DevHlp32 76 ; 77 extrn D32Hlp_VirtToLin:PROC 78 79 ; 80 ; TKSSBase (32-bit) 81 ; 82 extrn pulTKSSBase32:DWORD 83 47 84 ; 48 85 ; Exported symbols 49 86 ; 50 87 public mytkExecPgm 51 88 public tkExecPgmCopyEnv 89 90 public fTkExecPgm 91 public achTkExecPgmFilename 92 public achTkExecPgmArguments 93 94 95 96 ; 97 ; Global data 98 ; 99 100 ; Filename and arguments buffers + environment pointer 101 ; from the tkExecPgm call. 102 ; 103 ; This data is only valid at isLdrStateExecPgm time 104 ; (and you'll have to be behind the loader semaphore of course!) 105 DATA16 SEGMENT 106 fTkExecPgm db 0 ; 0 - achTkExecPgmFilename and achTkExecPgmArguments is INVALID 107 ; 1 - achTkExecPgmFilename and achTkExecPgmArguments is VALID. 108 achTkExecPgmFilename db CCHFILENAME dup (0) ; The filename passed in to tkExecPgm if (fTkExec is TRUE) 109 achTkExecPgmArguments db CCHARGUMENTS dup (0) ; The arguments passed in to tkExecPgm if (fTkExec is TRUE) 110 fpachTkExecPgmEnv dd 0 ; Far pointer to environment passed in to tkExecPgm. 111 ; Valid at isLdrStateExecPgm time. 112 ; NOTE! User data, don't touch it directly! 113 DATA16 ENDS 52 114 53 115 54 116 CODE32 SEGMENT 55 56 117 ;; 57 ; 118 ; New implementation. 58 119 ; @returns same as tkExecPgm: eax, edx and carry flag 59 120 ; @param ax Exec flag … … 65 126 ; may modify later if this is a UNIX shellscript or 66 127 ; a PE-file started by pe.exe. 67 ; @status 128 ; @status completely implemented. 68 129 ; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 69 ; @remark 70 ; 71 ; The buffer we are using is a C struct as follows. 72 ; struct Buffer 73 ; { 74 ; char szFilename[261]; /* offset 0 */ 75 ; char achArg[1536-261]; /* offset 261 */ 76 ; }; 130 ; 77 131 ; 78 132 mytkExecPgm PROC FAR 79 pBuffer = dword ptr -04h 80 SegBuffer = -08h 81 OffBuffer = -0Ch 82 cchFilename = dword ptr -10h 83 cchArgs = dword ptr -14h 84 ;usExecFlag = -18h 85 ;SegFilename = -1ch 86 ;OffFilename = -1eh 87 ;SegEnv = -20h 88 ;OffEnv = -22h 89 ;SegArg = -24h 90 ;OffArg = -26h 91 92 ASSUME CS:CODE32, DS:NOTHING, SS:NOTHING 93 ; int 3 94 push ebp 95 mov ebp, esp 96 lea esp, [ebp + cchArgs] 97 98 push eax 99 push ecx 100 push ds 101 push es 102 push edi 103 104 ; parameter validations 105 mov ax, ds ; pointer to filename 106 cmp ax, 4 107 jb mytkExecPgm_CalltkExecPgm_X1 108 109 ; 110 ; filename length 111 ; 112 mov ax, ds 113 mov es, ax 114 pushad 115 push es 116 push ds 117 mov bx, ds 118 mov di, dx ; es:di is now filename address (ds:dx). 119 push cs ; Problem calling far into the calltab segement. 120 call near ptr FLAT:_f_FuStrLen 121 movzx ecx, cx 122 mov [ebp+cchFilename], ecx 123 pop ds 124 pop es 125 popad 126 jc mytkExecPgm_CalltkExecPgm_X1; If the FuStrLen call failed we bail out! 127 128 ; 129 ; if filename length is more that CCHMAXPATH then we don't do anything!. 130 ; 131 cmp [ebp+cchFilename], 260 132 jae mytkExecPgm_CalltkExecPgm_X1; length >= 260 133 134 ; 135 ; args length 136 ; Note: the arguments are a series of ASCIIZs ended by an empty string (ie. '\0'). 137 ; 138 pop edi 139 push edi 140 xor ecx, ecx 141 cmp di, 4 ; The argument might me a invalid pointer... 142 jb mytkExecPgm_CalltkExecPgm_1 143 144 pushad 145 push es 146 push ds 147 mov bx, di ; 148 mov di, si ; bx:di -> arguments 149 push cs ; Problem calling far into the calltab segement. 150 call near ptr FLAT:_f_FuStrLenZ 151 movzx ecx, cx 152 mov [ebp+cchArgs], ecx 153 pop ds 154 pop es 155 popad 156 jc mytkExecPgm_CalltkExecPgm_X1 157 158 mytkExecPgm_CalltkExecPgm_1: 159 mov ecx, [ebp+cchArgs] 160 add ecx, [ebp+cchFilename] ; filename 161 add ecx, 3 + 260 ; 260 = new argument from a scrip file or something. 162 ; 3 = two '\0's and a space after added argument. 163 cmp ecx, 1536 ; 1536 = Buffersize. FIXME! Define this!!! 164 jae mytkExecPgm_CalltkExecPgm_X1; jmp if argument + file + new file > buffer size 165 166 ; 167 ; Aquire a buffer 168 ; 169 call AcquireBuffer 170 or eax, eax 171 jz mytkExecPgm_CalltkExecPgm_X1; Failed to get buffer. 172 mov [ebp+pBuffer], eax 173 174 ; 175 ; Get Segment and offset for the buffer 176 ; 177 call QueryBufferSegmentOffset 178 mov cx, es 179 mov [ebp+OffBuffer], ax 180 mov [ebp+SegBuffer], es 181 test eax, 000570000h 182 jnz mytkExecPgm_CalltkExecPgm_X2 183 184 ; 185 ; Copy filename to pBuffer. 186 ; 187 pushad 188 push es 189 push ds 190 mov di, ax ; es:di pBuffer 191 mov si, dx 192 mov bx, ds ; bx:si Filename pointer (input ds:dx) 193 mov ecx, [ebp+cchFilename] 194 push cs ; Problem calling far into the calltab segement. 195 call near ptr FLAT:_f_FuBuff 196 pop ds 197 pop es 198 popad 199 jc mytkExecPgm_CalltkExecPgm_X2 200 201 ; 202 ; Copy Args to pBuffer + 261 203 ; 204 ; stack: edi, es, ds, ecx, eax 205 pop edi 206 push edi 207 add eax, 261 ; we'll use eax in the branch 208 cmp di, 4 209 jb mytkExecPgm_CalltkExecPgm_2 210 pushad 211 push es 212 push ds 213 mov ecx, [ebp+cchArgs] 214 mov bx, di ; ds:si -> arguments 215 mov di, ax ; es:di -> buffer + 261 216 push cs ; Problem calling far into the calltab segement. 217 call near ptr FLAT:_f_FuBuff 218 pop ds 219 pop es 220 popad 221 jc mytkExecPgm_CalltkExecPgm_X2 222 jmp mytkExecPgm_CalltkExecPgm_3 223 224 mytkExecPgm_CalltkExecPgm_2: 225 mov word ptr es:[eax], 0 ; Terminate the empty string! 226 227 ; 228 ; Restore variables pushed on the stack 229 ; 230 ; stack: edi, es, ds, ecx, eax 231 mytkExecPgm_CalltkExecPgm_3: 232 pop edi 233 pop es 234 pop ds 235 pop ecx 236 pop eax 237 238 ; 239 ; Set new input parameters (call _g_tkExecPgm) 240 ; 241 ; ds:dx is to become SegBuffer:OffBuffer 242 ; di:si is to become SegBuffer:OffBuffer+261 243 ; 244 ; The some of the old values are stored on the stack (for the time being) 245 push ds 246 push edi 247 push esi 248 249 mov di, [ebp+SegBuffer] 250 mov ds, di 251 mov si, [ebp+OffBuffer] 252 mov dx, si ; ds:dx SegBuffer:OffBuffer 253 add si, 261 ; di:si SegBuffer:OffBuffer+261 254 255 ; 256 ; Call _g_tkExecPgm 257 ; 258 push cs ; Problem calling far into the calltab segement. 259 call near ptr FLAT:_g_tkExecPgm 260 pushfd 261 262 ; 263 ; Release buffer 264 ; 265 push eax 266 mov eax, [ebp + pBuffer] 267 call ReleaseBuffer 268 mov [ebp + pBuffer], 0 269 pop eax 270 271 ; 272 ; Return 273 ; 274 popfd 275 pop esi 276 pop edi 277 pop ds 278 leave 279 retf 280 281 mytkExecPgm_CalltkExecPgm_X2: 282 ; 283 ; Release buffer 284 ; 285 mov eax, [ebp + pBuffer] 286 call ReleaseBuffer 287 mov [ebp + pBuffer], 0 288 289 mytkExecPgm_CalltkExecPgm_X1: 290 pop edi 291 pop es 292 pop ds 293 pop ecx 294 pop eax 295 296 mytkExecPgm_CalltkExecPgm: 297 push cs 298 call near ptr FLAT:_g_tkExecPgm 299 leave 300 retf 301 mytkExecPgm ENDP 302 303 304 305 CODE32 ENDS 306 307 if 0 ; alternate implementation. 308 mytkExecPgm PROC FAR 309 pBuffer = dword ptr -04h 310 SegBuffer = -08h 311 OffBuffer = -0Ch 312 cchFilename = -10h 313 cchArgs = -14h 314 usExecFlag = -18h 315 SegFilename = -1ch 316 OffFilename = -1eh 317 SegEnv = -20h 318 OffEnv = -22h 319 SegArg = -24h 320 OffArg = -26h 133 cchFilename = -4h 134 cchArgs = -08h 135 usExecFlag = -0ch 136 SegFilename = -10h 137 OffFilename = -12h 138 SegEnv = -14h 139 OffEnv = -16h 140 SegArg = -18h 141 OffArg = -1ah 321 142 322 143 ASSUME CS:CODE32, DS:NOTHING, SS:NOTHING … … 325 146 lea esp, [ebp + OffArg] 326 147 327 ; save input parameters 148 ; 149 ; Save input parameters 150 ; 328 151 mov [ebp + usExecFlag], ax 329 152 mov ax, es … … 332 155 mov [ebp + SegArg], di 333 156 mov [ebp + OffArg], si 334 mov ax, ds335 mov [ebp + SegFilename], ax157 mov bx, ds 158 mov [ebp + SegFilename], bx 336 159 mov [ebp + OffFilename], dx 337 160 338 ; parameter validations 339 cmp ax, 4 ; pointer to filename 340 jb mytkExecPgm_CalltkExecPgm_X1 341 342 ; 343 ; filename length 344 ; 345 mov bx, ax 161 ; 162 ; Parameter validations - if any of these fail we'll just pass on to 163 ; the real tkExecPgm without setting up any buffers stuff. 164 ; 1) validate the file pointer. 165 ; 2) validate the file name length < 260 166 ; 3) validate that the arguments aren't larger than the buffer. 167 ; 168 169 ; Validate filename pointer 170 ; 171 cmp bx, 4 ; pointer to filename 172 jb tkepgm_backout 173 174 ; Validate filename length 175 ; 346 176 mov di, dx ; bx:di is now filename address 347 177 push cs ; Problem calling far into the calltab segement. 348 178 call near ptr FLAT:_f_FuStrLen 349 jc mytkExecPgm_CalltkExecPgm_X1; If the FuStrLen call failed we bail out! 350 351 ; 179 jc tkepgm_backout ; If the FuStrLen call failed we bail out! 180 352 181 ; if filename length is more that CCHMAXPATH then we don't do anything!. 353 ; 354 cmp cx, 260 355 jae mytkExecPgm_CalltkExecPgm_X1; length >= 260 356 mov [ebp+cchFilename], cx 182 cmp cx, CCHMAXPATH 183 jae tkepgm_backout ; length >= CCHMAXPATH 184 mov [ebp + cchFilename], cx 357 185 358 186 ; … … 360 188 ; Note: the arguments are a series of ASCIIZs ended by an empty string (ie. '\0'). 361 189 ; 362 mov bx, [ebp+SegArg] 190 xor cx, cx ; Set length to zero. 191 mov bx, [ebp + SegArg] 363 192 cmp bx, 4 ; The argument might me an NULL pointer 364 xor cx, cx 365 jb mytkExecPgm_CalltkExecPgm_1 366 367 mov di, [ebp+OffArg] ; bx:di -> arguments 193 jb tkepgm1 194 195 mov di, [ebp + OffArg] ; bx:di -> arguments 368 196 push cs ; Problem calling far into the calltab segement. 369 197 call near ptr FLAT:_f_FuStrLenZ 370 mov [ebp+cchArgs], cx371 jc mytkExecPgm_CalltkExecPgm_X1 372 373 mytkExecPgm_CalltkExecPgm_1: 374 add cx, [ebp +cchFilename]; filename length375 add cx, 3 + 260 ; 260 = new argument from a scripfile or something.198 jc tkepgm_backout 199 200 tkepgm1: 201 mov [ebp + cchArgs], cx 202 add cx, [ebp + cchFilename] ; filename length 203 add cx, 3 + 260 ; 260 = additional arguments from a script file or something. 376 204 ; 3 = two '\0's and a space after added argument. 377 cmp ecx, 1536 ; 1536 = Buffersize. FIXME! Define this!!! 378 jae mytkExecPgm_CalltkExecPgm_X1; jmp if argument + file + new file > buffer size 379 380 ; 381 ; Aquire a buffer 382 ; 383 call AcquireBuffer 384 mov [ebp+pBuffer], eax 385 or eax, eax 386 jz mytkExecPgm_CalltkExecPgm_X1; Failed to get buffer. 387 388 ; 389 ; Get Segment and offset for the buffer 390 ; 391 call QueryBufferSegmentOffset 392 mov cx, es 393 mov [ebp+OffBuffer], ax 394 mov [ebp+SegBuffer], es 395 test eax, 000570000h 396 jnz mytkExecPgm_CalltkExecPgm_X2 397 398 ; 399 ; Copy filename to pBuffer. 400 ; 401 mov di, ax ; es:di pBuffer 402 mov si, dx 403 mov bx, ds ; bx:si Filename pointer (input ds:dx) 404 mov cx, [ebp+cchFilename] ; cx = length of area to copy 205 cmp cx, CCHARGUMENTS ; argument Buffersize. 206 jae tkepgm_backout ; jmp if argument + file + additional arguments >= buffer size 207 208 209 ; 210 ; Aquire the OS/2 loader semaphore 211 ; Since parameters looks good, we're ready for getting the loader semaphore. 212 ; We use the loader semaphore to serialize access to the win32k.sys loader 213 ; subsystem. 214 ; Before we can get the loader semaphore, we'll need to set ds and es to 215 ; flat R0 context. 216 ; The loader semaphore is later requested by the original tkExecPgm so 217 ; this shouldn't break anything. 218 ; 219 mov ax, seg FLAT:DATA32 220 mov ds, ax 221 mov es, ax 222 ASSUME DS:FLAT, ES:FLAT 223 224 mov eax, pLdrSem ; Get pointer to the loader semaphore. 225 or eax, eax ; Check if null. (paranoia) 226 jz tkepgm_backout ; Fail if null. 227 228 push 0ffffffffh ; Wait indefinitely. 229 push eax ; Push LdrSem address (which is the handle). 230 call near ptr FLAT:_KSEMRequestMutex@8 231 or eax, eax ; Check if failed. 232 jnz tkepgm_backout ; Backout on failure. 233 234 235 ; 236 ; From here on we won't backout to the tkepgm_backout lable but 237 ; the tkepgm_backout2 lable. (This will restore the parameters 238 ; and jump in at the call to tkExecPgm behind the Loader Sem.) 239 ; 240 241 242 ; 243 ; Set global data: 244 ; Zeros pointer to exemodule to NULL (a bit paranoia). 245 ; Mark global data valid. 246 ; Store Environment pointer. 247 ; Set loader state. 248 ; 249 mov pExeModule, 0 ; Sets the exemodule pointer to NULL. 250 mov fTkExecPgm, 1 ; Optimistic, mark the global data valid. 251 mov eax, [ebp + OffEnv] ; Environment FAR pointer. 252 mov fpachTkExecPgmEnv, eax ; Store the Environment pointer. This will 253 ; later permit us to get the passed in 254 ; environment in for ex. ldrOpenPath. 255 mov ulLDRState, 1 ; Set the loader state to LDRSTATE_TKEXECPGM! 256 ASSUME DS:NOTHING, ES:NOTHING 257 258 259 ; 260 ; Copy filename to achBuffer. 261 ; 262 mov di, seg achTkExecPgmFilename 263 mov es, di 264 mov edi, offset achTkExecPgmFilename 265 ; es:(e)di -> &achTkExecPgmFilename[0] 266 mov si, [ebp + OffFilename] 267 mov bx, [ebp + SegFilename] ; bx:si Filename pointer (input ds:dx) 268 ASSUME DS:NOTHING 269 mov cx, [ebp + cchFilename] ; cx = length of area to copy 405 270 push cs ; Problem calling far into the calltab segement. 406 271 call near ptr FLAT:_f_FuBuff 407 jc mytkExecPgm_CalltkExecPgm_X2 408 409 ; 410 ; Copy Args to pBuffer + 261 411 ; 412 mov si, [ebp+SegArg] 413 cmp si, 4 414 jb mytkExecPgm_CalltkExecPgm_2 415 mov ds, si 416 mov si, [ebp+OffArg] ; ds:si -> arguments 417 mov di, [ebp+SegBuffer] 272 jc tkepgm_backout2 ; In case of error back (quite unlikely). 273 274 275 ; 276 ; Copy Args to achTkExecPgmArguments 277 ; 278 mov di, seg achTkExecPgmArguments 418 279 mov es, di 419 mov di, [ebp+OffBuffer] 420 add di, 261 ; es:di -> buffer + 261 421 mov cx, [ebp+cchArgs] ; cx = length of area to copy 280 mov edi, offset achTkExecPgmArguments 281 ; es:(e)di -> &achTkExecPgmArguments[0] 282 mov word ptr es:[edi], 0 ; Terminate the argument string in case 283 ; there aren't any arguments.('\0\0') 284 ; (We're just about to find that out.) 285 mov bx, [ebp + SegArg] 286 cmp bx, 4 ; Is the argument pointer a null-pointer? 287 jb tkepgm_setup_parms ; Skip copy if null pointer. 288 ; Argument string is '\0\0'. 289 mov si, [ebp + OffArg] ; bx:si -> arguments 290 mov cx, [ebp + cchArgs] ; cx = length of area to copy 422 291 push cs ; Problem calling far into the calltab segement. 423 292 call near ptr FLAT:_f_FuBuff 424 jc mytkExecPgm_CalltkExecPgm_X2 425 jmp mytkExecPgm_CalltkExecPgm_3 426 427 mytkExecPgm_CalltkExecPgm_2: 428 mov word ptr es:[eax], 0 ; Terminate the empty string! 429 430 ; 431 ; Set new input parameters (call _g_tkExecPgm) 432 ; 433 ; ds:dx is to become SegBuffer:OffBuffer 434 ; di:si is to become SegBuffer:OffBuffer+261 435 ; 436 mytkExecPgm_CalltkExecPgm_3: 437 mov di, [ebp+SegBuffer] 438 mov ds, di 439 mov si, [ebp+OffBuffer] 440 mov dx, si ; ds:dx SegBuffer:OffBuffer 441 add si, 261 ; di:si SegBuffer:OffBuffer+261 442 mov bx, [ebp+SegEnv] 293 jc tkepgm_backout2 ; In case of error back (quite unlikely). 294 295 296 ; 297 ; Setup new input parameters (call _g_tkExecPgm) 298 ; 299 ; ds:dx is to become &achTkExecPgmFilename[0] 300 ; di:si is to become &achTkExecPgmArguments[0] 301 ; 302 tkepgm_setup_parms: 303 mov ax, [ebp + usExecFlag] 304 mov di, seg achTkExecPgmArguments 305 mov esi, offset achTkExecPgmArguments ; di:si &achTkExecPgmArguments[0] 306 mov ds, di ; Assumes same segment (which of course is true). 307 mov edx, offset achTkExecPgmFilename ; ds:dx &achTkExecPgmFilename[0] 308 mov bx, [ebp + SegEnv] 443 309 mov es, bx 444 mov bx, [ebp+SegEnv] 310 mov bx, [ebp + OffEnv] ; es:bx Environment 311 445 312 446 313 ; 447 314 ; Call _g_tkExecPgm 448 315 ; 316 tkepgm_callbehind: 449 317 push cs ; Problem calling far into the calltab segement. 450 318 call near ptr FLAT:_g_tkExecPgm 451 pushfd 452 453 ; 454 ; Release buffer 455 ; 456 push eax 457 mov eax, [ebp + pBuffer] 458 call ReleaseBuffer 459 mov [ebp + pBuffer], 0 460 pop eax 461 462 ; 463 ; Return 464 ; 465 push [ebp + SegFilename] 319 pushfd ; preserve flags 320 push eax ; preserve result. 321 push ecx ; preserve ecx just in case 322 push edx ; preserve edx just in case 323 mov ax, seg FLAT:DATA32 324 mov ds, ax 325 mov es, ax 326 ASSUME ds:FLAT, es:FLAT ; both ds and es are now FLAT 327 328 329 ; 330 ; Clear loader semaphore? 331 ; and clear loader state, current exe module and tkExecPgm global data flag. 332 ; 333 push 0 ; Usage count variable. 334 mov eax, pulTKSSBase32 ; Get TKSSBase 335 mov eax, [eax] 336 add eax, esp ; Added TKSSBase to the usage count pointer 337 push eax ; Push address of usage count pointer. 338 push pLdrSem ; Push pointer to loader semaphore ( = handle). 339 call near ptr FLAT:_KSEMQueryMutex@8 340 or eax, eax ; Check return code. (1 = our / free; 0 = not our but take) 341 pop eax ; Pops usage count. 342 je tkepgm_callbehindret ; jmp if not taken by us (rc=FALSE). 343 or eax, eax ; Check usage count. 344 jz tkepgm_callbehindret ; jmp if 0 (=free). 345 mov ulLDRState, 0 ; Clears loaderstate. (LDRSTATE_UNKNOWN) 346 mov pExeModule, 0 ; Sets the exemodule pointer to NULL. 347 mov fTkExecPgm, 0 ; Marks global data invalid. 348 call near ptr FLAT:_LDRClearSem@0 349 350 ; 351 ; Restore ds and es (probably unecessary but...) and Return 352 ; 353 tkepgm_callbehindret: 354 push dword ptr [ebp + SegFilename] 466 355 pop ds 467 push [ebp + SegEnv]356 push dword ptr [ebp + SegEnv] 468 357 pop es 469 popfd 358 pop edx ; restore edx 359 pop ecx ; restore ecx 360 pop eax ; restore result. 361 popfd ; restore flags 470 362 leave 471 363 retf 472 364 473 mytkExecPgm_CalltkExecPgm_X2: 474 ; 475 ; Release buffer 476 ; 477 mov eax, [ebp + pBuffer] 478 call ReleaseBuffer 479 mov [ebp + pBuffer], 0 480 481 mytkExecPgm_CalltkExecPgm_X1: 482 pop ds 365 366 ; 367 ; This is a backout were tkExecPgm probably will backout and we're 368 ; allready behind the loader semaphore. 369 ; 370 tkepgm_backout2: 371 ; 372 ; Set Flat context and invalidate buffer. 373 ; 374 mov ax, seg FLAT:DATA32 375 mov ds, ax 376 ASSUME ds:FLAT 377 mov fTkExecPgm, 0 ; Marks global data invalid. 378 379 ; 380 ; Restore parameters. and call the original tkExecPgm 381 ; 382 mov ax, [ebp + usExecFlag] 383 mov dx, [ebp + SegFilename] 384 mov ds, dx 385 mov dx, [ebp + OffFilename] 386 mov bx, [ebp + SegEnv] 387 mov es, bx 388 mov bx, [ebp + OffEnv] 389 mov di, [ebp + SegArg] 390 mov si, [ebp + OffArg] 391 jmp tkepgm_callbehind 392 393 394 ; 395 ; This is a backout were tkExecPgm too is exspected to back out. 396 ; 397 tkepgm_backout: 398 ; 399 ; Restore parameters. and call the original tkExecPgm 400 ; 401 mov ax, [ebp + usExecFlag] 402 mov dx, [ebp + SegFilename] 403 mov ds, dx 404 mov dx, [ebp + OffFilename] 405 mov bx, [ebp + SegEnv] 406 mov es, bx 407 mov bx, [ebp + OffEnv] 408 mov di, [ebp + SegArg] 409 mov si, [ebp + OffArg] 483 410 484 411 mytkExecPgm_CalltkExecPgm: 485 push cs 412 push cs ; Problem calling far into the calltab segement. 486 413 call near ptr FLAT:_g_tkExecPgm 487 414 leave … … 489 416 mytkExecPgm ENDP 490 417 418 419 420 ;; 421 ; Function which copies the environment data passed into tkExecPgm 422 ; to a given buffer. 423 ; @cproto ULONG _Optlink tkExecPgmCopyEnv(char *pachBuffer, unsigned cchBuffer); 424 ; @returns OS/2 return code - NO_ERROR on success. 425 ; 0 on error or no data. 426 ; @param pachBuffer Pointer to buffer which the environment data is 427 ; to be copied to. 428 ; (eax) 429 ; @param cchBuffer Size of the buffer. 430 ; (edx) 431 ; @uses eax, edx, ecx 432 ; @sketch 433 ; @status 434 ; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 435 ; @remark 436 tkExecPgmCopyEnv PROC NEAR 437 cchEnv = -04h 438 ASSUME ds:FLAT, es:FLAT, ss:NOTHING 439 push ebp 440 mov ebp, esp 441 lea esp, [ebp + cchEnv] 442 443 push ebx 444 mov ebx, eax ; ebx now holds the buffer pointer. 445 446 ; 447 ; Call tkExecPgmEnvLength to get length and check that pointer is valid. 448 ; 449 push edx 450 call tkExecPgmEnvLength 451 pop ecx ; ecx now holds the buffer length. 452 453 cmp eax, 0 454 ja tkepce_ok1 455 mov eax, 232 ; ERROR_NO_DATA 456 jmp tkepce_ret ; Fail if no data or any other error. 457 458 tkepce_ok1: 459 cmp eax, ecx ; (ecx is the buffer size.) 460 jbe tkepce_ok2 ; Fail if buffer too small. 461 mov eax, 111 ; ERROR_BUFFER_OVERFLOW 462 jmp tkepce_ret 463 464 tkepce_ok2: 465 mov [ebp + cchEnv], eax ; Save environment length. 466 467 468 ; 469 ; Thunk the environment 16-bit far pointer to 32-bit. 470 ; 471 mov eax, fpachTkExecPgmEnv 472 call D32Hlp_VirtToLin 473 or eax, eax ; check if thunking were successful. 474 jnz tkepce_ok3 ; Jump if success. 475 mov eax, edx ; A special feature for D32Hlp_VirtToLin is that edx 476 ; have the error code in case on failure. 477 jmp tkepce_ret 478 479 tkepce_ok3: 480 ; 481 ; Copy the environment data. 482 ; 483 push 3 ; Fatal if error. 484 push dword ptr [ebp + cchEnv] ; Number of bytes to copy 485 push eax ; Source buffer pointer. (user) 486 push ebx ; Target buffer pointer. 487 call near ptr FLAT:_TKFuBuff@16 488 489 tkepce_ret: 490 pop ebx 491 leave 492 ret 493 tkExecPgmCopyEnv ENDP 494 495 496 497 ;; 498 ; This function gets the length of the tkExecPgm environment data. 499 ; @cproto ULONG _Optlink tkExecPgmEnvLength(void); 500 ; @returns Environment data length in bytes. 501 ; @uses eax, edx, ecx 502 ; @sketch 503 ; @status 504 ; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 505 ; @remark 506 tkExecPgmEnvLength PROC NEAR 507 ASSUME ds:FLAT, es:FLAT, ss:NOTHING 508 push ebp 509 mov ebp, esp 510 511 ; 512 ; Push register which needs to be presered. 513 ; 514 push es 515 push ds 516 push esi 517 push edi 518 push ebx 519 520 521 ; 522 ; Check that the data is valid. 523 ; 524 cmp ulLDRState, 1 ; LDRSTATE_TKEXECPGM 525 jnz tkepel_err_ret 526 527 528 ; 529 ; Check if the environment pointer is NULL. 530 ; 531 mov ebx, fpachTkExecPgmEnv 532 ror ebx, 16 533 cmp bx, 4 534 jb tkepel_err_ret 535 536 537 tkepel1: 538 ; 539 ; Get the environment length 540 ; 541 mov edi, ebx 542 ror edi, 16 ; bx:di -> [fpachTkExecPgmEnv] 543 xor ecx, ecx 544 push cs ; Problem calling far into the calltab segement. 545 call near ptr FLAT:_f_FuStrLenZ 546 jc tkepel_err_ret 547 movzx eax, cx 548 jmp tkepel_ret 549 550 551 ; Failure 552 tkepel_err_ret: 553 xor eax, eax 554 555 556 ; Return 557 tkepel_ret: 558 pop ebx ; restore registers 559 pop edi 560 pop esi 561 pop ds 562 pop es 563 leave 564 ret 565 tkExecPgmEnvLength ENDP 566 567 568 569 570 491 571 CODE32 ENDS 492 endif493 572 494 573 -
trunk/src/win32k/lib/libDosAllocMemEx.c
r2914 r4164 1 /* $Id: libDosAllocMemEx.c,v 1. 3 2000-02-26 19:59:55bird Exp $1 /* $Id: libDosAllocMemEx.c,v 1.4 2000-09-02 21:08:11 bird Exp $ 2 2 * 3 3 * DosAllocMemEx - Extened Edition of DosAllocMem. … … 17 17 #define INCL_DOSFILEMGR 18 18 #define INCL_DOSDEVICES 19 #define INCL_WIN32K_LIB20 19 21 20 -
trunk/src/win32k/lib/libTest.c
r2915 r4164 1 /* $Id: libTest.c,v 1. 1 2000-02-26 20:19:26bird Exp $1 /* $Id: libTest.c,v 1.2 2000-09-02 21:08:11 bird Exp $ 2 2 * 3 3 * Test program for the win32k library. … … 12 12 * Defined Constants And Macros * 13 13 *******************************************************************************/ 14 #define INCL_WIN32K_LIB15 14 #define INCL_BASE 16 15 -
trunk/src/win32k/lib/makefile
r3146 r4164 1 1 ############################################################################## 2 # $Id: makefile,v 1. 3 2000-03-17 17:38:27bird Exp $2 # $Id: makefile,v 1.4 2000-09-02 21:08:12 bird Exp $ 3 3 # 4 4 # PD-Win32 API … … 49 49 OBJS = $(WIN32KOBJ)\libInit.$(OBJEXT) \ 50 50 $(WIN32KOBJ)\libTerm.$(OBJEXT) \ 51 $(WIN32KOBJ)\libWin32kInstalled.$(OBJEXT) \ 52 $(WIN32KOBJ)\libWin32kQueryOptionsStatus.$(OBJEXT) \ 53 $(WIN32KOBJ)\libWin32kSetOptions.$(OBJEXT) \ 51 54 $(WIN32KOBJ)\libDosAllocMemEx.$(OBJEXT) \ 55 $(WIN32KOBJ)\libW32kQueryOTEs.$(OBJEXT) \ 52 56 $(WIN32KOBJ)\libGetCS.obj 53 57 … … 86 90 ############################################################################## 87 91 dep: 88 $(DEPEND) -obj$(OBJEXT) -o$(WIN32KOBJ) $(CINCLUDES) $(WIN32KBASE)\include\*.h 92 $(DEPEND) -obj$(OBJEXT) -o$(WIN32KOBJ) $(CINCLUDES) \ 93 $(WIN32KBASE)\include\*.h *.c* *.asm 89 94 90 95 !if [$(EXISTS) .depend] == 0 -
trunk/src/win32k/libconv.c
r1678 r4164 1 /* $Id: libconv.c,v 1. 2 1999-11-10 01:45:29bird Exp $1 /* $Id: libconv.c,v 1.3 2000-09-02 21:07:53 bird Exp $ 2 2 * 3 3 * Very simple OMF/LIB dumper. … … 21 21 22 22 int fCodeToCode16 = 0; 23 int fRemoveExtra = 0; 23 24 24 25 /*@IntFunc********************************************************************** … … 26 27 *******************************************************************************/ 27 28 int processFile(const char *pszFilename, const char *pszFilenameOut); 28 void *processRecord(void *pvRecord, void *pvBase, FILE *phNew );29 void *processRecord(void *pvRecord, void *pvBase, FILE *phNew, unsigned short *ausTrans); 29 30 30 31 … … 35 36 int argi = 1; 36 37 38 if (argc == 4) 39 { 40 argi = 2; 41 fRemoveExtra = 1; 42 } 37 43 if (argc != 3) 38 44 printf("syntax error - requires two filename, in.lib and out.lib\n"); … … 78 84 if (fread(pvFile, cbFile, 1, phFile) == 1) 79 85 { 86 unsigned short * ausTrans = calloc(sizeof(unsigned short), cbFile / 16 ); /* Assumes page size of 16 FIXME! */ 80 87 void *pvNew = pvFile; 88 81 89 82 90 /* main loop */ 83 91 while (pvNew < (void*)(cbFile + (int)pvFile)) 84 pvNew = processRecord(pvNew, pvFile, phNew );92 pvNew = processRecord(pvNew, pvFile, phNew, ausTrans); 85 93 } 86 94 else … … 103 111 104 112 105 void *processRecord(void *pvRecord, void *pvBase, FILE *phNew )113 void *processRecord(void *pvRecord, void *pvBase, FILE *phNew, unsigned short *ausTrans) 106 114 { 107 115 static char *apszLNames[256]; 108 116 static int cpszLNames = 0; 109 117 static int iCode16 = 0; 118 static int cbPage = 16; /* fixme todo TODO FIXME ASSUMES: pagesize = 16 */ 110 119 void *pvRet = pvRecord; 111 120 int cbRecord; … … 116 125 { 117 126 case LIBHDR: 118 fChanged = 1;119 fwrite(pvRecord, 1, 3, phNew);120 127 if (*(unsigned short*)((int)pvRecord+1) < 6) 121 fwrite((char*)pvRecord+3, 1, *(unsigned short*)((int)pvRecord+1), phNew); 122 else 123 { 124 i = 0; 125 fwrite(&i, 1, 2, phNew); 126 fwrite(&i, 1, 2, phNew); 127 fwrite(&i, 1, 2, phNew); 128 fwrite((char*)pvRecord+3+6, 1, *(unsigned short*)((int)pvRecord+1) - 6, phNew); 129 } 130 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 131 break; 132 133 case 0x98: /* 16-bit segdef */ 134 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 128 fprintf(stderr, "error: not supported LIBHDR\n"); 129 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 130 break; 131 132 case THEADR: 133 /* Add entry to the translation table - used to translate block numbers in the dictionary */ 134 ausTrans[((char*)pvRecord - (char*)pvBase) / cbPage] = (unsigned short)(ftell(phNew) / cbPage); 135 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 136 break; 137 138 case SEGDEF: /* 16-bit segdef */ 139 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 140 *((char*)pvRecord + 9) = 0; 135 141 i = *(char*)((int)pvRecord + 6); 136 142 if (cbRecord == 10 && i <= cpszLNames && strcmp(apszLNames[i-1], "CODE") == 0) 137 143 { 138 144 *(char*)((int)pvRecord + 6) = iCode16+1; 139 } 145 } 146 i = *(char*)((int)pvRecord + 6); 147 if (cbRecord == 10 && (*((char *)pvRecord + 3) & 0xE0) == 0x20 && i <= cpszLNames && strcmp(apszLNames[i-1], "CODE16_IOSEG") == 0) 148 { /* change alignment of this segment... */ 149 /* fprintf(stderr, "debug %s 0x%02x\n", apszLNames[*(char*)((int)pvRecord + 6) - 1], (*((char *)pvRecord + 3) & 0xFF)); */ 150 *((char*)pvRecord + 3) = 0x40 | (*((char*)pvRecord + 3) & 0x1F); 151 } 140 152 break; 141 153 … … 148 160 /* it seems to be somthing funny here! - lets try aligning it to on a 16 bytes boundrary... */ 149 161 /* PS. I know this I have a wrong approch to the lib files, not using the directory... */ 162 /* Aug 13 2000 4:24am: The alignment of modules are found in the library header. 163 * It's the size of the library header. 164 * Not implemented yet. TODO FIXME BUGBUG ASSUMES 165 */ 150 166 fChanged = 1; 151 167 fwrite(pvRecord, 1, cbRecord, phNew); … … 153 169 if (*((unsigned char*)((int)pvRecord+cbRecord)) == 0x00) 154 170 { 155 if ((ul % 16) > 0)156 cbRecord += 16 - (ul % 16);171 if ((ul % cbPage) > 0) 172 cbRecord += cbPage - (ul % cbPage); 157 173 } 158 174 /*if (*((unsigned char*)pvRecord + cbRecord) != LIBEND)*/ 159 175 { 160 176 ul = ftell(phNew); 161 while (ul++ % 16!= 0)177 while (ul++ % cbPage != 0) 162 178 fputc(0, phNew); 163 179 } … … 166 182 } break; 167 183 184 case PUBDEF: 185 { 186 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 187 *((char*)pvRecord + cbRecord - 1) = 0; 188 break; 189 } 190 168 191 case LNAMES: 169 192 { 170 193 char *apszConv[] = 171 194 { 172 "CODE", "CODE", 173 "_CODE", "CODE16", 174 "TEXT", "CODE16", 175 "_TEXT", "CODE16", 176 "DATA", "FAR_DATA", 177 "_DATA", "DATA16", 178 "DGROUP", "DATA16_GROUP", 179 "_BSS", "DATA16BSS", 180 "BSS", "DATA16BSS", 181 "_CONST", "DATA16CONST", 182 "CONST", "DATA16CONST", 195 /* classes */ 196 "CODE", "CODE", 197 "IOSEG_CODE", "CODE", 198 "DATA", "FAR_DATA", 199 "BSS", "DATA16BSS", 200 "CONST", "DATA16CONST", 201 /* segment names */ 202 "_TEXT", "CODE16", 203 "_IOSEG", "CODE16_IOSEG", 204 "_CODE", "CODE16", /* dhcalls */ 205 "_DATA", "DATA16", 206 "_BSS", "DATA16BSS", 207 "_CONST", "DATA16CONST", 208 /* groups */ 209 "DGROUP", "DATA16_GROUP", 183 210 NULL, NULL 184 211 }; … … 242 269 fputc(0, phNew); 243 270 break; 244 271 } 245 272 246 273 case LIBEND: 247 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 248 fwrite(pvRecord, 1, cbRecord, phNew); 274 { 275 /* align dictionary at 512 byte (3 is min size of this record) */ 276 int cBlocks; 277 unsigned short int cbSize = (((ftell(phNew) + 3 + 0x1ff) & ~0x1ff) - ftell(phNew)) - 3; 278 unsigned long int offDict = ftell(phNew) + cbSize + 3; 279 cbRecord = cbSize + 3; 280 fwrite(pvRecord, 1, 1, phNew); 281 fwrite(&cbSize, 1, sizeof(cbSize), phNew); 282 while (cbSize-- > 0) 283 fwrite("\0", 1, 1, phNew); 284 285 /* update header record. */ 286 fseek(phNew, 3, SEEK_SET); 287 fwrite(&offDict, 1, sizeof(offDict), phNew); 288 fseek(phNew, offDict, SEEK_SET); 289 290 /* Translate the dictionary */ 291 pvRecord = (void*)((char*)pvRecord + *(unsigned short*)((char*)pvRecord + 1) + 3); 292 cBlocks = *(unsigned short *)((char*)pvBase + 7); 293 for (i = 0; i < cBlocks; i++) 294 { 295 int j; 296 char *pchBlock = (char*)pvRecord + i * 512; 297 for (j = 0; j < 37; j++) 298 { 299 if (pchBlock[j] > 19 && pchBlock[j] < 0xff) 300 { 301 unsigned short *pusBlock = (unsigned short*)&pchBlock[pchBlock[j] * 2]; 302 pusBlock = (unsigned short *) ((char*)pusBlock + *(char*)pusBlock + 1); 303 if (ausTrans[*pusBlock] == 0) 304 fprintf(stderr, "error: dictionary entry don't point to a THEADR page!\n"); 305 else 306 *pusBlock = ausTrans[*pusBlock]; 307 } 308 } 309 310 } 311 312 /* Write the dictionary */ 313 fwrite(pvRecord, 512, cBlocks, phNew); 249 314 return (void*)0xffffffff; /* FINE */ 250 break; 315 } 316 317 case COMENT: 318 { 319 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 320 switch (*((unsigned char*)((int)pvRecord+4))) 321 { 322 /* remove "Link Pass Separator" */ 323 case 0xA2: 324 /* remove "LIBMOD" - The VAC 3.6.5 Linker don't like these! */ 325 case 0xA3: 326 fChanged = fRemoveExtra; 327 break; 328 } 329 break; 330 } 331 332 /* 333 * Remove checksum 334 */ 335 /* 336 case GRPDEF: 337 case FIXUPP: 338 case FIXUPP2: 339 case LEDATA: 340 { 341 cbRecord = *((unsigned short*)((int)pvRecord+1)) + 3; 342 *((char*)pvRecord + cbRecord - 1) = 0; 343 break; 344 } 345 */ 251 346 252 347 default: -
trunk/src/win32k/misc/OS2KPTDA.c
r3829 r4164 1 /* $Id: OS2KPTDA.c,v 1. 1 2000-07-16 22:21:17bird Exp $1 /* $Id: OS2KPTDA.c,v 1.2 2000-09-02 21:08:12 bird Exp $ 2 2 * 3 3 * PTDA access functions. … … 9 9 */ 10 10 11 /******************************************************************************* 12 * Defined Constants And Macros * 13 *******************************************************************************/ 14 #define INCL_OS2KRNL_SEM 15 #define INCL_OS2KRNL_PTDA 11 16 12 17 /******************************************************************************* … … 14 19 *******************************************************************************/ 15 20 #include <os2.h> 16 #include <OS2K PTDA.h>21 #include <OS2Krnl.h> 17 22 18 23 … … 28 33 extern ULONG pptda_start; 29 34 extern ULONG pptda_environ; 35 extern ULONG pptda_ptdasem; 36 extern ULONG pptda_module; 30 37 31 38 … … 35 42 * @returns Content of the pPTDA->ptda_environ member. 36 43 * @param pPTDA PTDA Pointer. (NULL is not allowed!) 37 * @sketch38 44 */ 39 45 USHORT ptdaGet_ptda_environ(PPTDA pPTDA) … … 42 48 } 43 49 50 51 /** 52 * Gets the ptda_module PTDA member. This member holds the MTE handle of the process's 53 * executable image. 54 * @returns Content of the pPTDA->ptda_module member. 55 * @param pPTDA PTDA Pointer. (NULL is not allowed!) 56 */ 57 USHORT ptdaGet_ptda_module(PPTDA pPTDA) 58 { 59 return *(PUSHORT)(void*)(((char*)(void*)pPTDA) + (pptda_module - pptda_start)); 60 } 61 62 63 /** 64 * Gets the ptda_ptdasem PTDA member. This member holds the intra-process semaphore which 65 * for example is used to serialize _LDRQAppType. 66 * @returns Content of the pPTDA->ptda_ptdasem member. 67 * @param pPTDA PTDA Pointer. (NULL is not allowed!) 68 */ 69 HKSEMMTX ptda_ptda_ptdasem(PPTDA pPTDA) 70 { 71 return (HKSEMMTX)(void*)(((char*)(void*)pPTDA) + (pptda_ptdasem - pptda_start)); 72 } 73 74 75 -
trunk/src/win32k/misc/OS2KTCB.c
r3829 r4164 1 /* $Id: OS2KTCB.c,v 1. 1 2000-07-16 22:21:17bird Exp $1 /* $Id: OS2KTCB.c,v 1.2 2000-09-02 21:08:13 bird Exp $ 2 2 * 3 3 * TCB - Thread Control Block access methods. … … 15 15 #include <os2.h> 16 16 #include <OS2KTCB.h> 17 #include "devSegDf.h" /* Win32k segment definitions. */ 17 18 #include "options.h" 18 19 -
trunk/src/win32k/misc/avl.c
r3168 r4164 1 /* $Id: avl.c,v 1. 4 2000-03-19 16:00:11bird Exp $1 /* $Id: avl.c,v 1.5 2000-09-02 21:08:13 bird Exp $ 2 2 * 3 3 * AVL-Tree (lookalike) implementation. … … 24 24 *******************************************************************************/ 25 25 #include <os2.h> 26 #include "devSegDf.h" /* Win32k segment definitions. */ 26 27 #include "avl.h" 27 28 #if defined(RING0) || defined(RING3) -
trunk/src/win32k/misc/buffer.asm
r2838 r4164 1 ; $Id: buffer.asm,v 1. 5 2000-02-21 09:24:02bird Exp $2 ; 3 ; Simple resident buffer for use when overloading tkExecPgm .1 ; $Id: buffer.asm,v 1.6 2000-09-02 21:08:13 bird Exp $ 2 ; 3 ; Simple resident buffer for use when overloading tkExecPgm - obsolete! 4 4 ; 5 5 ; Copyright (c) 2000 knut st. osmundsen … … 13 13 ; Defined Constants And Macros 14 14 ; 15 NBR_BUFFERS EQU 2 015 NBR_BUFFERS EQU 2 16 16 BUFFER_SIZE EQU 1536 17 17 -
trunk/src/win32k/misc/cout.cpp
r1467 r4164 1 /* $Id: cout.cpp,v 1. 2 1999-10-27 02:02:59bird Exp $1 /* $Id: cout.cpp,v 1.3 2000-09-02 21:08:13 bird Exp $ 2 2 * 3 3 * cout - cout replacement. … … 25 25 #include <stdarg.h> 26 26 27 #include "devSegDf.h" /* Win32k segment definitions. */ 27 28 #include "cout.h" 28 29 #include "options.h" -
trunk/src/win32k/misc/env.c
r3412 r4164 1 /* $Id: env.c,v 1. 2 2000-04-17 02:26:04bird Exp $1 /* $Id: env.c,v 1.3 2000-09-02 21:08:13 bird Exp $ 2 2 * 3 3 * Environment access functions … … 14 14 #define INCL_DOSERRORS /* Error codes */ 15 15 #define INCL_OS2KRNL_VM /* OS2KRNL: Virtual Memory Management */ 16 16 #define INCL_OS2KRNL_PTDA /* OS2KNRL: (per)ProcessTaskDataArea */ 17 17 18 18 /******************************************************************************* … … 21 21 #include <os2.h> 22 22 23 #include "devSegDf.h" /* Win32k segment definitions. */ 23 24 #include "dev32.h" 24 25 #include "dev32hlp.h" 25 26 #include "log.h" 26 #include "ptda.h"27 27 #include "OS2Krnl.h" 28 28 #include <string.h> 29 29 #include "macros.h" 30 30 #include "env.h" 31 31 … … 39 39 * @param paszEnv Pointer to the environment data to search. 40 40 * The environment data is a list of zero-strings terminated 41 * by an empty string. The strings are paired, that means 42 * that the first string is the variable name and the 43 * following string is the value of the variable. 44 * AFAIK a variable can't have an empty value string! 45 * @param pszVar Name of the environment variable to find. 41 * by an empty string. The strings consists of two parts which 42 * are separated by a euqal char ('='). The first part is the 43 * variable name. The second part is the value of the variable. 44 * 45 * IF this is NULL we'll simply return NULL. 46 * @param pszVar Name of the environment variable to find. (NULL not allowed.) 46 47 */ 47 48 const char *ScanEnv(const char *paszEnv, const char *pszVar) 48 49 { 50 int cchVar; 51 /* 52 * Return if environment not found. 53 */ 54 #ifdef DEBUG 55 if (pszVar < (const char *)0x10000 || *pszVar == '\0') 56 kprintf(("ScanEnv: Invalid parameter pszVar (%p)\n", pszVar)); 57 #endif 58 if (paszEnv == NULL) 59 return NULL; 60 #ifdef DEBUG 61 if (paszEnv < (const char *)0x10000) 62 kprintf(("ScanEnv: Invalid parameter paszEnv (%p)\n", paszEnv)); 63 #endif 64 49 65 /* 50 66 * Loop thru the environment data until an empty string is reached. 51 67 */ 68 cchVar = strlen(pszVar); 52 69 while (*paszEnv != '\0') 53 70 { 54 register int i; /* Variable use to store the compare result. */55 56 71 /* 57 * Variable name. 58 * Check if it's matching the name we're searching for and skip the variable name. 72 * Check if the variable name is it's matching the one we're searching for. 59 73 */ 60 i = stricmp(paszEnv, pszVar); 61 paszEnv += strlen(paszEnv) + 1; 62 if (i == 0) 63 { /* Variable was found. Return pointer to the value. */ 64 return paszEnv; 74 const char *pszEqual = strchr(paszEnv, '='); 75 if (pszEqual != NULL && (pszEqual - paszEnv) == cchVar 76 && memcmp(paszEnv, pszVar, cchVar) == 0 77 ) 78 { 79 /* 80 * Variable was found. Return pointer to the value. 81 */ 82 return pszEqual + 1; 65 83 } 66 84 67 85 /* 68 * !Paranoia! 69 * If no value string we'll quit. This may be an IPE, if not it might 70 * cause one if we continue processing the environment data. 86 * Skip this variable. (Don't use pszEqual since it might be NULL) 71 87 */ 72 if (*paszEnv == '\0')73 break;74 75 /* Skip value */76 88 paszEnv += strlen(paszEnv) + 1; 77 89 } … … 82 94 83 95 /** 84 * Get the linear pointer to the environment data. 96 * Get the linear pointer to the environment data for the current 97 * process or the process being started (EXECed). 85 98 * 86 * @returns Pointer to environment data. 87 * NULL on failure. 99 * @param fExecChild TRUE: Get exec child environment. 100 * (Not supported by method 2) 101 * FALSE: Get current process environment. 102 * @returns Pointer to environment data. 103 * NULL on failure. 88 104 */ 89 const char *GetEnv( void)105 const char *GetEnv(BOOL fExecChild) 90 106 { 91 /* There is probably two ways of getting the environment data for athe107 /* There are probably two ways of getting the environment data for the 92 108 * current process: 1) get it from the PTDA->ptda_environ 93 109 * 2) Local infosegment (LIS from GetDosVar devhlp) 94 * I am not sure which one of these w orks best. What I know is that110 * I am not sure which one of these which works best. What I know is that 95 111 * method 1) is used by the w_GetEnv API worker. This API is called at 96 112 * Ring-0 from some delete file operation. (Which uses it to get the … … 98 114 * I don't want to thunk around using that. There for I'll implement 99 115 * my own GetEnv. So, currently I'll write the code for both 1) and 100 * 2), testing will show which one of them are most handy.116 * 2), testing will show which one of them are the better. 101 117 */ 102 118 … … 116 132 */ 117 133 pPTDACur = ptdaGetCur(); 118 if (pPTDA != NULL)134 if (pPTDACur != NULL) 119 135 { 120 pPTDA = ptdaGet_pPTDAExecChild(pPTDA );121 if (pPTDA != NULL )136 pPTDA = ptdaGet_pPTDAExecChild(pPTDACur); 137 if (pPTDA != NULL && fExecChild) 122 138 { 123 139 hobEnviron = ptdaGet_ptda_environ(pPTDA); … … 127 143 if (rc == NO_ERROR) 128 144 return (const char *)ulAddr; 129 kprintf(("GetEnv: VMObjHandleInfo failed with rc=%d for hob=0x%04x\n", rc, hobEnviron));145 kprintf(("GetEnv: (1) VMObjHandleInfo failed with rc=%d for hob=0x%04x \n", rc, hobEnviron)); 130 146 } 131 147 } … … 135 151 { 136 152 rc = VMObjHandleInfo(hobEnviron, SSToDS(&ulAddr), SSToDS(&ushPTDA)); 137 if (rc != NO_ERROR) 138 { 139 kprintf(("GetEnv: VMObjHandleInfo failed with rc=%d for hob=0x%04x\n", rc, hobEnviron)); 140 } 153 if (rc == NO_ERROR) 154 return (const char *)ulAddr; 155 kprintf(("GetEnv: (2) VMObjHandleInfo failed with rc=%d for hob=0x%04x\n", rc, hobEnviron)); 141 156 } 142 157 } 143 158 else 144 { 159 { /* Not called at task time? No current task! */ 145 160 kprintf(("GetEnv: Failed to get current PTDA.\n")); 146 161 } 147 162 148 return (const char *)ulAddr; 163 return NULL; 164 149 165 150 166 #else 167 151 168 152 169 struct InfoSegLDT * pLIS; /* Pointer to local infosegment. */ … … 162 179 { 163 180 kprintf(("GetEnv: Failed to get local info segment\n")); 181 NOREF(fExecChild); 164 182 return NULL; 165 183 } -
trunk/src/win32k/misc/log.c
r847 r4164 1 /* $Id: log.c,v 1. 1 1999-09-06 02:20:02bird Exp $1 /* $Id: log.c,v 1.2 2000-09-02 21:08:13 bird Exp $ 2 2 * 3 3 * log - C-style logging - kprintf. … … 23 23 #include <builtin.h> 24 24 25 #include "devSegDf.h" /* Win32k segment definitions. */ 25 26 #include "dev32.h" 26 27 #include "options.h" -
trunk/src/win32k/misc/malloc.c
r2511 r4164 1 /* $Id: malloc.c,v 1. 6 2000-01-24 18:19:00bird Exp $1 /* $Id: malloc.c,v 1.7 2000-09-02 21:08:14 bird Exp $ 2 2 * 3 3 * Common Heap - this forwards to the swappable heap! … … 20 20 ******************************************************************************/ 21 21 #include <os2.h> 22 #include "devSegDf.h" /* Win32k segment definitions. */ 22 23 #include "smalloc.h" 23 24 #include "rmalloc.h" … … 28 29 * Global data 29 30 ******************************************************************************/ 30 #if ndef RING031 #if !defined(RING0) || defined(R3TST) 31 32 char fInited; /* init flag */ 32 33 #endif … … 53 54 if (rc != 0) 54 55 return rc; 55 #if def RING356 #if !defined(RING0) || defined(R3TST) 56 57 fInited = TRUE; 57 58 #endif … … 69 70 void * malloc(unsigned cbSize) 70 71 { 72 #ifdef R3TST 73 if (!fInited) 74 { 75 PVOID pv; 76 if (!DosAllocMem(&pv, cbSize, PAG_WRITE | PAG_READ | PAG_COMMIT)) /* no SSToDS! */ 77 return pv; 78 else 79 return NULL; 80 } 81 #endif 71 82 return smalloc(cbSize); 72 83 } … … 81 92 void *realloc(void *pv, unsigned cbNew) 82 93 { 94 #ifdef R3TST 95 if (!fInited) 96 Int3(); 97 #endif 83 98 return srealloc(pv, cbNew); 84 99 } … … 91 106 void free(void *pv) 92 107 { 108 #ifdef R3TST 109 if (!fInited) /* controlled leak! */ 110 return; 111 #endif 93 112 sfree(pv); 94 113 } … … 154 173 155 174 175 156 176 #if !defined(RING0) && defined(__IBMC__) 157 177 … … 162 182 int _rmem_init(void) 163 183 { 164 int rc = heapInit(CB_RES_INIT, CB_RES_MAX, CB_SWP_INIT, CB_SWP_MAX); 184 int rc; 185 rc = heapInit(CB_RES_INIT, CB_RES_MAX, CB_SWP_INIT, CB_SWP_MAX); 165 186 return rc; 166 187 } -
trunk/src/win32k/misc/new.cpp
r2540 r4164 1 /* $Id: new.cpp,v 1. 4 2000-01-27 23:46:57bird Exp $1 /* $Id: new.cpp,v 1.5 2000-09-02 21:08:14 bird Exp $ 2 2 * 3 3 * new - new and delete operators. … … 21 21 #include <os2.h> 22 22 23 #include "devSegDf.h" /* Win32k segment definitions. */ 23 24 #include "new.h" 24 25 #include "rmalloc.h" -
trunk/src/win32k/misc/rmalloc.c
r2507 r4164 1 /* $Id: rmalloc.c,v 1. 3 2000-01-24 01:45:20bird Exp $1 /* $Id: rmalloc.c,v 1.4 2000-09-02 21:08:14 bird Exp $ 2 2 * 3 3 * Resident Heap. … … 50 50 ******************************************************************************/ 51 51 #include <os2.h> 52 #include "devSegDf.h" /* Win32k segment definitions. */ 52 53 #ifdef RING0 53 54 #include "dev32hlp.h" -
trunk/src/win32k/misc/rmalloc_avl.c
r2511 r4164 1 /* $Id: rmalloc_avl.c,v 1. 5 2000-01-24 18:19:00bird Exp $1 /* $Id: rmalloc_avl.c,v 1.6 2000-09-02 21:08:14 bird Exp $ 2 2 * 3 3 * Resident Heap - AVL. … … 47 47 ******************************************************************************/ 48 48 #include <os2.h> 49 #include "devSegDf.h" /* Win32k segment definitions. */ 49 50 #ifdef RING0 50 51 #include "dev32hlp.h" … … 120 121 static PHEAPANCHOR phaFirst; /* Pointer to the first anchor block.*/ 121 122 static PHEAPANCHOR phaLast; /* Pointer to the last anchor block.*/ 122 static unsignedcbResHeapMax; /* Maximum amount of memory used by the heap. */123 unsigned cbResHeapMax; /* Maximum amount of memory used by the heap. */ 123 124 124 125 #ifndef RING0 … … 898 899 899 900 /** 901 * Get amount of used memory (in bytes) 902 * @returns Amount of used memory (in bytes). 903 */ 904 unsigned _res_memused(void) 905 { 906 PHEAPANCHOR pha = phaFirst; 907 unsigned cb; 908 909 #ifdef ALLWAYS_HEAPCHECK 910 if (!_res_heap_check()) 911 kprintf(("_res_memused: _res_heap_check failed!\n")); 912 #endif 913 914 for (cb = 0; pha != NULL; pha = pha->pNext) 915 cb += pha->cbUsed; 916 917 return cb; 918 } 919 920 921 /** 922 * Collects the heap state. 923 * @returns 0 on success. 924 * -1 on error. 925 * @param pState Pointer to a RES_HEAPSTATE structure which is 926 * filled upon successful return. 927 */ 928 int _res_state(PHEAPSTATE pState) 929 { 930 PHEAPANCHOR pha; 931 932 #ifdef ALLWAYS_HEAPCHECK 933 if (!_res_heap_check()) 934 { 935 kprintf(("_res_state: _res_heap_check failed!\n")); 936 return -1; 937 } 938 #endif 939 940 if (pState == NULL) 941 return -1; 942 943 /* 944 * Loop thru all the anchor blocks and all memory blocks 945 * building the stats. 946 */ 947 memset(pState, 0, sizeof(HEAPSTATE)); 948 for (pha = phaFirst; pha != NULL; pha = pha->pNext) 949 { 950 AVLENUMDATA EnumData; 951 PAVLENUMDATA pEnumData = SSToDS(&EnumData); 952 PMEMBLOCK pmb; 953 954 /* count of free blocks */ 955 pmb = (PMEMBLOCK)AVLBeginEnumTree((PPAVLNODECORE)&pha->pmbFree, pEnumData, TRUE); 956 while (pmb) 957 { 958 pState->cBlocksFree++; 959 pmb = (PMEMBLOCK)AVLGetNextNode(pEnumData); 960 } 961 962 /* count of used blocks */ 963 pmb = (PMEMBLOCK)AVLBeginEnumTree((PPAVLNODECORE)&pha->pmbUsed, pEnumData, TRUE); 964 while (pmb) 965 { 966 pState->cBlocksUsed++; 967 pmb = (PMEMBLOCK)AVLGetNextNode(pEnumData); 968 } 969 970 /* sizes */ 971 pState->cbHeapSize += pha->cbSize; 972 pState->cbHeapFree += pha->cbFree; 973 pState->cbHeapUsed += pha->cbUsed; 974 } 975 976 return 0; 977 } 978 979 980 /** 900 981 * Checks heap integrety. 901 982 * @returns TRUE when ok. -
trunk/src/win32k/misc/smalloc_avl.c
r2511 r4164 1 /* $Id: smalloc_avl.c,v 1. 3 2000-01-24 18:19:00bird Exp $1 /* $Id: smalloc_avl.c,v 1.4 2000-09-02 21:08:15 bird Exp $ 2 2 * 3 3 * Swappable Heap - AVL. … … 59 59 ******************************************************************************/ 60 60 #include <os2.h> 61 #include "devSegDf.h" /* Win32k segment definitions. */ 61 62 #ifdef RING0 62 63 #include "dev32hlp.h" … … 140 141 static PHEAPANCHOR phaFirst; /* Pointer to the first anchor block.*/ 141 142 static PHEAPANCHOR phaLast; /* Pointer to the last anchor block.*/ 142 static unsignedcbSwpHeapMax; /* Maximum amount of memory used by the heap. */143 static PMEMBLOCKCHUNK pmcFirst; 143 unsigned cbSwpHeapMax; /* Maximum amount of memory used by the heap. */ 144 static PMEMBLOCKCHUNK pmcFirst; /* Pointer to the first memblock chunk. */ 144 145 145 146 #ifndef RING0 … … 1066 1067 1067 1068 return cb; 1069 } 1070 1071 1072 /** 1073 * Get amount of used memory (in bytes) 1074 * @returns Amount of used memory (in bytes). 1075 */ 1076 unsigned _swp_memused(void) 1077 { 1078 PHEAPANCHOR pha = phaFirst; 1079 unsigned cb; 1080 1081 #ifdef ALLWAYS_HEAPCHECK 1082 if (!_swp_heap_check()) 1083 kprintf(("_swp_memused: _swp_heap_check failed!\n")); 1084 #endif 1085 1086 for (cb = 0; pha != NULL; pha = pha->pNext) 1087 cb += pha->cbUsed; 1088 1089 return cb; 1090 } 1091 1092 1093 /** 1094 * Collects the heap state. 1095 * @returns 0 on success. 1096 * -1 on error. 1097 * @param pState Pointer to a HEAPSTATE structure which is 1098 * filled upon successful return. 1099 */ 1100 int _swp_state(PHEAPSTATE pState) 1101 { 1102 PHEAPANCHOR pha; 1103 1104 #ifdef ALLWAYS_HEAPCHECK 1105 if (!_res_heap_check()) 1106 { 1107 kprintf(("_res_state: _res_heap_check failed!\n")); 1108 return -1; 1109 } 1110 #endif 1111 1112 if (pState == NULL) 1113 return -1; 1114 1115 /* 1116 * Loop thru all the anchor blocks and all memory blocks 1117 * building the stats. 1118 */ 1119 memset(pState, 0, sizeof(HEAPSTATE)); 1120 for (pha = phaFirst; pha != NULL; pha = pha->pNext) 1121 { 1122 AVLENUMDATA EnumData; 1123 PAVLENUMDATA pEnumData = SSToDS(&EnumData); 1124 PMEMBLOCK pmb; 1125 1126 /* count of free blocks */ 1127 pmb = (PMEMBLOCK)AVLBeginEnumTree((PPAVLNODECORE)&pha->pcoreFree, pEnumData, TRUE); 1128 while (pmb) 1129 { 1130 pState->cBlocksFree++; 1131 pmb = (PMEMBLOCK)AVLGetNextNode(pEnumData); 1132 } 1133 1134 /* count of used blocks */ 1135 pmb = (PMEMBLOCK)AVLBeginEnumTree((PPAVLNODECORE)&pha->pcoreUsed, pEnumData, TRUE); 1136 while (pmb) 1137 { 1138 pState->cBlocksUsed++; 1139 pmb = (PMEMBLOCK)AVLGetNextNode(pEnumData); 1140 } 1141 1142 /* sizes */ 1143 pState->cbHeapSize += pha->cbSize; 1144 pState->cbHeapFree += pha->cbFree; 1145 pState->cbHeapUsed += pha->cbUsed; 1146 } 1147 1148 return 0; 1068 1149 } 1069 1150 -
trunk/src/win32k/misc/vprintf.c
r2501 r4164 1 /* $Id: vprintf.c,v 1. 7 2000-01-22 18:21:03bird Exp $1 /* $Id: vprintf.c,v 1.8 2000-09-02 21:08:15 bird Exp $ 2 2 * 3 3 * vprintf and printf … … 25 25 26 26 27 #ifdef RING0 27 28 #if defined(RING0) && !defined(R3TST) 29 #define COMOUTPUT 30 #endif 31 #if !defined(RING0) || defined(R3TST) 32 #define DOSWRITEOUTPUT 33 #endif 34 35 #ifndef DOSWRITEOUTPUT 28 36 #define INCL_NOAPI 29 37 #else … … 39 47 #include <stdarg.h> 40 48 49 #include "devSegDf.h" /* Win32k segment definitions. */ 41 50 #include "dev32.h" 42 51 #include "vprintf.h" 52 #ifdef COMOUTPUT 53 #include <builtin.h> 54 #endif 43 55 #ifdef RING0 44 #include <builtin.h>45 56 #include "options.h" 46 57 #endif … … 222 233 int vprintf(const char *pszFormat, va_list args) 223 234 { 224 #if def RING0235 #if defined(RING0) && !defined(R3TST) 225 236 if (!options.fLogging) 226 237 return 0; … … 239 250 int vprintf2(const char *pszFormat, va_list args) 240 251 { 241 #ifndef RING0 242 int cch = 0; 243 #endif 252 int cch = 0; 244 253 245 254 while (*pszFormat != '\0') … … 247 256 if (*pszFormat == '%') 248 257 { 249 #ifndef RING0 250 if (cch > 0) 251 { 252 strout((char*)(pszFormat - cch), cch); 253 cch = 0; 254 } 255 #endif 258 if (cch > 0) 259 { 260 strout((char*)(pszFormat - cch), cch); 261 cch = 0; 262 } 256 263 257 264 pszFormat++; /* skip '%' */ … … 396 403 else 397 404 { 398 #ifdef RING0 399 chout(*pszFormat++); 400 #else 401 cch++; 402 pszFormat++; 403 #endif 404 } 405 } 406 407 #ifndef RING0 408 if (cch > 0) 409 { 410 strout((char*)(pszFormat - cch), cch); 411 cch = 0; 412 } 413 #endif 405 cch++; 406 pszFormat++; 407 } 408 } 409 410 if (cch > 0) 411 { 412 strout((char*)(pszFormat - cch), cch); 413 cch = 0; 414 } 414 415 415 416 return 0UL; … … 479 480 static void chout(int ch) 480 481 { 481 #ifndef RING0 482 483 482 #ifdef DOSWRITEOUTPUT 483 ULONG ulWrote; 484 #endif 484 485 485 486 if (ch != '\r') … … 487 488 if (ch == '\n') 488 489 { 489 #ifdef RING0 490 #pragma info(noeff) 491 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 492 _outp(options.usCom, chReturn); /* Put the char. */ 493 #pragma info(restore) 494 #else 495 DosWrite(1, (void*)&chReturn, 1, &ulWrote); 496 #endif 497 } 498 #ifdef RING0 490 #ifdef COMOUTPUT 499 491 #pragma info(noeff) 500 492 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 501 _outp(options.usCom, ch );/* Put the char. */493 _outp(options.usCom, chReturn); /* Put the char. */ 502 494 #pragma info(restore) 503 Yield();504 #else505 DosWrite(1, (void*)&ch, 1, &ulWrote);506 495 #endif 496 #ifdef DOSWRITEOUTPUT 497 DosWrite(1, (void*)&chReturn, 1, SSToDS(&ulWrote)); 498 #endif 499 } 500 #ifdef COMOUTPUT 501 #pragma info(noeff) 502 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 503 _outp(options.usCom, ch); /* Put the char. */ 504 #pragma info(restore) 505 Yield(); 506 #endif 507 #ifdef DOSWRITEOUTPUT 508 DosWrite(1, SSToDS(&ch), 1, SSToDS(&ulWrote)); 509 #endif 507 510 } 508 511 } … … 529 532 530 533 /* write string part */ 531 #ifdef RING0 532 for (ul = 0; ul < cch; ul++) 533 { 534 #pragma info(noeff) 535 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 536 _outp(options.usCom, psz[ul]); /* Put the char. */ 537 #pragma info(restore) 538 } 539 #else 540 DosWrite(1, (void*)psz, cch, &ul); 541 #endif 534 #ifdef COMOUTPUT 535 for (ul = 0; ul < cch; ul++) 536 { 537 #pragma info(noeff) 538 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 539 _outp(options.usCom, psz[ul]); /* Put the char. */ 540 #pragma info(restore) 541 } 542 #endif 543 #ifdef DOSWRITEOUTPUT 544 DosWrite(1, psz, cch, SSToDS(&ul)); 545 #endif 542 546 543 547 /* cr and lf check + skip */ 544 if ( psz[cch] == '\n' || psz[cch] == '\r')548 if (cch < cchMax && (psz[cch] == '\n' || psz[cch] == '\r')) 545 549 { 546 550 if (psz[cch] == '\n') 547 551 { 548 #ifdef RING0552 #ifdef COMOUTPUT 549 553 #pragma info(noeff) 550 554 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ … … 552 556 while (!(_inp(options.usCom + 5) & 0x20)); /* Waits for the port to be ready. */ 553 557 _outp(options.usCom, chNewLine); /* Put the char. */ 554 cchYield 558 cchYield++; 555 559 #pragma info(restore) 556 #else 557 DosWrite(1, (void*)&chReturn, 1, &ul); 558 DosWrite(1, (void*)&chNewLine, 1, &ul); 560 #endif 561 #ifdef DOSWRITEOUTPUT 562 DosWrite(1, (void*)&chReturn, 1, SSToDS(&ul)); 563 DosWrite(1, (void*)&chNewLine, 1, SSToDS(&ul)); 559 564 #endif 560 565 -
trunk/src/win32k/pe2lx/makefile
r3041 r4164 1 1 ############################################################################## 2 # $Id: makefile,v 1.2 0 2000-03-08 09:22:21bird Exp $2 # $Id: makefile,v 1.21 2000-09-02 21:08:16 bird Exp $ 3 3 # 4 4 # PD-Win32 API … … 20 20 OBJEXT = pe_obj 21 21 22 23 22 ############################################################################## 24 23 # Tools and Flags Addjustments 25 24 ############################################################################## 25 OBJDIR = $(WIN32KOBJ) 26 26 CINCLUDES = -I$(WIN32KINCLUDE) 27 27 28 28 CFLAGS = $(CINCLUDES) $(CFLAGS) -DRING3 -DPE2LX \ 29 -Ge+ - Wall+ppt-ppc-inl-cnv-gnr-vft-gen-uni-ext- -Gm- -Gn- -Ti+ -Rn29 -Ge+ -Gm- -Gn- -Ti+ -Rn -Wall+ppt-ppc-inl-cnv-gnr-vft-gen-uni-ext- 30 30 CXXFLAGS = $(CINCLUDES) $(CXXFLAGS) -DRING3 -DPE2LX \ 31 -Ge+ - Wall+ppt-ppc-inl-cnv-gnr-vft- -Gm- -Gn- -Ti+ -Gx -Rn31 -Ge+ -Gm- -Gn- -Ti+ -Rn -Gx -Wall+ppt-ppc-inl-cnv-gnr-vft- 32 32 33 LD = ilink 34 LDFLAGS = /nologo /NOI /A:16 /NOE /packcode /packdata /pmtype:vio /Stack:4096 \ 33 LD2FLAGS = /nologo /NOI /A:16 /NOE /NOD /packcode /packdata /pmtype:vio /Stack:4096 \ 35 34 !ifdef DEBUG 36 35 !ifndef NODEBUGINFO … … 85 84 # Main targets. 86 85 ############################################################################## 87 TARGET 86 TARGET = pe2lx 88 87 89 OBJS = $(OBJDIR)\pe2lx.$(OBJEXT) \ 90 $(OBJDIR)\pe2lxmain.$(OBJEXT) \ 91 $(OBJDIR)\modulebase.$(OBJEXT) \ 92 $(OBJDIR)\malloc.$(OBJEXT) \ 93 $(OBJDIR)\smalloc_avl.$(OBJEXT) \ 94 $(OBJDIR)\avl.$(OBJEXT) \ 95 $(OBJDIR)\rmalloc_avl.$(OBJEXT) \ 96 $(OBJDIR)\new.$(OBJEXT) \ 97 $(OBJDIR)\stricmp.$(OBJEXT) \ 98 $(OBJDIR)\vprintf.$(OBJEXT) 88 OBJS =\ 89 $(OBJDIR)\pe2lx.$(OBJEXT)\ 90 $(OBJDIR)\pe2lxmain.$(OBJEXT)\ 91 $(OBJDIR)\modulebase.$(OBJEXT)\ 92 $(OBJDIR)\malloc.$(OBJEXT)\ 93 $(OBJDIR)\smalloc_avl.$(OBJEXT)\ 94 $(OBJDIR)\avl.$(OBJEXT)\ 95 $(OBJDIR)\rmalloc_avl.$(OBJEXT)\ 96 $(OBJDIR)\new.$(OBJEXT)\ 97 $(OBJDIR)\stricmp.$(OBJEXT)\ 98 $(OBJDIR)\vprintf.$(OBJEXT) 99 100 LIBS =\ 101 !if "$(CCENV)" == "VAC36" 102 $(VACPATH)\lib\cpprni36.lib \ 103 !else 104 $(VACPATH)\lib\cppon30.lib \ 105 !endif 99 106 100 107 101 102 all: $(OBJDIR) $(OBJDIR)\$(TARGET).exe 108 all: $(WIN32KBIN)\$(TARGET).exe 103 109 104 110 105 $( OBJDIR)\$(TARGET).exe: $(OBJS)111 $(WIN32KBIN)\$(TARGET).exe: $(OBJS) makefile 106 112 @echo linking $@ 107 $(LD) $(LDFLAGS) /OUT:$@ /MAP:$*.map $** 113 $(LD2) @<<$(OBJDIR)\$(@B).lnk 114 $(LD2FLAGS) 115 /OUT:$@ 116 /MAP:$*.map 117 $(OBJS: =^ 118 ) 119 $(LIBS) 120 os2386.lib 121 <<KEEP 108 122 $(CP) $@ $(PDWIN32_BIN) 109 123 … … 113 127 ############################################################################## 114 128 dep: 115 $(DEPEND) -obj$(OBJEXT) -o$$(OBJDIR) $(CINCLUDES) ..\misc\*.c* ..\include\*.h 129 $(DEPEND) -obj$(OBJEXT) -o$$(OBJDIR) $(CINCLUDES) \ 130 *.c* ..\misc\*.c* ..\include\*.h 116 131 117 132 -
trunk/src/win32k/pe2lx/pe2lx.cpp
r2927 r4164 1 /* $Id: pe2lx.cpp,v 1.1 8 2000-02-27 02:18:10bird Exp $1 /* $Id: pe2lx.cpp,v 1.19 2000-09-02 21:08:16 bird Exp $ 2 2 * 3 3 * Pe2Lx class implementation. Ring 0 and Ring 3 … … 81 81 #include <exe386.h> /* OS/2 LX structs and definitions. */ 82 82 83 #include "devSegDf.h" /* Win32k segment definitions. */ 84 83 85 #include "malloc.h" /* win32k malloc (resident). Not C library! */ 84 86 #include "smalloc.h" /* win32k swappable heap. */ … … 95 97 #ifdef RING0 96 98 #include "ldrCalls.h" /* ldr* calls. (ldrRead) */ 99 #include "avl.h" /* AVL tree. (ldr.h need it) */ 100 #include "ldr.h" /* ldr helpers. (ldrGetExePath) */ 101 #include "env.h" /* Environment helpers. */ 97 102 #endif 98 103 #include "modulebase.h" /* ModuleBase class definitions, ++. */ … … 100 105 #include <versionos2.h> /* Pe2Lx version. */ 101 106 #include "yield.h" /* Yield CPU. */ 107 #include "options.h" /* Win32k options. */ 102 108 103 109 … … 169 175 {NULL, NULL} /* end-of-list entry */ 170 176 }; 177 178 LONG Pe2Lx::cLoadedModules; /* Count of existing objects. Updated by constructor and destructor. */ 179 const char * Pe2Lx::pszOdin32Path; /* Odin32 base path (include a slash). */ 180 ULONG Pe2Lx::cchOdin32Path; /* Odin32 base path length. */ 181 SFN Pe2Lx::sfnKernel32; /* Odin32 Kernel32 filehandle. */ 171 182 172 183 … … 205 216 LXHdr.e32_pagesize = PAGESIZE; 206 217 LXHdr.e32_objtab = sizeof(LXHdr); 218 cLoadedModules++; 207 219 } 208 220 … … 277 289 _res_heapmin(); 278 290 _swp_heapmin(); 291 292 /* 293 * If no Pe2Lx objects left, then invalidate the Odin32Path. 294 * We'll have to do this since we may (theoretically) not receive 295 * a close on a kernel32 handle if loading failes before kernel32 296 * is loaded and the odin32path is determined using ldrOpenPath. 297 * (Ie. no sfnKernel32.) 298 */ 299 if (--cLoadedModules <= 0) 300 invalidateOdin32Path(); 301 #ifdef DEBUG 302 if (cLoadedModules < 0) 303 printIPE(("Pe2Lx::cLoadedModules is %d which is less that zero!\n", cLoadedModules)); 304 #endif 279 305 } 280 306 … … 457 483 dumpSectionHeader(&paSections[i]); 458 484 459 /* 8a. Convert characteristics to flags */485 /* 8a. Convert characteristics to flags and check/fix incompatible flags! */ 460 486 for (j = 0; j < (sizeof(paSecChars2Flags)/sizeof(paSecChars2Flags[0])); j++) 461 487 if ((paSections[i].Characteristics & paSecChars2Flags[j].Characteristics) == paSecChars2Flags[j].Characteristics) 462 488 flFlags |= paSecChars2Flags[j].flFlags; 489 if ((flFlags & (OBJEXEC | OBJWRITE)) == (OBJEXEC | OBJWRITE)) 490 flFlags &= (ULONG)~OBJEXEC; 463 491 464 492 /* 8b. Virtual/physical size */ … … 529 557 /* 11.Align section. (Fix which is applied to EXEs/Dlls which contain no fixups and has an 530 558 * alignment which is not a multiple of 64Kb. The sections are concatenated into one big object. */ 559 /* TODO! this test has to be enhanced a bit. WWPack32, new Borland++ depends on image layout. */ 531 560 fAllInOneObject = (pNtHdrs->FileHeader.Characteristics & IMAGE_FILE_RELOCS_STRIPPED) == IMAGE_FILE_RELOCS_STRIPPED; 532 561 if (fAllInOneObject) … … 657 686 Yield(); 658 687 _res_heapmin(); 659 #if 0 /* testing */ 688 #ifndef RING0 689 #if 1 /* testing */ 660 690 testApplyFixups(); 691 #endif 661 692 #endif 662 693 … … 670 701 * @param pvBuffer Pointer to buffer where data is to be put. 671 702 * @param cbToRead Bytes to be read. 672 * @param f lFlagFlags which was spesified to the ldrRead call.703 * @param fpBuffer Flags which was spesified to the ldrRead call. 673 704 * @parma pMTE Pointer to MTE which was specified to the ldrRead call. 674 705 * @return NO_ERROR if successful something else if not. … … 676 707 * @author knut st. osmundsen 677 708 */ 678 ULONG Pe2Lx::read(ULONG offLXFile, PVOID pvBuffer, ULONG cbToRead, ULONG flFlags, PMTE pMTE)709 ULONG Pe2Lx::read(ULONG offLXFile, PVOID pvBuffer, ULONG fpBuffer, ULONG cbToRead, PMTE pMTE) 679 710 { 680 711 APIRET rc = NO_ERROR; /* Return code. */ … … 696 727 #endif 697 728 698 printInf((" read(%d, 0x%08x, %d, 0x%08x)\n", offLXFile, pvBuffer, cbToRead, flFlags));729 printInf(("Pe2Lx::read(%d, 0x%08x, 0x%08x, %d)\n", offLXFile, pvBuffer, fpBuffer, cbToRead)); 699 730 700 731 /* Could we skip right to the datapages? */ … … 931 962 /* calc PE offset and size of read. */ 932 963 cbReadVar = min(paObjects[iObj].cbPhysical - offObject, cbToRead); 933 rc = ReadAtF(hFile, offPEFile, pvBuffer, cbReadVar, flFlags, pMTE);964 rc = ReadAtF(hFile, offPEFile, pvBuffer, fpBuffer, cbReadVar, pMTE); 934 965 } 935 966 else … … 938 969 { /* before TIBFix code. */ 939 970 cbReadVar = min(paObjects[iObj].Misc.offTIBFix - offObject, cbToRead); 940 rc = ReadAtF(hFile, offPEFile, pvBuffer, cbReadVar, flFlags, pMTE);971 rc = ReadAtF(hFile, offPEFile, pvBuffer, fpBuffer, cbReadVar, pMTE); 941 972 } 942 973 else … … 959 990 } 960 991 961 NOREF(f lFlags);992 NOREF(fpBuffer); 962 993 NOREF(pMTE); 963 994 return rc; … … 1077 1108 1078 1109 while ((unsigned)pbr - (unsigned)pBaseRelocs + 8 < cbBaseRelocs /* 8= VirtualAddress and SizeOfBlock members */ 1110 && pbr->SizeOfBlock >= 8 1079 1111 && pbr->VirtualAddress < ulRVAPage + PAGESIZE) 1080 1112 { … … 1281 1313 1282 1314 1315 /** 1316 * openPath - opens file eventually searching loader specific paths. 1317 * This method is only called for DLLs. (DosLoadModule and Imports.) 1318 * 1319 * 1320 * @returns OS2 return code. 1321 * pLdrLv->lv_sfn is set to filename handle. 1322 * @param pachFilename Pointer to filename. Not zero terminated! 1323 * @param cchFilename Filename length. 1324 * @param pLdrLv Loader local variables? (Struct from KERNEL.SDF) 1325 * @param pful Pointer to flags which are passed on to ldrOpen. 1326 * @sketch 1327 * This is roughly what the original ldrOpenPath does: 1328 * if !CLASS_GLOBAL or miniifs then 1329 * ldrOpen(pachModName) 1330 * else 1331 * loop until no more libpath elements 1332 * get next libpath element and add it to the modname. 1333 * try open the modname 1334 * if successfull then break the loop. 1335 * endloop 1336 * endif 1337 */ 1338 ULONG Pe2Lx::openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful) /* (ldrOpenPath) */ 1339 { 1340 #ifdef RING0 1341 1342 /* 1343 * Mark the SFN invalid in the case of error. 1344 * Initiate the Odin32 Path static variable and call worker. 1345 */ 1346 return openPath2(pachFilename, cchFilename, pLdrLv, pful, initOdin32Path()); 1347 1348 #else 1349 NOREF(pachFilename); 1350 NOREF(cchFilename); 1351 NOREF(pLdrLv); 1352 NOREF(pful); 1353 return ERROR_NOT_SUPPORTED; 1354 #endif 1355 } 1356 1357 1358 /** 1359 * openPath2 - Worker for openPath which is also used by initOdin32Path. 1360 * 1361 * @returns OS2 return code. 1362 * pLdrLv->lv_sfn is set to filename handle. 1363 * @param pachFilename Pointer to filename. Not zero terminated! 1364 * @param cchFilename Filename length. 1365 * @param pLdrLv Loader local variables? (Struct from KERNEL.SDF) 1366 * @param pful Pointer to flags which are passed on to ldrOpen. 1367 * @param fOdin32PathValid Flag indicating that the pszOdin32Path is valid or not. 1368 * @sketch 1369 * This is roughly what the original ldrOpenPath does: 1370 * if !CLASS_GLOBAL or miniifs then 1371 * ldrOpen(pachModName) 1372 * else 1373 * loop until no more libpath elements 1374 * get next libpath element and add it to the modname. 1375 * try open the modname 1376 * if successfull then break the loop. 1377 * endloop 1378 * endif 1379 * @remark cchFilename has to be ULONG due to an optimization bug in VA 3.08. 1380 * (cchFilename should have been USHORT. But, then the compiler would 1381 * treat it as an ULONG.) 1382 */ 1383 ULONG Pe2Lx::openPath2(PCHAR pachFilename, ULONG cchFilename, ldrlv_t *pLdrLv, PULONG pful, BOOL fOdin32PathValid) 1384 { 1385 #ifdef RING0 1386 1387 APIRET rc; /* Returncode. */ 1388 ULONG cchExt; /* Count of chars in additional extention. (0 if extention exists.) */ 1389 1390 /* These defines sets the order the paths and pathlists are examined. */ 1391 #define FINDDLL_EXECUTABLEDIR 1 1392 #define FINDDLL_CURRENTDIR 2 1393 #define FINDDLL_SYSTEM32DIR 3 1394 #define FINDDLL_SYSTEM16DIR 4 1395 #define FINDDLL_WINDIR 5 1396 #define FINDDLL_PATH 6 1397 #define FINDDLL_BEGINLIBPATH 7 /* uses ldrOpenPath */ 1398 #define FINDDLL_LIBPATH 8 /* uses ldrOpenPath */ 1399 #define FINDDLL_ENDLIBPATH 9 /* uses ldrOpenPath */ 1400 #define FINDDLL_FIRST FINDDLL_EXECUTABLEDIR 1401 #define FINDDLL_LAST FINDDLL_PATH 1402 1403 struct _LocalVars 1404 { 1405 char sz[CCHMAXPATH]; 1406 char szPath[CCHMAXPATH]; 1407 } *pVars; 1408 1409 1410 /** @sketch 1411 * Mark the SFN invalid in the case of error. 1412 * Allocate memory for local variables. 1413 * Check for extention. 1414 */ 1415 pLdrLv->lv_sfn = 0xffff; 1416 pVars = (struct _LocalVars*)rmalloc(sizeof(struct _LocalVars)); 1417 if (pVars == NULL) 1418 return ERROR_NOT_ENOUGH_MEMORY; 1419 1420 cchExt = cchFilename - 1; 1421 while (cchExt != 0 && pachFilename[cchExt] != '.') 1422 cchExt--; 1423 cchExt = cchExt != 0 ? 0 : 4; 1424 1425 1426 /** @sketch 1427 * Loop thru the paths and pathlists searching them for the filename. 1428 */ 1429 for (int iPath = FINDDLL_FIRST; iPath <= FINDDLL_LAST; iPath++) 1430 { 1431 char * pszPath; /* Pointer to the path being examined. */ 1432 1433 /** @sketch 1434 * Get the path/dir to examin. (This is determined by the value if iPath.) 1435 */ 1436 switch (iPath) 1437 { 1438 case FINDDLL_EXECUTABLEDIR: 1439 if ((pszPath = ldrGetExePath(pVars->szPath, TRUE)) == NULL) 1440 continue; 1441 break; 1442 1443 case FINDDLL_CURRENTDIR: 1444 pszPath = "."; 1445 break; 1446 1447 case FINDDLL_SYSTEM32DIR: 1448 if (!fOdin32PathValid) 1449 continue; 1450 pszPath = pVars->szPath; 1451 strcpy(pszPath, pszOdin32Path); 1452 strcpy(pszPath + cchOdin32Path, "System32"); 1453 break; 1454 1455 case FINDDLL_SYSTEM16DIR: 1456 if (!fOdin32PathValid) 1457 continue; 1458 pszPath = pVars->szPath; 1459 strcpy(pszPath, pszOdin32Path); 1460 strcpy(pszPath + cchOdin32Path, "System"); 1461 break; 1462 1463 case FINDDLL_WINDIR: 1464 if (!fOdin32PathValid) 1465 continue; 1466 pszPath = pVars->szPath; 1467 strcpy(pszPath, pszOdin32Path); 1468 pszPath[cchOdin32Path - 1] = '\0'; /* remove slash */ 1469 break; 1470 1471 case FINDDLL_PATH: 1472 pszPath = (char*)GetEnv(TRUE); 1473 if (pszPath == NULL) 1474 continue; 1475 pszPath = (char*)ScanEnv(pszPath, "PATH"); 1476 break; 1477 1478 #if 0 1479 case FINDDLL_BEGINLIBPATH: 1480 pszPath = ptda_GetBeginLibpath()... ; 1481 if (pszPath == NULL) 1482 continue; 1483 break; 1484 1485 case FINDDLL_LIBPATH: 1486 pszPath = *pLdrLibPath; 1487 break; 1488 1489 case FINDDLL_ENDLIBPATH: 1490 pszPath = ptda_GetEndLibpath()... ; 1491 if (pszPath == NULL) 1492 continue; 1493 break; 1494 #endif 1495 default: /* !internalerror! */ 1496 printIPE(("Pe2Lx::openPath(%.*s,..): iPath is %d which is invalid.\n", cchFilename, pachFilename, iPath)); 1497 rfree(pVars); 1498 return ERROR_FILE_NOT_FOUND; 1499 } 1500 1501 1502 /** @sketch 1503 * pszPath is now set to the pathlist to be searched. 1504 * So we'll loop thru all the paths in the list. 1505 */ 1506 while (pszPath != NULL && *pszPath != '\0') 1507 { 1508 char * pszNext; /* Pointer to the next pathlist path */ 1509 int cch; /* Length of path (including the slash after the slash is added). */ 1510 1511 /** @sketch 1512 * Find the end of the path and set pszNext. 1513 * Uncount any trailing slash. 1514 * Check that the filename fits within the buffer (and OS/2 filelength limits). 1515 */ 1516 pszNext = strchr(pszPath, ';'); 1517 if (pszNext != NULL) 1518 { 1519 cch = pszNext - pszPath; 1520 pszNext++; 1521 } 1522 else 1523 cch = strlen(pszPath); 1524 1525 if (pszPath[cch - 1] == '\\' || pszPath[cch-1] == '/') 1526 cch--; 1527 1528 if (cch == 0 || cch + cchFilename + 2 + cchExt > sizeof(pVars->sz)) /* assertion */ 1529 { 1530 printErr(("Pe2Lx::openPath(%.*s,..): cch (%d) + cchFilename (%d) + 2 + cchExt (%d) > sizeof(pVars->sz) (%d) - path's too long!, iPath=%d", 1531 cchFilename, pachFilename, cch, cchExt, cchFilename, sizeof(pVars->sz), iPath)); 1532 1533 pszPath = pszNext; 1534 continue; 1535 } 1536 1537 1538 /** @sketch 1539 * Copy the path into the pVars->sz buffer. 1540 * Add a '\\' and the filename (pszFullname) to the path; 1541 * then we'll have a fullpath. 1542 */ 1543 memcpy(pVars->sz, pszPath, cch); 1544 pVars->sz[cch++] = '\\'; 1545 memcpy(&pVars->sz[cch], pachFilename, (size_t)cchFilename); 1546 if (cchExt != 0) 1547 memcpy(&pVars->sz[cch + cchFilename], ".DLL", 5); 1548 else 1549 pVars->sz[cch + cchFilename] = '\0'; 1550 1551 1552 /** @sketch 1553 * Try open the file using myLdrOpen. 1554 * Return if successfully opened or if fatal error. 1555 */ 1556 rc = myldrOpen(&pLdrLv->lv_sfn, pVars->sz, pful); 1557 switch (rc) 1558 { 1559 /* these errors are ignored (not fatal) */ 1560 case ERROR_FILE_NOT_FOUND: case ERROR_PATH_NOT_FOUND: case ERROR_ACCESS_DENIED: case ERROR_INVALID_ACCESS: 1561 case ERROR_INVALID_DRIVE: case ERROR_NOT_DOS_DISK: case ERROR_REM_NOT_LIST: case ERROR_BAD_NETPATH: 1562 case ERROR_NETWORK_BUSY: case ERROR_DEV_NOT_EXIST: case ERROR_TOO_MANY_CMDS: case ERROR_ADAP_HDW_ERR: 1563 case ERROR_UNEXP_NET_ERR: case ERROR_BAD_REM_ADAP: case ERROR_NETNAME_DELETED: case ERROR_BAD_DEV_TYPE: 1564 case ERROR_NETWORK_ACCESS_DENIED: case ERROR_BAD_NET_NAME: case ERROR_TOO_MANY_SESS: case ERROR_REQ_NOT_ACCEP: 1565 case ERROR_INVALID_PASSWORD: case ERROR_OPEN_FAILED: case ERROR_INVALID_NAME: case ERROR_FILENAME_EXCED_RANGE: 1566 case ERROR_VC_DISCONNECTED: 1567 rc = ERROR_FILE_NOT_FOUND; 1568 pszPath = pszNext; 1569 break; 1570 1571 /* all errors and success is let out here */ 1572 case NO_ERROR: 1573 default: 1574 rfree(pVars); 1575 return rc; 1576 } 1577 1578 /** @sketch 1579 * Advance to the next path part 1580 */ 1581 pszPath = pszNext; 1582 } 1583 } /* for iPath */ 1584 1585 1586 /* 1587 * Cleanup: free local variables. 1588 * Since we haven't found the file yet we'll return thru ldrOpenPath. 1589 */ 1590 rfree(pVars); 1591 return ldrOpenPath(pachFilename, (USHORT)cchFilename, pLdrLv, pful); 1592 1593 #else 1594 NOREF(pachFilename); 1595 NOREF(cchFilename); 1596 NOREF(pLdrLv); 1597 NOREF(pful); 1598 NOREF(fOdin32PathValid); 1599 return ERROR_NOT_SUPPORTED; 1600 #endif 1601 } 1602 1603 1283 1604 #ifndef RING0 1284 1605 /** … … 1313 1634 } 1314 1635 1315 rc = readAtRVA(0x00000000, &achPage[0], PAGESIZE); 1316 if (rc != NO_ERROR) 1317 { 1318 printErr(("readAtRVA failed with rc=%d\n")); 1319 return rc; 1320 } 1321 rc = applyFixups(&mte, 0, ~0UL, &achPage[0], 0x125D0000, NULL); 1322 1323 rc = readAtRVA(0x00001000, &achPage[0], PAGESIZE); 1324 if (rc != NO_ERROR) 1325 { 1326 printErr(("readAtRVA failed with rc=%d\n")); 1327 return rc; 1328 } 1329 rc = applyFixups(&mte, 1, 1, &achPage[0], 0x125E0000, NULL); 1636 /* 1637 * Test load and apply all (internal) fixups. 1638 */ 1639 for (i = 0; i < cObjects; i++) 1640 { 1641 ULONG ulAddress = smte.smte_objtab[i].ote_base; 1642 ULONG ulRVA = paObjects[i].ulRVA; 1643 LONG cbObject = paObjects[i].cbVirtual; 1644 for (i=i; cbObject > 0; cbObject -= PAGESIZE, ulAddress += PAGESIZE, ulRVA += PAGESIZE) 1645 { 1646 rc = readAtRVA(ulRVA, &achPage[0], PAGESIZE); 1647 if (rc != NO_ERROR) 1648 { 1649 printErr(("readAtRVA failed with rc=%d\n")); 1650 return rc; 1651 } 1652 rc = applyFixups(&mte, 1, 1, &achPage[0], ulAddress, NULL); 1653 if (rc != NO_ERROR) 1654 { 1655 printErr(("applyFixups failed with rc=%d\n")); 1656 return rc; 1657 } 1658 } 1659 } 1330 1660 1331 1661 return rc; … … 1381 1711 { 1382 1712 ULONG cbToRead = min(cbLXFile, sizeof(achReadBuffer)); 1383 rc = read(offLXFile, &achReadBuffer[0], cbToRead, 0UL, NULL);1713 rc = read(offLXFile, &achReadBuffer[0], 0UL, cbToRead, NULL); 1384 1714 if (rc != NO_ERROR) 1385 1715 { … … 1411 1741 } 1412 1742 #endif 1743 1744 1745 /** 1746 * Is this module an executable? 1747 * @returns TRUE if executable. 1748 * FALSE if not an executable. 1749 * @sketch 1750 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 1751 */ 1752 BOOL Pe2Lx::isExe() 1753 { 1754 return ((this->LXHdr.e32_mflags & E32MODMASK) == E32MODEXE); 1755 } 1756 1757 1758 /** 1759 * Is this module an dynamic link library. 1760 * @returns TRUE if dynamic link library. 1761 * FALSE if not a dynamic link library. 1762 * @sketch 1763 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 1764 */ 1765 BOOL Pe2Lx::isDll() 1766 { 1767 return ((this->LXHdr.e32_mflags & E32MODMASK) == E32MODDLL); 1768 } 1769 1770 1771 /** 1772 * Invalidates the odin32path. 1773 * Called by ldrClose when the kernel32 handle is closed. 1774 * @sketch Free path 1775 * nullify path pointer and kernel32 handle. 1776 * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) 1777 */ 1778 VOID Pe2Lx::invalidateOdin32Path() 1779 { 1780 if (pszOdin32Path != NULL) 1781 { 1782 rfree((void*)pszOdin32Path); 1783 pszOdin32Path = NULL; 1784 } 1785 sfnKernel32 = NULLHANDLE; 1786 } 1413 1787 1414 1788 … … 2755 3129 { 2756 3130 PIMAGE_BASE_RELOCATION pbrCur = pBaseRelocs; 2757 while ((void*)pbrCur < (void*)((unsigned)pBaseRelocs + cbBaseRelocs)) 3131 while ((void*)pbrCur < (void*)((unsigned)pBaseRelocs + cbBaseRelocs) 3132 && pbrCur->SizeOfBlock >= 8) 2758 3133 { 2759 3134 if ((unsigned)pbrCur->SizeOfBlock + (unsigned)pbrCur > (unsigned)pBaseRelocs + cbBaseRelocs) … … 4332 4707 4333 4708 4709 4710 /** 4711 * Initiates the odin32path. 4712 * @returns Success indicator. 4713 * @sketch If allready inited ok Then do nothing return TRUE. 4714 * 4715 * Check if KERNEL32 is loaded using ldrFindModule. 4716 * If loaded then set path according to the smte_path and return. 4717 * 4718 * If the path is set to something then return TRUE. (ie. the following method is allready applied.) 4719 * 4720 * Use odinPath2 to locate the KERNEL32 module in the LIBPATHs. The 4721 * win32k loaders are temporarily disabled. Path is returned in 4722 * the ldrpFileNameBuf buffer. 4723 * If found the Then set path according to ldrpFileNameBuf and return 4724 * 4725 * Fail returning FALSE. 4726 * @status 4727 * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) 4728 * @remark 4729 */ 4730 BOOL Pe2Lx::initOdin32Path() 4731 { 4732 #ifdef RING0 4733 APIRET rc; 4734 PMTE pMTE; 4735 4736 4737 if (sfnKernel32 != NULLHANDLE) 4738 return TRUE; 4739 4740 /* 4741 * Try find it using ldrFindModule. 4742 */ 4743 pMTE = NULL; 4744 rc = ldrFindModule("KERNEL32", 8, CLASS_GLOBAL, (PPMTE)SSToDS(&pMTE)); 4745 if (rc == NO_ERROR && pMTE != NULL && pMTE->mte_swapmte != NULL) 4746 { 4747 /* 4748 * We now take the smte_path. Start at the end and skip the filename, 4749 * and one directory up. We assume a fully qualified path is found in 4750 * smte_path. 4751 */ 4752 if (pMTE->mte_swapmte->smte_path != NULL)//paranoia 4753 { 4754 sfnKernel32 = pMTE->mte_sfn; 4755 return setOdin32Path(pMTE->mte_swapmte->smte_path); 4756 } 4757 } 4758 4759 4760 /* 4761 * KERNEL32 isn't loaded. We'll only search the paths if 4762 */ 4763 if (pszOdin32Path != NULL) 4764 return TRUE; 4765 4766 4767 /* 4768 * Try find it searching the LIBPATHs. 4769 * 4770 * For the time being: 4771 * We'll use odinPath2 to do this, but we'll have to 4772 * disable the win32k.sys overloading temporarily. 4773 */ 4774 ldrlv_t lv = {0}; 4775 ULONG ful = 0; 4776 ULONG ul; 4777 4778 ul = options.fNoLoader; 4779 options.fNoLoader = TRUE; 4780 lv.lv_class = CLASS_GLOBAL; 4781 rc = openPath2("KERNEL32", 8, (ldrlv_t*)SSToDS(&lv), (PULONG)SSToDS(&ful), FALSE); 4782 options.fNoLoader = ul; 4783 if (rc == NO_ERROR) 4784 { 4785 /* 4786 * Set the odin32path according to the kernel32 path we've found. 4787 * (ldrOpen sets ldrpFileNameBuf to the fully qualified path of 4788 * the last opended filed, which in this case is kernel32.dll.) 4789 * We'll close the file handle first of course. 4790 */ 4791 rc = setOdin32Path(ldrpFileNameBuf); 4792 ldrClose(lv.lv_sfn); 4793 return rc; 4794 } 4795 4796 #endif 4797 return FALSE; 4798 } 4799 4800 4801 4802 /** 4803 * Sets the Odin32Path to the given fully qualified filename of kernel32. 4804 * @returns Success indicator. 4805 * @param psz Fully qualified filename of kernel32 with path. 4806 * @sketch 4807 * @status 4808 * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) 4809 * @remark 4810 */ 4811 BOOL Pe2Lx::setOdin32Path(const char *psz) 4812 { 4813 const char * psz2; 4814 4815 /* 4816 * We now take the psz. Start at the end and skip the filename, 4817 * and one directory up. We assume a fully qualified path. 4818 */ 4819 psz2 = psz + strlen(psz) - 1; 4820 while (psz2 > psz && *psz2 != '\\' && *psz2 != '/' && *psz2 != ':') 4821 psz2--; 4822 psz2--; 4823 while (psz2 > psz && *psz2 != '\\' && *psz2 != '/' && *psz2 != ':') 4824 psz2--; 4825 if (psz2 > psz) 4826 { 4827 char *pszPath; 4828 /* 4829 * Free old path (if any) and allocate space for a new path. 4830 * Copy the path including the slash. 4831 * Remember the kernel32 filehandle (to be able to invalidate the path). 4832 */ 4833 if (pszOdin32Path) 4834 rfree((void*)pszOdin32Path); 4835 if (*psz2 == ':') //in case someone installed odin in a root directory. 4836 psz2++; 4837 psz2++; //include the slash 4838 cchOdin32Path = psz2 - psz; 4839 pszPath = (char*)rmalloc((size_t)cchOdin32Path); 4840 if (pszPath == NULL) return FALSE; 4841 memcpy(pszPath, psz, (size_t)cchOdin32Path); 4842 pszPath[cchOdin32Path] = '\0'; 4843 pszOdin32Path = pszPath; 4844 4845 return TRUE; 4846 } 4847 4848 return FALSE; 4849 } 4850 4851 4852 4853 4334 4854 /** 4335 4855 * Static method which dumps a set of nt headers. -
trunk/src/win32k/test/dos.c
r3829 r4164 1 /* $Id: dos.c,v 1. 1 2000-07-16 22:18:14bird Exp $1 /* $Id: dos.c,v 1.2 2000-09-02 21:08:20 bird Exp $ 2 2 * 3 3 * Thunkers for OS/2 APIs. … … 22 22 *******************************************************************************/ 23 23 #include <os2.h> 24 25 #include "devSegDf.h" /* Win32k segment definitions. */ 24 26 25 27 #include "test.h" -
trunk/src/win32k/test/fake.c
r3829 r4164 1 /* $Id: fake.c,v 1. 1 2000-07-16 22:18:14bird Exp $1 /* $Id: fake.c,v 1.2 2000-09-02 21:08:20 bird Exp $ 2 2 * 3 3 * Fake stubs for the ldr and kernel functions we imports or overloads. … … 29 29 #include <string.h> 30 30 31 #include "devSegDf.h" /* Win32k segment definitions. */ 32 31 33 #include "log.h" 32 34 #include "OS2Krnl.h" … … 60 62 * Pointer to the loader semaphore. 61 63 */ 62 static LONG lfakeLDRSem = 0; /* Used as a counter. */ 63 HKMTX fakeLDRSem = (HKMTX)&lfakeLDRSem; 64 KSEMMTX fakeLDRSem; 65 66 CHAR szBeginLibPath[1024]; 67 CHAR szEndLibPath[1024]; 68 CHAR szLibPath[1024]; 69 PSZ fakeLDRLibPath = &szLibPath[0]; 70 71 CHAR szldrpFileNameBuf[CCHMAXPATH]; 72 PSZ fakeldrpFileNameBuf = &szldrpFileNameBuf[0]; 64 73 65 74 static CHAR achHeaderBuffer[256]; /* Buffer to read exe header into. */ 66 75 PVOID pheaderbuf = &achHeaderBuffer[0]; 76 67 77 68 78 /* … … 112 122 VOID LDRCALL fakeldrUCaseString(PCHAR pachString, USHORT cchString); 113 123 ULONG LDRCALL fakeldrMTEValidatePtrs(PSMTE psmte, ULONG ulMaxAddr, ULONG off); 124 unsigned short getSlot(void); 125 126 127 128 /** 129 * Initiate workers (imported kernel functions / vars) 130 * @status partially implemented. 131 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 132 */ 133 void workersinit(void) 134 { 135 APIRET rc; 136 137 /* 138 * Make code writable. 139 */ 140 DosSetMem(&CODE16START, &CODE16END - &CODE16START, PAG_WRITE | PAG_READ); 141 DosSetMem(&CODE32START, &CODE32END - &CODE32START, PAG_WRITE | PAG_READ); 142 143 /* 144 * Loader semaphore 145 */ 146 fakeKSEMInit((PKSEM)(void*)&fakeLDRSem, KSEM_MUTEX, KSEM_DEFAULT); 147 148 /* 149 * Intra process semaphore. 150 */ 151 fakeKSEMInit((PKSEM)(void*)&fakeptda_ptdasem, KSEM_MUTEX, KSEM_DEFAULT); 152 153 /* 154 * LIBPaths 155 */ 156 rc = DosQueryExtLIBPATH(szBeginLibPath, BEGIN_LIBPATH); 157 rc = DosQueryHeaderInfo(NULLHANDLE, 0, szLibPath, sizeof(szLibPath), QHINF_LIBPATH); 158 rc = DosQueryExtLIBPATH(szEndLibPath, END_LIBPATH); 159 160 rc = rc; 161 } 114 162 115 163 … … 169 217 if (pfl != NULL) 170 218 *pfl = 0; 219 rc = DosQueryPathInfo(pszFilename, FIL_QUERYFULLNAME, fakeldrpFileNameBuf, CCHMAXPATH); 220 rc = NO_ERROR; 171 221 } 172 222 … … 712 762 ULONG LDRCALL fakeLDRClearSem(void) 713 763 { 714 if (lfakeLDRSem == 0) 715 kprintf(("fakeLDRClearSem: lfakeLDRSem is 0 allready\n")); 716 else 717 lfakeLDRSem--; 718 719 printf("fakeLDRClearSem: usage count = %d, rc = %d\n", lfakeLDRSem, NO_ERROR); 720 721 return NO_ERROR; 764 return fakeKSEMReleaseMutex(&fakeLDRSem); 722 765 } 723 766 … … 730 773 * @remark 731 774 */ 732 ULONG KRNLCALL fakeKSEMRequestMutex(HKMTX hkmtx, ULONG ulTimeout) 733 { 734 (*(PLONG)hkmtx)++; 735 736 printf("fakeKSEMRequestMutex: hkmtx = %p, ulTimeout = 0x%x, usage count = %d, rc = %d\n", 737 hkmtx, ulTimeout, *(PLONG)hkmtx, NO_ERROR); 738 739 return NO_ERROR; 775 ULONG KRNLCALL fakeKSEMRequestMutex(HKSEMMTX hkmtx, ULONG ulTimeout) 776 { 777 unsigned short usSlot = getSlot(); 778 ULONG rc = NO_ERROR; 779 780 if (memcmp(&hkmtx->debug.ksem_achSignature[0], "KSEM", 4) != 0) 781 { 782 printf("fakeKSEMQueryMutex: hkmtx = %p, invalid signature (%.4s)\n", hkmtx, hkmtx->debug.ksem_achSignature); 783 return FALSE; 784 } 785 786 if (hkmtx->debug.ksem_Owner == 0) 787 { 788 hkmtx->debug.ksem_Owner = usSlot; 789 hkmtx->debug.ksem_cusNest = 1; 790 } 791 else if (hkmtx->debug.ksem_Owner == usSlot) 792 hkmtx->debug.ksem_cusNest++; 793 else 794 rc = ERROR_SEM_BUSY; 795 796 printf("fakeKSEMRequestMutex: hkmtx = %p, ulTimeout = 0x%x, owner = %d, usage count = %d, rc = %d\n", 797 hkmtx, ulTimeout, hkmtx->debug.ksem_cusNest, hkmtx->debug.ksem_Owner, ERROR_SEM_BUSY); 798 799 return rc; 800 } 801 802 803 /** 804 * KSEMReleaseMutex faker. 805 * @returns NO_ERROR 806 * @param hkmtx 807 * @param ulTimeout 808 * @status completely implemented. 809 * @remark 810 */ 811 ULONG KRNLCALL fakeKSEMReleaseMutex(HKSEMMTX hkmtx) 812 { 813 unsigned int usSlot = getSlot(); 814 int rc = NO_ERROR; 815 816 if (memcmp(&hkmtx->debug.ksem_achSignature[0], "KSEM", 4) != 0) 817 { 818 printf("fakeKSEMQueryMutex: hkmtx = %p, invalid signature (%.4s)\n", hkmtx, hkmtx->debug.ksem_achSignature); 819 return FALSE; 820 } 821 822 if (hkmtx->debug.ksem_Owner == usSlot) 823 { 824 if (--hkmtx->debug.ksem_cusNest == 0) 825 hkmtx->debug.ksem_Owner = 0; 826 } 827 else 828 rc = ERROR_NOT_OWNER; 829 830 printf("fakeKSEMReleaseMutex: hkmtx = %p, usage count = %d, owner = %d, rc = %d\n", 831 hkmtx, hkmtx->debug.ksem_cusNest, hkmtx->debug.ksem_Owner, rc); 832 833 return rc; 834 } 835 836 837 838 /** 839 * KSEMQueryMutex faker. 840 * @returns TRUE if owner or clear. Clear if *pcusNest is 0. 841 * FALSE if other owner. 842 * @param hkmtx Handle to kernel mutex. 843 * @param pcusNest Pointer to variable which is to receive the nesting count. 844 * (ie. the number of times we have taken this semaphore.) 845 * @status completely implemented. 846 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 847 */ 848 BOOL KRNLCALL fakeKSEMQueryMutex(HKSEMMTX hkmtx, PUSHORT pcusNest) 849 { 850 unsigned int usSlot = getSlot(); 851 BOOL fRc = TRUE; 852 853 if (memcmp(&hkmtx->debug.ksem_achSignature[0], "KSEM", 4) != 0) 854 { 855 printf("fakeKSEMQueryMutex: hkmtx = %p, invalid signature (%.4s)\n", hkmtx, hkmtx->debug.ksem_achSignature); 856 return FALSE; 857 } 858 859 if (hkmtx->debug.ksem_Owner == 0) 860 { 861 if (pcusNest) 862 *pcusNest = 0; 863 fRc = FALSE; 864 } 865 else 866 { 867 fRc = (hkmtx->debug.ksem_Owner == usSlot); 868 if (pcusNest) 869 *pcusNest = hkmtx->debug.ksem_cusNest; 870 } 871 872 printf("fakeKSEMQueryMutex: hkmtx = %p, usage count = %d, owner = %d, *pcusNest = %d, rc = %d\n", 873 hkmtx, hkmtx->debug.ksem_cusNest, hkmtx->debug.ksem_Owner, pcusNest ? *pcusNest : -1, fRc); 874 875 return fRc; 876 } 877 878 879 /** 880 * KSEMInit faker. 881 * @param pksem Pointer to the semaphore struct to initiate. 882 * @param fulType Semaphore type. (only KSEM_MUTEX is supported) 883 * @param fulFlags Semaphore flags. (not validated) 884 * @status partially implemented. 885 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 886 */ 887 VOID KRNLCALL fakeKSEMInit(PKSEM pksem, ULONG fulType, ULONG fulFlags) 888 { 889 if (fulType != KSEM_MUTEX) 890 { 891 printf("fakeKSEMInit: Invalid fulType parameter (%d).\n", fulType); 892 return; /*ERROR_INVALID_PARAMETER;*/ 893 } 894 895 memcpy(pksem->mtx.debug.ksem_achSignature, "KSEM", 4); 896 pksem->mtx.debug.ksem_bFlags = (char)fulFlags; 897 pksem->mtx.debug.ksem_bType = KSEM_MUTEX; 898 pksem->mtx.debug.ksem_cusNest = 0; 899 pksem->mtx.debug.ksem_cusPendingWriters = 0; 900 pksem->mtx.debug.ksem_Owner = 0; 901 902 printf("fakeKSEMInit: pksem=%p, fulType=%d, fulFlags=0x%x.\n", pksem, fulType, fulFlags); 903 } 904 905 906 /** 907 * Gets the thread slot number. 908 * @returns Thread slot number. 909 * @status completely implemented. 910 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 911 */ 912 unsigned short getSlot(void) 913 { 914 PPIB ppib; 915 PTIB ptib; 916 BOOL f32Stack = ((int)&ppib > 0x10000); 917 918 if (!f32Stack) ThunkStack16To32(); 919 920 DosGetInfoBlocks(&ptib, &ppib); 921 922 if (!f32Stack) ThunkStack32To16(); 923 924 return (unsigned short)ptib->tib_ordinal; 740 925 } 741 926 … … 863 1048 864 1049 printf("tkExecPgmWorker: execFlag = %d, pArg = %p, pEnv = %p, pszFilename = %s\n", execFlag, pArg, pEnv, pszFilename); 1050 1051 /* 1052 * Take loader semaphore. 1053 */ 1054 rc = KSEMRequestMutex(&fakeLDRSem, KSEM_INDEFINITE_WAIT); 1055 if (rc != NO_ERROR) 1056 { 1057 return rc; 1058 } 865 1059 866 1060 /* … … 1479 1673 i++, psz += 1 + *psz) 1480 1674 { 1481 if ( !memcmp(psz+1, "DOSCALLS", *psz))1675 if (*psz == 8 && !strnicmp(psz+1, "DOSCALLS", 8)) 1482 1676 continue; 1483 1677 … … 1563 1757 } 1564 1758 1759 1760 PMTE KRNLCALL fakeldrASMpMTEFromHandle(HMTE hMTE) 1761 { 1762 PMTE pMte = (PMTE)hMTE; 1763 1764 pMte += 10; //just do something! 1765 1766 return NULL; 1767 } 1768 1769 ULONG LDRCALL fakeldrFindModule(PCHAR pachFilename, USHORT cchFilename, USHORT usClass, PPMTE ppMTE) 1770 { 1771 APIRET rc = NO_ERROR; 1772 usClass = usClass; 1773 cchFilename = cchFilename; 1774 pachFilename = pachFilename; 1775 *ppMTE = NULL; 1776 return rc; 1777 } 1778 1779 1780 /** 1781 * Gets the path (name with fully qualified path) from a SFN. 1782 * @returns Pointer to the path of hFile. 1783 * @param hFile SFN filehandle. 1784 */ 1785 PSZ SECCALL fakeSecPathFromSFN(SFN hFile) 1786 { 1787 APIRET rc; 1788 BOOL f32Stack = ((int)&hFile > 0x10000); 1789 1790 if (!f32Stack) ThunkStack16To32(); 1791 1792 rc = ERROR_NOT_SUPPORTED; 1793 1794 if (!f32Stack) ThunkStack32To16(); 1795 1796 printf("fakeSecPathFromSFN: - not implemented - hFile = 0x%04x, rc = %d\n", hFile, rc); 1797 1798 return rc; 1799 } 1800 -
trunk/src/win32k/test/fakea.asm
r3829 r4164 1 ; $Id: fakea.asm,v 1. 1 2000-07-16 22:18:15bird Exp $1 ; $Id: fakea.asm,v 1.2 2000-09-02 21:08:21 bird Exp $ 2 2 ; 3 3 ; Fake assembly imports. … … 30 30 public fakeptda_start 31 31 public fakeptda_environ 32 public fakeptda_module 33 public fakeptda_ptdasem 34 public fakeptda_pBeginLIBPATH 32 35 public fakef_FuStrLenZ 33 36 public fakef_FuStrLen 34 37 public fakef_FuBuff 35 38 public fakeg_tkExecPgm 39 public fake_tkStartProcess 36 40 public CalltkExecPgm 37 41 38 42 39 43 ; 40 ; Imported Functions 44 ; Imported Functions and Variables. 41 45 ; 42 46 extrn tkExecPgmWorker:PROC ; fake.c 43 47 extrn _fakeLDRClearSem@0:PROC ; fake.c 48 extrn _fakeKSEMRequestMutex@8:PROC ; fake.c 49 extrn fakeLDRSem:BYTE ; fake.c 44 50 45 51 DATA16 SEGMENT … … 56 62 fakeptda_dummy db 123 dup (0) 57 63 fakeptda_environ dw 1 ; 1 is the hardcoded HOB of the win32ktst.exe's environment. 64 fakeptda_ptdasem db 20 dup (0) ; PTDA semaphore - Intra-Process serialisation mutex KSEM (sg244640). 65 fakeptda_module dw 1 ; 1 is the hardcoded HMTE of the current executable module. 66 fakeptda_pBeginLIBPATH dd 0 ; BEGINLIBPATH not implemented. 67 dd 0 ; ENDLIBPATH not implemented. 58 68 59 69 … … 249 259 250 260 CODE32 SEGMENT 261 ;; 262 ; Faker of which simply clears the loader semaphore. 263 ; @cproto none! (void _Optlink fake_tkStartProcess(void)) 264 ; @returns 265 ; @param 266 ; @uses 267 ; @equiv 268 ; @time 269 ; @sketch 270 ; @status 271 ; @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 272 ; @remark 273 fake_tkStartProcess PROC NEAR 274 push ebp 275 mov ebp, esp 276 277 push ebx 278 push ecx 279 280 call _fakeLDRClearSem@0 281 282 pop ecx 283 pop ebx 284 285 xor eax, eax 286 leave 287 ret 288 fake_tkStartProcess ENDP 289 290 251 291 ;; 252 292 ; Fake g_tkExecPgm implementation. … … 270 310 271 311 ; 272 ; We just have to make some common code...312 ; Call C worker 273 313 ; 274 314 sub esp, 10h … … 302 342 ; ebp+8, ebp+c, ebp+10, ebp+14 303 343 ; esp+0, esp+4, esp+08, esp+0c 304 344 or eax, eax 345 jnz ftkep_ret 346 call fake_tkStartProcess ; If succesfully so far. call start process. 347 jmp ftkep_ret2 ; <Currently no parameters are implemented.> 348 349 ftkep_ret: 350 push eax 351 call _fakeLDRClearSem@0 ; clear the semaphore. 352 pop eax 353 354 ftkep_ret2: 305 355 leave 306 356 ret -
trunk/src/win32k/test/win32ktst.c
r3829 r4164 1 /* $Id: win32ktst.c,v 1. 1 2000-07-16 22:18:16bird Exp $1 /* $Id: win32ktst.c,v 1.2 2000-09-02 21:08:21 bird Exp $ 2 2 * 3 3 * Win32k test module. … … 26 26 (PVOID)( ( (((unsigned)(flataddr) << 3) & 0xfff80000) | (SEL_LDT_RPL3 << 16) ) | ((unsigned)(flataddr) & 0xffff) ) 27 27 28 #define DWORD ULONG 29 #define WORD USHORT 30 28 31 /******************************************************************************* 29 32 * Internal Functions * 30 33 *******************************************************************************/ 31 34 #include <os2.h> 35 #include <exe386.h> 36 37 #include "devSegDf.h" /* Win32k segment definitions. */ 32 38 33 39 #include "malloc.h" … … 42 48 #include "devcmd.h" 43 49 #include "os2krnl.h" 50 #include "avl.h" 51 #include "ldr.h" 44 52 #include "ldrCalls.h" 45 53 #include "test.h" … … 47 55 #include "macros.h" 48 56 #include "log.h" 57 58 59 49 60 50 61 … … 133 144 134 145 /******************************************************************************* 146 * Structures and Typedefs * 147 *******************************************************************************/ 148 #ifndef QS_MTE 149 /* From OS/2 Toolkit v4.5 (BSEDOS.H) */ 150 151 /* Global Record structure 152 * Holds all global system information. Placed first in user buffer 153 */ 154 typedef struct qsGrec_s { /* qsGrec */ 155 ULONG cThrds; 156 ULONG c32SSem; 157 ULONG cMFTNodes; 158 }qsGrec_t; 159 160 /* 161 * System wide MTE information 162 * ________________________________ 163 * | pNextRec |----| 164 * |-------------------------------| | 165 * | hmte | | 166 * |-------------------------------| | 167 * | ctImpMod | | 168 * |-------------------------------| | 169 * | ctObj | | 170 * |-------------------------------| | 171 * | pObjInfo |----|----------| 172 * |-------------------------------| | | 173 * | pName |----|----| | 174 * |-------------------------------| | | | 175 * | imported module handles | | | | 176 * | . | | | | 177 * | . | | | | 178 * | . | | | | 179 * |-------------------------------| <--|----| | 180 * | "pathname" | | | 181 * |-------------------------------| <--|----------| 182 * | Object records | | 183 * | (if requested) | | 184 * |_______________________________| | 185 * <----- 186 * NOTE that if the level bit is set to QS_MTE, the base Lib record will be followed 187 * by a series of object records (qsLObj_t); one for each object of the 188 * module. 189 */ 190 191 typedef struct qsLObjrec_s { /* qsLOrec */ 192 ULONG oaddr; /* object address */ 193 ULONG osize; /* object size */ 194 ULONG oflags; /* object flags */ 195 } qsLObjrec_t; 196 197 typedef struct qsLrec_s { /* qsLrec */ 198 void FAR *pNextRec; /* pointer to next record in buffer */ 199 USHORT hmte; /* handle for this mte */ 200 USHORT fFlat; /* true if 32 bit module */ 201 ULONG ctImpMod; /* # of imported modules in table */ 202 ULONG ctObj; /* # of objects in module (mte_objcnt)*/ 203 qsLObjrec_t FAR *pObjInfo; /* pointer to per object info if any */ 204 UCHAR FAR *pName; /* -> name string following struc */ 205 } qsLrec_t; 206 207 208 209 /* Pointer Record Structure 210 * This structure is the first in the user buffer. 211 * It contains pointers to heads of record types that are loaded 212 * into the buffer. 213 */ 214 215 typedef struct qsPtrRec_s { /* qsPRec */ 216 qsGrec_t *pGlobalRec; 217 void *pProcRec; /* ptr to head of process records */ 218 void *p16SemRec; /* ptr to head of 16 bit sem recds */ 219 void *p32SemRec; /* ptr to head of 32 bit sem recds */ 220 void *pMemRec; /* ptr to head of shared mem recs */ 221 qsLrec_t *pLibRec; /* ptr to head of mte records */ 222 void *pShrMemRec; /* ptr to head of shared mem records */ 223 void *pFSRec; /* ptr to head of file sys records */ 224 } qsPtrRec_t; 225 226 #endif 227 228 229 /******************************************************************************* 230 * Global Variables * 231 *******************************************************************************/ 232 extern BOOL fInited; /* malloc.c */ 233 int cObjectsFake = 14; 234 OTE aKrnlOTE[24]; 235 236 237 /******************************************************************************* 238 * External Functions * 239 *******************************************************************************/ 240 #ifndef QS_MTE 241 /* from OS/2 Toolkit v4.5 */ 242 243 APIRET APIENTRY DosQuerySysState(ULONG EntityList, ULONG EntityLevel, PID pid, 244 TID tid, PVOID pDataBuf, ULONG cbBuf); 245 #define QS_MTE 0x0004 246 #endif 247 248 249 /******************************************************************************* 135 250 * Internal Functions * 136 251 *******************************************************************************/ 137 252 void syntax(void); 253 int kernelInit(int iTest, int argc, char **argv); 138 254 void workersinit(void); 139 255 void initRPInit(RP32INIT *pRpInit, char *pszInitArgs); 140 256 int tests(int iTest, int argc, char **argv); 141 int TestCase1( void);257 int TestCase1(int argc, char **argv); 142 258 int TestCase2(void); 143 259 int TestCase3(void); 144 260 int TestCase4(void); 145 261 int TestCase5(void); 262 int TestCase6(void); 146 263 int CompareOptions(struct options *pOpt); 147 int TestCaseExeLoad1(void); 148 149 150 /******************************************************************************* 151 * Global Variables * 152 *******************************************************************************/ 153 extern BOOL fInited; /* malloc.c */ 154 const char * pszInternalRevision = "\r\nInternal revision 14.040_W4"; 155 int cObjectsFake = 14; 156 264 int TestCaseExeLoad2(void); 157 265 158 266 … … 186 294 workersinit(); 187 295 296 /* 297 * Init Kernel 298 */ 299 if (!kernelInit(iTest, argc, argv)) 300 return -2; 188 301 189 302 /* … … 219 332 { 220 333 printf( 221 "Win32kTst.exe v%d.%d.%d - Ring 3 testing of win32k.sys\n"222 "syntax: Win32kTst.exe <testcase number> [optional arguments]\n",223 0,0,4334 "Win32kTst.exe v%d.%d.%d - Ring 3 testing of win32k.sys\n" 335 "syntax: Win32kTst.exe <testcase number> [optional arguments]\n", 336 0,0,4 224 337 ); 225 338 } … … 227 340 228 341 /** 229 * Initiate workers (imported kernel functions / vars) 230 * @status partially implemented. 231 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 232 */ 233 void workersinit(void) 342 * test case 1: Load the specified kernel 343 * other cases: Load running kernel. 344 * @returns Success indicator. (true/false) 345 * @param iTest Testcase number. 346 * @param argc main argc 347 * @param argv main argv 348 * @status completely implemented. 349 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 350 */ 351 int kernelInit(int iTest, int argc, char **argv) 234 352 { 235 DosSetMem(&CODE16START, &CODE16END - &CODE16START, PAG_WRITE | PAG_READ); 236 DosSetMem(&CODE32START, &CODE32END - &CODE32START, PAG_WRITE | PAG_READ); 353 static char achBuffer[1024*256]; 354 char szError[256]; 355 HMODULE hmod = NULLHANDLE; 356 int rc; 357 char szName[CCHMAXPATH]; 358 char * pszSrcName; 359 char * pszTmp; 360 ULONG ulAction; 361 HFILE hFile; 362 struct e32_exe* pe32 = (struct e32_exe*)(void*)&achBuffer[0]; 363 qsPtrRec_t * pPtrRec = (qsPtrRec_t*)(void*)&achBuffer[0]; 364 qsLrec_t * pLrec; 365 int i; 366 FILESTATUS3 fsts3; 367 368 /* 369 * If not testcase 1, use the running kernel. 370 */ 371 if (iTest != 1) 372 { 373 ULONG ulBootDrv = 3; 374 pszSrcName = "c:\\os2krnl"; 375 DosQuerySysInfo(QSV_BOOT_DRIVE, QSV_BOOT_DRIVE, SSToDS(&ulBootDrv), sizeof(ulBootDrv)); 376 pszSrcName[0] = (char)(ulBootDrv + 'a' - 1); 377 } 378 else 379 { 380 if (argc < 3) 381 { 382 printf("Missing parameter!\n"); 383 return FALSE; 384 } 385 pszSrcName = argv[2]; 386 } 387 388 /* 389 * Make a temporary copy of the kernel. 390 */ 391 if (DosScanEnv("TMP", &pszTmp) != NO_ERROR || pszTmp == NULL) 392 { 393 printf("Environment variable TMP is not set.\n"); 394 return FALSE; 395 } 396 strcpy(szName, pszTmp); 397 if (szName[strlen(pszTmp) - 1] != '\\' && szName[strlen(pszTmp) - 1] != '/') 398 strcat(szName, "\\"); 399 strcat(szName, "os2krnl"); 400 rc = DosCopy(pszSrcName, szName, DCPY_EXISTING); 401 if (rc != NO_ERROR) 402 { 403 printf("Failed to copy %s to %s.\n", pszSrcName, szName); 404 return FALSE; 405 } 406 if (DosQueryPathInfo(szName, FIL_STANDARD, &fsts3, sizeof(fsts3)) != NO_ERROR 407 || !(fsts3.attrFile = FILE_ARCHIVED) 408 || DosSetPathInfo(szName, FIL_STANDARD, &fsts3, sizeof(fsts3), 0) != NO_ERROR 409 ) 410 { 411 printf("Failed to set attributes for %s.\n", szName); 412 return FALSE; 413 } 414 415 /* 416 * Patch the kernel. 417 * Remove the entrypoint. 418 */ 419 ulAction = 0; 420 rc = DosOpen(szName, &hFile, &ulAction, 0, FILE_NORMAL, 421 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, 422 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, 423 NULL); 424 if (rc != NO_ERROR) 425 { 426 printf("Failed to open temporary kernel file. rc = %d\n", rc); 427 return FALSE; 428 } 429 rc = DosRead(hFile, &achBuffer[0], 0x200, &ulAction); 430 if (rc != NO_ERROR) 431 { 432 DosClose(hFile); 433 printf("Failed to read LX header from temporary kernel file.\n"); 434 return FALSE; 435 } 436 pe32 = (struct e32_exe*)(void*)&achBuffer[*(unsigned long*)(void*)&achBuffer[0x3c]]; 437 if (*(PUSHORT)pe32->e32_magic != E32MAGIC) 438 { 439 DosClose(hFile); 440 printf("Failed to read LX header from temporary kernel file (2).\n"); 441 return FALSE; 442 } 443 pe32->e32_eip = 0; 444 pe32->e32_startobj = 0; 445 pe32->e32_mflags &= ~(E32LIBTERM | E32LIBINIT); 446 if ((rc = DosSetFilePtr(hFile, *(unsigned long*)(void*)&achBuffer[0x3c], FILE_BEGIN, &ulAction)) != NO_ERROR 447 || (rc = DosWrite(hFile, pe32, sizeof(struct e32_exe), &ulAction)) != NO_ERROR) 448 { 449 DosClose(hFile); 450 printf("Failed to write patched LX header to temporary kernel file.\n"); 451 return FALSE; 452 } 453 DosClose(hFile); 454 455 /* 456 * Load the module. 457 */ 458 rc = DosLoadModule(szError, sizeof(szError), szName, SSToDS(&hmod)); 459 if (rc != NO_ERROR && (rc != ERROR_INVALID_PARAMETER && hmod == NULLHANDLE)) 460 { 461 printf("Failed to load OS/2 kernel image %s."); 462 return FALSE; 463 } 464 465 /* 466 * Get object information. 467 */ 468 rc = DosQuerySysState(QS_MTE, QS_MTE, 0L, 0L, pPtrRec, sizeof(achBuffer)); 469 if (rc != NO_ERROR) 470 { 471 printf("DosQuerySysState failed with rc=%d.\n", rc); 472 return FALSE; 473 } 474 475 pLrec = pPtrRec->pLibRec; 476 while (pLrec != NULL) 477 { 478 /* 479 * Bug detected in OS/2 FP13. Probably a problem which occurs 480 * in _LDRSysMteInfo when qsCheckCache is calle before writing 481 * object info. The result is that the cache flushed and the 482 * attempt of updating the qsLrec_t next and object pointer is 483 * not done. This used to work earlier and on Aurora AFAIK. 484 * 485 * The fix for this problem is to check if the pObjInfo is NULL 486 * while the number of objects isn't 0 and correct this. pNextRec 487 * will also be NULL at this time. This will be have to corrected 488 * before we exit the loop or moves to the next record. 489 * There is also a nasty alignment of the object info... Hope 490 * I got it right. (This aligment seems new to FP13.) 491 */ 492 if (pLrec->pObjInfo == NULL /*&& pLrec->pNextRec == NULL*/ && pLrec->ctObj > 0) 493 { 494 pLrec->pObjInfo = (qsLObjrec_t*)(void*)( 495 (char*)(void*)pLrec 496 + ((sizeof(qsLrec_t) /* size of the lib record */ 497 + pLrec->ctImpMod * sizeof(short) /* size of the array of imported modules */ 498 + strlen((char*)(void*)pLrec->pName) + 1 /* size of the filename */ 499 + 3) & ~3)); /* the size is align on 4 bytes boundrary */ 500 pLrec->pNextRec = (qsLrec_t*)(void*)((char*)(void*)pLrec->pObjInfo 501 + sizeof(qsLObjrec_t) * pLrec->ctObj); 502 } 503 if (pLrec->hmte == hmod) 504 break; 505 506 /* 507 * Next record 508 */ 509 pLrec = (qsLrec_t*)pLrec->pNextRec; 510 } 511 512 if (pLrec == NULL) 513 { 514 printf("DosQuerySysState(os2krnl): not found\n"); 515 return FALSE; 516 } 517 if (pLrec->pObjInfo == NULL) 518 { 519 printf("DosQuerySysState(os2krnl): no object info\n"); 520 return FALSE; 521 } 522 523 /* 524 * Fill the aKrnlOTE array. 525 */ 526 for (i = 0; i < pLrec->ctObj; i++) 527 { 528 aKrnlOTE[i].ote_size = pLrec->pObjInfo[i].osize; 529 aKrnlOTE[i].ote_base = pLrec->pObjInfo[i].oaddr; 530 aKrnlOTE[i].ote_flags = pLrec->pObjInfo[i].oflags; 531 aKrnlOTE[i].ote_pagemap = i > 0 ? aKrnlOTE[i-1].ote_pagemap + aKrnlOTE[i-1].ote_mapsize : 0; 532 aKrnlOTE[i].ote_mapsize = (pLrec->pObjInfo[i].osize + 0x0FFF) / 0x1000; 533 aKrnlOTE[i].ote_sel = (USHORT)FlatToSel(pLrec->pObjInfo[i].oaddr); 534 aKrnlOTE[i].ote_hob = 0; 535 } 536 cObjectsFake = pLrec->ctObj; 537 538 return TRUE; 237 539 } 238 540 … … 273 575 switch (iTest) 274 576 { 275 case 1: rc = TestCase1( ); break;577 case 1: rc = TestCase1(argc, argv); break; 276 578 case 2: rc = TestCase2(); break; 277 579 case 3: rc = TestCase3(); break; 278 case 4: rc = TestCase4(); break;279 case 5: rc = TestCase5(); break;280 580 281 581 default: … … 294 594 /** 295 595 * Test case 1. 296 * Checks that default initiation works fine for Aurora SMP kernels. 596 * Checks that default initiation works fine for a given kernel. 597 * 598 * Syntax: win32ktst.exe 1 <os2krnl> <majorver> <minorver> <build> <kerneltype: S|U|4> <buildtype: A|H|R> [os2krnl.sym] 297 599 * 298 600 * @sketch Create init packet with no arguments. … … 305 607 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 306 608 */ 307 int TestCase1( void)609 int TestCase1(int argc, char **argv) 308 610 { 611 static char szInitArgs[CCHMAXPATH + 10]; 309 612 int rc = 1; 310 613 RP32INIT rpinit; 311 614 615 /* verify argument count */ 616 if (argc < 8 || argc > 9) 617 { 618 printf("Invalid parameter count for testcase 1.\n"); 619 return ERROR_INVALID_PARAMETER; 620 } 621 312 622 /* init fake variabels */ 313 pszInternalRevision ="\r\nInternal revision 14.040_SMP"; 314 cObjectsFake = 15; 315 _usFakeVerMajor = 20; 316 _usFakeVerMinor = 45; 623 _usFakeVerMajor = (USHORT)atoi(argv[3]); 624 _usFakeVerMinor = (USHORT)atoi(argv[4]); 625 626 /* make init string */ 627 strcpy(szInitArgs, "-w3"); 628 if (argc >= 9) 629 strcat(strcat(szInitArgs, " -S:"), argv[8]); 317 630 318 631 /* $elf */ 319 initRPInit(SSToDS(&rpinit), "-w3");632 initRPInit(SSToDS(&rpinit), szInitArgs); 320 633 rc = InitElf(&rpinit); /* no SSToDS! */ 321 634 printf("InitElf returned status=0x%04x\n", rpinit.rph.Status); … … 323 636 { 324 637 /* $win32k */ 325 initRPInit(SSToDS(&rpinit), "-w3");638 initRPInit(SSToDS(&rpinit), szInitArgs); 326 639 rc = InitWin32k(&rpinit); /* no SSToDS! */ 327 640 printf("InitWin32k returned status=0x%04x\n", rpinit.rph.Status); … … 329 642 { 330 643 struct options opt = DEFAULT_OPTION_ASSIGMENTS; 331 opt.fKernel = KF_SMP;332 opt.ulBuild = 14040;333 opt.usVerMajor = 20;334 opt.usVerMinor = 45;335 644 opt.ulInfoLevel = 3; 645 opt.fKernel = (argv[6][0] == 'S' ? KF_SMP : (argv[6][0] == '4' ? KF_W4 | KF_UNI : KF_UNI)) 646 | (argv[7][0] == 'A' || argv[7][0] == 'H' ? KF_DEBUG : 0); 647 opt.ulBuild = atoi(argv[5]); 648 opt.usVerMajor = (USHORT)atoi(argv[3]); 649 opt.usVerMinor = (USHORT)atoi(argv[4]); 336 650 337 651 rc = CompareOptions(SSToDS(&opt)); 338 if (rc == NO_ERROR)339 {340 rc = TestCaseExeLoad1();341 }342 652 } 343 653 else … … 350 660 } 351 661 352 353 662 /** 354 663 * Test case 2. 355 * Checks that default initiation works fine for Aurora UNI kernels.664 * Checks that all parameters are read correctly (1). 356 665 * 357 666 * @sketch Create init packet with no arguments. … … 368 677 int rc = 1; 369 678 RP32INIT rpinit; 370 371 /* init fake variabels */ 372 pszInternalRevision ="\r\nInternal revision 14.040_UNI"; 373 cObjectsFake = 14; 374 _usFakeVerMajor = 20; 375 _usFakeVerMinor = 45; 679 char * pszInitArgs = "-C1 -L:E -Verbose -Elf:Yes -Pe:Mixed -Script:Yes -W4 -Heap:512000 -ResHeap:0256000 -HeapMax:4096000 -ResHeapMax:0x100000"; 680 681 options.fLogging = TRUE; 376 682 377 683 /* $elf */ 378 initRPInit(SSToDS(&rpinit), "");684 initRPInit(SSToDS(&rpinit), pszInitArgs); 379 685 rc = InitElf(&rpinit); /* no SSToDS! */ 380 686 printf("InitElf returned status=0x%04x\n", rpinit.rph.Status); … … 382 688 { 383 689 /* $win32k */ 384 initRPInit(SSToDS(&rpinit), "");690 initRPInit(SSToDS(&rpinit), pszInitArgs); 385 691 rc = InitWin32k(&rpinit); /* no SSToDS! */ 386 692 printf("InitWin32k returned status=0x%04x\n", rpinit.rph.Status); … … 388 694 { 389 695 struct options opt = DEFAULT_OPTION_ASSIGMENTS; 390 opt.fKernel = KF_UNI; 391 opt.ulBuild = 14040; 392 opt.usVerMajor = 20; 393 opt.usVerMinor = 45; 696 opt.cbSwpHeapInit = 512000; 697 opt.cbSwpHeapMax = 4096000; 698 opt.cbResHeapInit = 0256000; 699 opt.cbResHeapMax = 0x100000; 700 opt.fElf = TRUE; 701 opt.fUNIXScript = TRUE; 702 opt.fPE = FLAGS_PE_MIXED; 703 opt.fQuiet = FALSE; 704 opt.fLogging = TRUE; 705 opt.usCom = OUTPUT_COM1; 706 opt.ulInfoLevel = INFOLEVEL_INFOALL; 394 707 395 708 rc = CompareOptions(SSToDS(&opt)); 709 if (rc == NO_ERROR) 710 { 711 rc = TestCaseExeLoad2(); 712 } 396 713 } 397 714 else … … 404 721 } 405 722 406 407 723 /** 408 724 * Test case 3. 409 * Checks that default initiation works fine for Warp FP13 kernel.725 * Checks that all parameters are read correctly (1). 410 726 * 411 727 * @sketch Create init packet with no arguments. … … 422 738 int rc = 1; 423 739 RP32INIT rpinit; 424 425 /* init fake variabels */ 426 pszInternalRevision ="\r\nInternal revision 14.040_W4"; 427 cObjectsFake = 14; 428 _usFakeVerMajor = 20; 429 _usFakeVerMinor = 45; 430 431 /* $elf */ 432 initRPInit(SSToDS(&rpinit), ""); 433 rc = InitElf(&rpinit); /* no SSToDS! */ 434 printf("InitElf returned status=0x%04x\n", rpinit.rph.Status); 435 if ((rpinit.rph.Status & (STDON | STERR)) == STDON) 436 { 437 /* $win32k */ 438 initRPInit(SSToDS(&rpinit), ""); 439 rc = InitWin32k(&rpinit); /* no SSToDS! */ 440 printf("InitWin32k returned status=0x%04x\n", rpinit.rph.Status); 441 if ((rpinit.rph.Status & (STDON | STERR)) == STDON) 442 { 443 struct options opt = DEFAULT_OPTION_ASSIGMENTS; 444 opt.fKernel = KF_UNI | KF_W4; 445 opt.ulBuild = 14040; 446 opt.usVerMajor = 20; 447 opt.usVerMinor = 45; 448 449 rc = CompareOptions(SSToDS(&opt)); 450 } 451 else 452 printf("!failed!\n"); 453 } 454 else 455 printf("!failed!\n"); 456 457 return rc; 458 } 459 460 461 /** 462 * Test case 4. 463 * Checks that default initiation works fine for Aurora SMP kernels. 464 * 465 * @sketch Create init packet with no arguments. 466 * Initiate elf$ 467 * Create init packet with no arguments. 468 * Initiate win32k$ 469 * @returns 0 on success. 470 * 1 on failure. 471 * @status completely implemented. 472 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 473 */ 474 int TestCase4(void) 475 { 476 int rc = 1; 477 RP32INIT rpinit; 478 479 /* init fake variabels */ 480 pszInternalRevision ="\r\nInternal revision 9.036"; 481 cObjectsFake = 14; 482 _usFakeVerMajor = 20; 483 _usFakeVerMinor = 40; 484 485 /* $elf */ 486 initRPInit(SSToDS(&rpinit), ""); 487 rc = InitElf(&rpinit); /* no SSToDS! */ 488 printf("InitElf returned status=0x%04x\n", rpinit.rph.Status); 489 if ((rpinit.rph.Status & (STDON | STERR)) == STDON) 490 { 491 /* $win32k */ 492 initRPInit(SSToDS(&rpinit), ""); 493 rc = InitWin32k(&rpinit); /* no SSToDS! */ 494 printf("InitWin32k returned status=0x%04x\n", rpinit.rph.Status); 495 if ((rpinit.rph.Status & (STDON | STERR)) == STDON) 496 { 497 struct options opt = DEFAULT_OPTION_ASSIGMENTS; 498 opt.fKernel = KF_UNI; 499 opt.ulBuild = 9036; 500 opt.usVerMajor = 20; 501 opt.usVerMinor = 40; 502 503 rc = CompareOptions(SSToDS(&opt)); 504 } 505 else 506 printf("!failed!\n"); 507 } 508 else 509 printf("!failed!\n"); 510 511 return rc; 512 } 513 514 515 /** 516 * Test case 5. 517 * Checks that all parameters are read correctly (1) (Warp FP13 kernel). 518 * 519 * @sketch Create init packet with no arguments. 520 * Initiate elf$ 521 * Create init packet with no arguments. 522 * Initiate win32k$ 523 * @returns 0 on success. 524 * 1 on failure. 525 * @status completely implemented. 526 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 527 */ 528 int TestCase5(void) 529 { 530 int rc = 1; 531 RP32INIT rpinit; 532 char * pszInitArgs = "-C1 -L:N -Verbose -Quiet -Elf:Yes -Pe:Mixed -Script:No -W4 -Heap:512000 -ResHeap:0256000 -HeapMax:4096000 -ResHeapMax:0x100000"; 533 534 /* init fake variabels */ 535 pszInternalRevision ="\r\nInternal revision 14.040_W4"; 536 cObjectsFake = 14; 537 _usFakeVerMajor = 20; 538 _usFakeVerMinor = 45; 740 char * pszInitArgs = "-C1 -L:N -Verbose -Quiet -Elf:Yes -Pe:PE -Script:Yes -Rexx:NES -Java:NYes -W4 -Heap:512000 -ResHeap:0256000 -HeapMax:4096000 -ResHeapMax:0x100000"; 539 741 540 742 /* $elf */ … … 551 753 { 552 754 struct options opt = DEFAULT_OPTION_ASSIGMENTS; 553 opt.fKernel = KF_UNI | KF_W4;554 opt.ulBuild = 14040;555 opt.usVerMajor = 20;556 opt.usVerMinor = 45;557 755 opt.cbSwpHeapInit = 512000; 558 756 opt.cbSwpHeapMax = 4096000; … … 560 758 opt.cbResHeapMax = 0x100000; 561 759 opt.fElf = TRUE; 562 opt.fUNIXScript = FALSE; 563 opt.fPE = FLAGS_PE_MIXED; 760 opt.fUNIXScript = TRUE; 761 opt.fJava = FALSE; 762 opt.fREXXScript = FALSE; 763 opt.fPE = FLAGS_PE_PE; 564 764 opt.fQuiet = TRUE; 565 765 opt.fLogging = FALSE; … … 568 768 569 769 rc = CompareOptions(SSToDS(&opt)); 770 if (rc == NO_ERROR) 771 { 772 rc = TestCaseExeLoad2(); 773 } 570 774 } 571 775 else … … 577 781 return rc; 578 782 } 783 579 784 580 785 /** … … 598 803 if (options.fLogging != pOpt->fLogging) 599 804 printf("fLogging = %d - should be %d\n", options.fLogging, pOpt->fLogging, rc++); 600 if (options.fKernel != pOpt->fKernel) 601 printf("fKernel = %d - should be %d\n", options.fKernel, pOpt->fKernel, rc++); 602 if (options.ulBuild != pOpt->ulBuild) 603 printf("ulBuild = %d - should be %d\n", options.ulBuild, pOpt->ulBuild, rc++); 604 if (options.usVerMajor != pOpt->usVerMajor) 605 printf("usVerMajor = %d - should be %d\n", options.usVerMajor, pOpt->usVerMajor, rc++); 606 if (options.usVerMinor != pOpt->usVerMinor) 607 printf("usVerMinor = %d - should be %d\n", options.usVerMinor, pOpt->usVerMinor, rc++); 805 if (pOpt->ulBuild != ~0UL) 806 { 807 if (options.fKernel != pOpt->fKernel) 808 printf("fKernel = %d - should be %d\n", options.fKernel, pOpt->fKernel, rc++); 809 if (options.ulBuild != pOpt->ulBuild) 810 printf("ulBuild = %d - should be %d\n", options.ulBuild, pOpt->ulBuild, rc++); 811 if (options.usVerMajor != pOpt->usVerMajor) 812 printf("usVerMajor = %d - should be %d\n", options.usVerMajor, pOpt->usVerMajor, rc++); 813 if (options.usVerMinor != pOpt->usVerMinor) 814 printf("usVerMinor = %d - should be %d\n", options.usVerMinor, pOpt->usVerMinor, rc++); 815 } 608 816 if (options.fPE != pOpt->fPE) 609 817 printf("fPE = %d - should be %d\n", options.fPE, pOpt->fPE, rc++); … … 633 841 634 842 635 636 637 843 /** 638 844 * Simulates a executable loading (no errors). … … 647 853 * @remark 648 854 */ 649 int TestCaseExeLoad 1(void)855 int TestCaseExeLoad2(void) 650 856 { 651 857 APIRET rc; 858 int cch; 859 char * psz; 652 860 653 861 /* … … 658 866 * Do the real execution. 659 867 */ 660 printf("--- TestcaseExeLoad 1- loading win32ktst.exe (LX image) ----\n");868 printf("--- TestcaseExeLoad2 - loading win32ktst.exe (LX image) ----\n"); 661 869 rc = CalltkExecPgm(EXEC_LOAD, NULL, NULL, "win32ktst.exe"); 662 870 if (rc == NO_ERROR) 663 871 { 664 printf("--- TestcaseExeLoad1 - loading libconv.exe (LX image) ----\n"); 872 psz = "BIN\\DEBUG\\LIBCONV.EXE\0"; 873 printf("--- TestcaseExeLoad2 - loading libconv.exe (LX image) ----\n"); 665 874 rc = CalltkExecPgm(EXEC_LOAD, NULL, NULL, "bin\\debug\\libconv.exe"); 875 if (rc == NO_ERROR) 876 { 877 #if 0 //not implemented by CalltkExecPgm...??? 878 /* check result */ 879 if (memcmp(achTkExecPgmArguments, psz, strlen(psz) + 1) != 0) 880 { 881 rc = ERROR_BAD_ARGUMENTS; 882 printf("Bad Arguments! (%s)\n", achTkExecPgmArguments); 883 } 884 #else 885 psz = psz; 886 #endif 887 } 666 888 } 667 889 668 890 if (rc == NO_ERROR) 669 891 { 670 printf("--- TestcaseExeLoad1 - loading rexx\\tst.cmd (REXX script) ----\n"); 671 rc = CalltkExecPgm(EXEC_LOAD, NULL, NULL, "rexx\\tst.cmd"); 892 psz = "REXX\\TST.RX\0OriginalArgument1 OriginalArgument2\0OriginalArgument3\0"; 893 printf("--- TestcaseExeLoad2 - loading rexx\\tst.rx (REXX script) ----\n"); 894 rc = CalltkExecPgm(EXEC_LOAD, psz, NULL, "rexx\\tst.rx"); 895 if (rc == NO_ERROR) 896 { 897 /* check result */ 898 psz = "REXX\\TST.RX OriginalArgument1 OriginalArgument2\0OriginalArgument3\0"; 899 cch = strlen(psz); 900 if (memcmp(achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1, psz, cch) != 0) 901 { 902 rc = ERROR_BAD_ARGUMENTS; 903 printf("Bad Arguments! (achTkExecPgmArguments=%s).\n", achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1); 904 } 905 } 672 906 } 673 907 674 908 if (rc == NO_ERROR) 675 909 { 676 printf("--- TestcaseExeLoad1 - loading SOL.EXE (PE image) ----\n"); 677 rc = CalltkExecPgm(EXEC_LOAD, NULL, NULL, "e:\\Win32Prog\\Sol\\Sol.exe"); 910 psz = "TEST\\TST.SH\0OrgArg1 OrgArg2\0OrgArg3\0"; 911 printf("--- TestcaseExeLoad2 - loading test\\tst.sh (UNIX shell script) ----\n"); 912 rc = CalltkExecPgm(EXEC_LOAD, psz, NULL, "test\\tst.sh"); 913 if (rc == NO_ERROR) 914 { 915 /* check result */ 916 psz = "TEST\\TST.SH OrgArg1 OrgArg2\0OrgArg3\0"; 917 cch = strlen(psz); 918 if (memcmp(achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1, psz, cch) != 0) 919 { 920 rc = ERROR_BAD_ARGUMENTS; 921 printf("Bad Arguments! (achTkExecPgmArguments=%s).\n", achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1); 922 } 923 } 924 } 925 926 if (rc == NO_ERROR) 927 { 928 psz = "TEST\\TST2.SH\0OrgArg1 OrgArg2\0OrgArg3\0"; 929 printf("--- TestcaseExeLoad2 - loading test\\tst2.sh (UNIX shell script) ----\n"); 930 rc = CalltkExecPgm(EXEC_LOAD, psz, NULL, "test\\tst2.sh"); 931 if (rc == NO_ERROR) 932 { 933 /* check result */ 934 psz = "-arg1 -arg2 -arg3 TEST\\TST2.SH OrgArg1 OrgArg2\0OrgArg3\0"; 935 cch = strlen(psz) + 1; 936 if (memcmp(achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1, psz, cch) != 0) 937 { 938 rc = ERROR_BAD_ARGUMENTS; 939 printf("Bad Arguments! (achTkExecPgmArguments=%s).\n", achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1); 940 } 941 } 942 } 943 944 if (rc == NO_ERROR) 945 { 946 psz = "E:\\WIN32PROG\\SOL\\SOL.EXE\0"; 947 printf("--- TestcaseExeLoad2 - loading SOL.EXE (PE image) ----\n"); 948 rc = CalltkExecPgm(EXEC_LOAD, psz, NULL, "e:\\Win32Prog\\Sol\\Sol.exe"); 949 if (rc == NO_ERROR) 950 { 951 /* check result */ 952 cch = strlen(psz) + 1 + 1; 953 if (memcmp(achTkExecPgmArguments, psz, cch) != 0) 954 { 955 rc = ERROR_BAD_ARGUMENTS; 956 printf("Bad Arguments! (achTkExecPgmArguments=%s).\n", achTkExecPgmArguments + strlen(achTkExecPgmArguments) + 1); 957 } 958 } 678 959 } 679 960 … … 683 964 return rc; 684 965 } 966 -
trunk/src/win32k/win32k.def
r2838 r4164 11 11 12 12 SEGMENTS 13 DATA16 class 'FAR_DATA' 14 DATA16_BSS class 'FAR_DATA' 15 DATA16_CONST class 'FAR_DATA' 16 CODE16 class 'CODE' 17 CODE32 class 'CODE' 18 DATA32 class 'DATA' 19 c_common class 'DATA' 20 BSS32 class 'BSS' 21 _VFT class 'CONST' 22 CONST32_RO class 'CONST' 23 CALLTAB class 'DATA' 13 DATA16 class 'FAR_DATA' 14 DATA16_BSS class 'FAR_DATA' 15 DATA16_CONST class 'FAR_DATA' 16 DATA16_GLOBAL class 'FAR_DATA' 17 DATA16_INIT class 'FAR_DATA' 18 DATA16_INIT_BSS class 'FAR_DATA' 19 DATA16_INIT_CONST class 'FAR_DATA' 24 20 21 CODE16 class 'CODE' 22 CODE16_IOSEG class 'CODE' 23 CODE16_INIT class 'CODE' 24 25 CODE32 class 'CODE' 26 27 DATA32 class 'DATA' 28 c_common class 'DATA' 29 BSS32 class 'BSS' 30 _VFT class 'CONST' 31 CONST32_RO class 'CONST' 32 CALLTAB class 'DATA' 33 -
trunk/src/win32k/win32ktst.def
r3829 r4164 12 12 13 13 SEGMENTS 14 DATA16 class 'FAR_DATA' 15 DATA16_BSS class 'FAR_DATA' 16 DATA16_CONST class 'FAR_DATA' 17 CODE16 class 'CODE' 18 CODE32 class 'CODE' 19 CALLTAB class 'DATA' 20 DATA32 class 'DATA' 21 c_common class 'DATA' 22 DDE4_DATA32 class 'DATA' 23 CTOR_DTOR1 class 'DATA' 24 CTOR_DTOR2 class 'DATA' 25 CTOR_DTOR3 class 'DATA' 26 _VFT class 'CONST' 27 CONST32_RO class 'CONST' 28 EH_DATA class 'CONST' 29 BSS32 class 'BSS' 14 DATA16 class 'FAR_DATA' 15 DATA16_BSS class 'FAR_DATA' 16 DATA16_CONST class 'FAR_DATA' 17 DATA16_GLOBAL class 'FAR_DATA' 18 DATA16_INIT class 'FAR_DATA' 19 DATA16_INIT_BSS class 'FAR_DATA' 20 DATA16_INIT_CONST class 'FAR_DATA' 21 22 CODE16 class 'CODE' 23 CODE16_IOSEG class 'CODE' 24 CODE16_INIT class 'CODE' 25 26 CODE32 class 'CODE' 27 CALLTAB class 'DATA' 28 DATA32 class 'DATA' 29 c_common class 'DATA' 30 DDE4_DATA32 class 'DATA' 31 CTOR_DTOR1 class 'DATA' 32 CTOR_DTOR2 class 'DATA' 33 CTOR_DTOR3 class 'DATA' 34 _VFT class 'CONST' 35 CONST32_RO class 'CONST' 36 EH_DATA class 'CONST' 37 BSS32 class 'BSS' 30 38 31 39 IMPORTS … … 33 41 _DOS16OPEN = DOSCALL1.70 34 42 _DOS16CLOSE = DOSCALL1.59 35 43 DosQuerySysState = DOSCALL1.368
Note:
See TracChangeset
for help on using the changeset viewer.