VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/Support/win/SUPDrvA-win.asm@ 51770

Last change on this file since 51770 was 51770, checked in by vboxsync, 10 years ago

Merged in iprt++ dev branch.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1; $Id: SUPDrvA-win.asm 51770 2014-07-01 18:14:02Z vboxsync $
2;; @file
3; VirtualBox Support Driver - Windows NT specific assembly parts.
4;
5
6;
7; Copyright (C) 2006-2014 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17; The contents of this file may alternatively be used under the terms
18; of the Common Development and Distribution License Version 1.0
19; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20; VirtualBox OSE distribution, in which case the provisions of the
21; CDDL are applicable instead of those of the GPL.
22;
23; You may elect to license modified versions of this file under the
24; terms and conditions of either the GPL or the CDDL or both.
25;
26
27;*******************************************************************************
28;* Header Files *
29;*******************************************************************************
30%include "iprt/asmdefs.mac"
31
32BEGINCODE
33%ifdef RT_ARCH_AMD64
34 %define _DbgPrint DbgPrint
35%endif
36extern _DbgPrint
37
38%if 1 ; see alternative in SUPDrv-win.cpp
39;;
40; Kind of alias for DbgPrint
41export NAME(SUPR0Printf)
42BEGINPROC SUPR0Printf
43 jmp _DbgPrint
44ENDPROC SUPR0Printf
45%endif
46
47
48%ifdef RT_ARCH_X86
49;
50; Faking up ZwQueryVirtualMemory on XP and W2K3 where it's not exported.
51; Using ZwQueryVolumeInformationFile as a helper.
52;
53extern IMPNAME(ZwQueryVolumeInformationFile@20)
54
55BEGINPROC supdrvNtQueryVirtualMemory_Xxx
56 %macro NtQueryVirtualMemorySyscall 1
57 GLOBALNAME supdrvNtQueryVirtualMemory_ %+ %1
58 mov eax, %1
59 jmp supdrvNtQueryVirtualMemory_Jump
60 %endm
61 NtQueryVirtualMemorySyscall 0xAF
62 NtQueryVirtualMemorySyscall 0xB0
63 NtQueryVirtualMemorySyscall 0xB1
64 NtQueryVirtualMemorySyscall 0xB2
65 NtQueryVirtualMemorySyscall 0xB3
66 NtQueryVirtualMemorySyscall 0xB4
67 NtQueryVirtualMemorySyscall 0xB5
68 NtQueryVirtualMemorySyscall 0xB6
69 NtQueryVirtualMemorySyscall 0xB7
70 NtQueryVirtualMemorySyscall 0xB8
71 NtQueryVirtualMemorySyscall 0xB9
72 NtQueryVirtualMemorySyscall 0xBA
73 NtQueryVirtualMemorySyscall 0xBB
74 NtQueryVirtualMemorySyscall 0xBC
75 NtQueryVirtualMemorySyscall 0xBD
76 NtQueryVirtualMemorySyscall 0xBE
77
78supdrvNtQueryVirtualMemory_Jump:
79 mov edx, IMP2(ZwQueryVolumeInformationFile@20)
80 lea edx, [edx + 5]
81 jmp edx
82ENDPROC supdrvNtQueryVirtualMemory_Xxx
83
84%endif
85
86%ifdef RT_ARCH_AMD64
87;
88; Faking up ZwQueryVirtualMemory on XP64 and W2K3-64 where it's not exported.
89; The C code locates and verifies the essentials in ZwRequestWaitReplyPort.
90;
91extern NAME(g_pfnKiServiceLinkage)
92extern NAME(g_pfnKiServiceInternal)
93BEGINPROC supdrvNtQueryVirtualMemory_Xxx
94 %macro NtQueryVirtualMemorySyscall 1
95 GLOBALNAME supdrvNtQueryVirtualMemory_ %+ %1
96 mov eax, %1
97 jmp supdrvNtQueryVirtualMemory_Jump
98 %endm
99
100 NtQueryVirtualMemorySyscall 0x1F
101 NtQueryVirtualMemorySyscall 0x20
102 NtQueryVirtualMemorySyscall 0x21
103 NtQueryVirtualMemorySyscall 0x22
104 NtQueryVirtualMemorySyscall 0x23
105
106supdrvNtQueryVirtualMemory_Jump:
107 cli
108 mov r10, rsp ; save call frame pointer.
109 mov r11, [NAME(g_pfnKiServiceLinkage) wrt rip]
110 push 0
111 push 0
112 push r10 ; call frame pointer (incoming rsp).
113 pushfq
114 push 10h
115 push r11 ; r11 = KiServiceLinkage (ret w/ unwind info)
116 jmp qword [NAME(g_pfnKiServiceInternal) wrt rip]
117ENDPROC supdrvNtQueryVirtualMemory_Xxx
118%endif
119
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette