| 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 |
|
|---|