- Timestamp:
- Jul 8, 2001, 4:53:52 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/dev32/d32hlp.asm
r5204 r6216 1 ; $Id: d32hlp.asm,v 1. 5 2001-02-20 05:00:53bird Exp $1 ; $Id: d32hlp.asm,v 1.6 2001-07-08 02:53:52 bird Exp $ 2 2 ; 3 3 ; d32hlp - 32-bit Device Driver Helper Function. … … 103 103 104 104 105 ; 106 ; Jump table used by D32Hlp_GetDOSVar 107 ; 108 DosVarThunkTab LABEL DWORD 109 dd 0 ; 0 - Reserved 110 dd FLAT:Load1600Thunk ; 1 - GIS 111 dd FLAT:Load1616Thunk ; 2 - LIS 112 dd 0 ; 3 - Reserved 113 dd FLAT:Load1616 ; 4 - VectorSDF 114 dd FLAT:Load1616 ; 5 - VectorReboot 115 dd FLAT:Load1616 ; 6 - VectorMSATS 116 dd FLAT:ThunkPtr ; 7 - YieldFlag (Resched) 117 dd FLAT:ThunkPtr ; 8 - TCYieldFlag (TCResched) 118 dd FLAT:ThunkPtr ; 9 - DOSTable (yeah, reserved) 119 dd FLAT:Load1616 ; a - VectorDEKKO (yeah, reserved) 120 dd FLAT:ThunkPtr ; b - CodePgBuff 121 dd FLAT:Load1616 ; c - VectorRIPL 122 dd FLAT:ThunkPtr ; d - InterruptLevel 123 dd FLAT:ThunkPtr ; e - DevClassTables 124 dd FLAT:ThunkPtr ; f - DMQS_Sel 125 dd FLAT:ThunkPtr ;10 - APMInfo 126 dd FLAT:LoadWord ;11 - APM_Length (length of above structure) 127 DosVarThunkTabSize equ ($ - DosVarThunkTab) / 4 128 129 105 130 ;PVOID D32HLPCALL D32Hlp_GetDOSVar(ULONG ulVarNumber, /* eax */ 106 131 ; ULONG ulVarMember); /* edx */ 132 ; 133 ; Note that we do post processing of the value....! 134 ; 107 135 D32Hlp_GetDOSVar proc near 108 push bx 136 ASSUME DS:FLAT, ES:NOTHING 137 push ebx 138 push es 139 push ds 140 push ds 141 pop es ; paranoia 142 ASSUME es:FLAT 143 push eax 109 144 mov ecx, edx 110 145 mov dl, DevHlp_GetDOSVar … … 112 147 Thunk32_GetDOSVar:: 113 148 jc Error 149 mov ds, ax 150 pop eax ; Index... 151 cmp eax, DosVarThunkTabSize 152 jg Error 153 and ebx, 0000ffffh ; (ds:ebx is ptr to be processed) 154 jmp es:DosVarThunkTab[eax*4] 155 156 ; Load Word at ds:bx 157 LoadWord:: 158 xor eax, eax 159 mov ax, word ptr [bx] 160 jmp Finished 161 162 ; Load selector at ds:bx and thunk it. 163 Load1600Thunk:: 164 xor eax, eax 165 mov ax, word ptr [bx] 166 rol ax, 16 167 jmp ThunkIt 168 169 ; Load 16:16 ptr at ds:bx and thunk it. 170 Load1616Thunk:: 171 mov eax, dword ptr [ebx] 172 jmp ThunkIt 173 174 ; Load 16:16 ptr at ds:bx and return it. 175 Load1616:: 176 mov eax, dword ptr [ebx] 177 jmp Finished 178 179 ; Thunk the ds:bx ptr. 180 ThunkPtr:: 181 mov ax, ds 114 182 shl eax, 16 115 mov bx, ax 116 xchg eax, ebx 183 mov ax, bx 184 185 ; Thunks 16:16 ptr in eax 186 ThunkIt:: 187 pop ds 117 188 call D32Hlp_VirtToLin 118 jmp Finished 189 jmp Finished2 119 190 120 191 Error: 121 xor eax, eax 122 123 Finished: 124 pop bx 192 add esp, 4 193 xor eax, eax 194 195 Finished: 196 pop ds 197 Finished2: 198 pop es 199 pop ebx 125 200 ret 126 201 D32Hlp_GetDOSVar endp 202 127 203 128 204
Note:
See TracChangeset
for help on using the changeset viewer.