1 | A overview of the win32k device driver.
|
---|
2 | ----------------------------------------
|
---|
3 |
|
---|
4 | Notation:
|
---|
5 | ---------
|
---|
6 |
|
---|
7 | --> <routine name> (<source module>)
|
---|
8 | A Call to the given routine. The procedings of that routine
|
---|
9 | continues at the next indent level.
|
---|
10 | <-- [return value description]
|
---|
11 | <some state description>:
|
---|
12 | <action>
|
---|
13 | Identifing when and what happens.
|
---|
14 |
|
---|
15 |
|
---|
16 | Init packet - $elf
|
---|
17 | -----------------------
|
---|
18 | _strategyAsm0 (devFirst.asm)
|
---|
19 | _strategyAsm (devFirst.asm)
|
---|
20 | --> strategy(PRPH pRpH, unsigned short usDev) (d16strat.c)
|
---|
21 | init - dev 0:
|
---|
22 | --> dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut) (d16init.c)
|
---|
23 | <-- (STATUS_DONE - can't fail)
|
---|
24 | <-- (fwd)
|
---|
25 | <-- (fwd)
|
---|
26 |
|
---|
27 |
|
---|
28 | Init packet - $win32k
|
---|
29 | ----------------------
|
---|
30 | _strategyAsm1 (devFirst.asm)
|
---|
31 | _strategyAsm (devFirst.asm)
|
---|
32 | --> strategy(PRPH pRpH, unsigned short usDev) (d16strat.c)
|
---|
33 | init - dev 1:
|
---|
34 | --> dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut) (d16init.c)
|
---|
35 | --> ProbeKrnl (probkrnl.c)
|
---|
36 | <Opens $elf>
|
---|
37 | <issues IO Ctrl to $elf - D16_IOCTL_GETKRNLINFO>
|
---|
38 | <Opens $elf>
|
---|
39 | <issues IO Ctrl to $elf - D16_IOCTL_VERIFYIMPORTTAB>
|
---|
40 | <-- (NO_ERROR - may fail)
|
---|
41 | <Opens $elf>
|
---|
42 | <issue IO Ctrl to $elf - D16_IOCTL_RING0INIT>
|
---|
43 | <-- (STATUS_DONE - may fail)
|
---|
44 | <-- (fwd)
|
---|
45 | <-- (fwd)
|
---|
46 |
|
---|
47 |
|
---|
48 | D16_IOCTL_GETKERNELINFO packet
|
---|
49 | ------------------------------
|
---|
50 | _strategyAsm0 (devFirst.asm)
|
---|
51 | _strategyAsm (devFirst.asm)
|
---|
52 | --> strategy(PRPH pRpH, unsigned short usDev) (d16strat.c)
|
---|
53 | gen IO-Ctrl - dev 0:
|
---|
54 | --> dev0GenIOCtl(PRP_GENIOCTL pRp) (d16strat.c)
|
---|
55 | D16_IOCTL_GETKERNELINFO:
|
---|
56 | --> CallGetKernelInfo32(ULONG addressKrnlInfoBuf) (devfirst.asm)
|
---|
57 | --> GetKernelInfo32(PKRNLINFO pKrnlInfo) (d32init.c)
|
---|
58 | --> GetOS2KrnlMTE(void) (devfirst.asm)
|
---|
59 | <--
|
---|
60 | <--
|
---|
61 | <--
|
---|
62 | <--
|
---|
63 | <--
|
---|
64 | <--
|
---|
65 |
|
---|
66 | D16_IOCTL_VERIFYIMPORTTAB packet
|
---|
67 | --------------------------------
|
---|
68 | _strategyAsm0 (devFirst.asm)
|
---|
69 | _strategyAsm (devFirst.asm)
|
---|
70 | --> strategy(PRPH pRpH, unsigned short usDev) (d16strat.c)
|
---|
71 | gen IO-Ctrl - dev 0:
|
---|
72 | --> dev0GenIOCtl(PRP_GENIOCTL pRp) (d16strat.c)
|
---|
73 | D16_IOCTL_VERIFYIMPORTTAB:
|
---|
74 | --> CallVerifyImportTab32(void) (devlast.c)
|
---|
75 | --> VerifyImportTab32(void) (d32init.c)
|
---|
76 | --> GetOS2KrnlMTE(void) (devfirst.asm)
|
---|
77 | <--
|
---|
78 | --> interpretFunctionProlog32(..)
|
---|
79 | <--
|
---|
80 | --> interpretFunctionProlog16(..)
|
---|
81 | <--
|
---|
82 | <--
|
---|
83 | <--
|
---|
84 | <--
|
---|
85 | <--
|
---|
86 | <--
|
---|
87 |
|
---|
88 |
|
---|
89 | D16_IOCTL_RING0INIT packet
|
---|
90 | ---------------------------
|
---|
91 | _strategyAsm0 (devFirst.asm)
|
---|
92 | _strategyAsm (devFirst.asm)
|
---|
93 | --> strategy(PRPH pRpH, unsigned short usDev) (d16strat.c)
|
---|
94 | gen IO-Ctrl - dev 0:
|
---|
95 | --> dev0GenIOCtl(PRP_GENIOCTL pRp) (d16strat.c)
|
---|
96 | D16_IOCTL_RING0INIT:
|
---|
97 | --> R0Init16(PRP_GENIOCTL pRp) (d16init.c)
|
---|
98 | --> CallR0Init32(LIN pRpInit) (devlast.asm)
|
---|
99 | --> R0Init32(RP32INIT *pRpInit) (d32init.c)
|
---|
100 | --> heapInit(unsigned cbSize) (malloc.c)
|
---|
101 | ...
|
---|
102 | <--
|
---|
103 | --> ldrInit(void) (ldr.cpp)
|
---|
104 | ...
|
---|
105 | <--
|
---|
106 | --> procInit(void) (d32init.c)
|
---|
107 | ...
|
---|
108 | <--
|
---|
109 | <--
|
---|
110 | <--
|
---|
111 | <--
|
---|
112 | <--
|
---|
113 | <--
|
---|
114 | <--
|
---|
115 |
|
---|
116 |
|
---|