1 | <?php
|
---|
2 |
|
---|
3 |
|
---|
4 | require "stilovi.php3";
|
---|
5 | require "Odin32DBHelpers.php3";
|
---|
6 |
|
---|
7 | $sTitle = "The Odin32 PE Loaders";
|
---|
8 |
|
---|
9 | require "01-PreTitle.php3";
|
---|
10 | echo $sTitle;
|
---|
11 | require "02-PostTitle.php3";
|
---|
12 |
|
---|
13 | require "03-MainTableBeg.php3";
|
---|
14 | require "04-ColumnOne.php3";
|
---|
15 |
|
---|
16 | require "05-ColumnTwoHeader.php3";
|
---|
17 | echo $sTitle;
|
---|
18 | require "06-ColumnTwoHeader2.php3";
|
---|
19 |
|
---|
20 |
|
---|
21 | /*
|
---|
22 | * The article
|
---|
23 | */
|
---|
24 |
|
---|
25 | echo "
|
---|
26 | The story of the program being executed.
|
---|
27 | ";
|
---|
28 |
|
---|
29 | TekstBeg();
|
---|
30 | echo "
|
---|
31 |
|
---|
32 | It all started when I typed the name of the program on an OS/2 commandline.
|
---|
33 | This program was a not a native OS/2 program, as you might has thougth, but
|
---|
34 | a Win32 program called SOL.EXE, or Solitaire. The first thing that happend
|
---|
35 | was that the Shell, which in my case is 4OS/2, asks the Kernel what type of
|
---|
36 | application this is. Some Programs are Presentation Manager programs, other
|
---|
37 | are VIO (Virtual I/O) programs, while others again are pure full screen
|
---|
38 | programs. So, 4OS/2 needs to know what kindred the program belongs to in
|
---|
39 | order to start it in it's corrected environment.
|
---|
40 | <p>
|
---|
41 | DosQueryAppType is the name of the API telling which type a program has.
|
---|
42 | This 32-bit call thunks to the 16-bit DosQAppType which does. DosQAppType
|
---|
43 | checks if the specified programname has a path. If is has a (absolute) path
|
---|
44 | nothing extra is done to find the file. But, if it hasn't the PATH is
|
---|
45 | searched. If not found the .EXE extention is eventually (if not present)
|
---|
46 | added to the filename and the PATH is researched. Then the Kernel is
|
---|
47 | called, DOSIQAPPTYPE. DOSIQAPPTYPE does a farcall to w_QAppType which in
|
---|
48 | turn thunks to the 32-bit loader function LDRQAppType. (Note that the
|
---|
49 | LDR-prefix is in capital letters. This could be understood as this is an
|
---|
50 | officially exported function from the Loader subsystem.
|
---|
51 | <p>
|
---|
52 |
|
---|
53 |
|
---|
54 |
|
---|
55 | ";
|
---|
56 | TekstEnd();
|
---|
57 |
|
---|
58 |
|
---|
59 |
|
---|
60 |
|
---|
61 |
|
---|
62 | /*
|
---|
63 | * Standard stuff.
|
---|
64 | */
|
---|
65 |
|
---|
66 | require "07-ColumnTwoFooter.php3";
|
---|
67 | require "08-News.php3";
|
---|
68 | require "09-ContentsTitle.php3";
|
---|
69 |
|
---|
70 | Odin32DBWriteContents();
|
---|
71 |
|
---|
72 | require "10-EndOfContent.php3";
|
---|
73 | require "11-NetlabsContact.php3";
|
---|
74 |
|
---|
75 | $Kada=date ("j M Y", filemtime(__file__));
|
---|
76 | require "12-OdinBanner.php3";
|
---|
77 |
|
---|
78 | require "13-Closing.php3";
|
---|
79 |
|
---|
80 |
|
---|
81 |
|
---|
82 |
|
---|
83 | ?>
|
---|