📄 csdn_文档中心_vxd例程:消息框(vxd教程5).htm
字号:
color=#cccccc>MsgTitle</FONT></FONT></FONT></B> <BR><B><FONT
face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> xor esi,esi</FONT></FONT></FONT></B>
<BR><B><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> xor edx,edx</FONT></FONT></FONT></B>
<BR><B><FONT face=Arial,Helvetica><FONT size=-1><FONT
color=#cccccc> </FONT><FONT color=#ffcc33>VxDCall
</FONT><FONT color=#cccccc>SHELL_Message</FONT></FONT></FONT></B>
<BR><B><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> ret</FONT></FONT></FONT></B>
<BR><B><FONT face=Arial,Helvetica><FONT size=-1><FONT
color=#ffcc33>EndProc </FONT><FONT
color=#cccccc>OnVMCreate</FONT></FONT></FONT></B></BLOCKQUOTE><FONT
face=Arial,Helvetica><FONT size=-1><FONT
color=#cccccc>我们用</FONT><B><FONT
color=#ffff99>BeginProc</FONT></B><FONT color=#cccccc>和
</FONT><B><FONT color=#ffff99>EndProc</FONT></B><FONT
color=#cccccc>宏来创建<B><FONT
color=#ffff99>OnVMCreate</FONT></B>。OnVMCreate函数把调用</FONT><B><FONT
color=#ffff99>SHELL_Message</FONT></B><FONT
color=#cccccc>服务所需要的参数放到寄存器里面去。因为我们要在系统虚拟机上显示消息框,所以不能使用ebx中的值(ebx包含了在创建的虚拟机的句柄,而我们要的是系统虚拟机的句柄)。于是,我们用另一个VMM服务,</FONT><B><FONT
color=#ffff99>Get_Sys_VM_Handle</FONT></B><FONT
color=#cccccc>来得到系统虚拟机的虚拟机句柄。我们分别把消息的地址和消息框标题的地址放在ecx和edi里面。我们不需要知道客户的反应,所以我们把esi和edx置零。当每个参数都在相应的寄存器内后,我们就调用</FONT><B><FONT
color=#ffff99> SHELL_Message </FONT></B><FONT
color=#cccccc>来显示消息框。</FONT></FONT></FONT>
<BLOCKQUOTE><B><FONT face=Arial,Helvetica><FONT size=-1><FONT
color=#ffcc33>BeginProc </FONT><FONT
color=#cccccc>OnVMClose</FONT></FONT></FONT></B> <BR><B><FONT
face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> mov ecx,OFFSET32
VMDestroyed</FONT></FONT></FONT></B> <BR><B><FONT
face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> jmp CommonCode</FONT></FONT></FONT></B>
<BR><B><FONT face=Arial,Helvetica><FONT size=-1><FONT
color=#ffcc33>EndProc</FONT><FONT color=#cccccc>
OnVMClose</FONT></FONT></FONT></B></BLOCKQUOTE><FONT
face=Arial,Helvetica><FONT size=-1><B><FONT
color=#ffff99>OnVMClose</FONT></B><FONT
color=#cccccc>OnVMClose函数本身是很简单的。因为它要使用的代码和</FONT><B><FONT
color=#ffff99>OnVMCreate</FONT></B><FONT
color=#cccccc>相同,所以它在用另一个消息的地址初始化ecx后,就转到</FONT><B><FONT
color=#ffff99>OnVMCreate</FONT></B><FONT
color=#cccccc>中的代码去了。</FONT></FONT></FONT>
<H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT
size=+0>改变定义文件(.def)</FONT></FONT></FONT></H3>
<BLOCKQUOTE><B><TT><FONT color=#cccccc><FONT size=-1>VxD
MESSAGE</FONT></FONT></TT></B><TT></TT>
<P><B><TT><FONT color=#cccccc><FONT
size=-1>SEGMENTS</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_LPTEXT CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_LTEXT CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_LDATA CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_TEXT CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_DATA CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
CONST CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_TLS CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_BSS CLASS
'LCODE' PRELOAD
NONDISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_LMGTABLE CLASS 'MCODE'
PRELOAD NONDISCARDABLE IOPL</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_LMSGDATA CLASS 'MCODE'
PRELOAD NONDISCARDABLE IOPL</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_IMSGTABLE CLASS 'MCODE' PRELOAD
DISCARDABLE IOPL</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_IMSGDATA CLASS 'MCODE'
PRELOAD DISCARDABLE IOPL</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_ITEXT CLASS
'ICODE' DISCARDABLE</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_IDATA CLASS
'ICODE' DISCARDABLE</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_PTEXT CLASS
'PCODE' NONDISCARDABLE</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_PMSGTABLE CLASS 'MCODE'
NONDISCARDABLE IOPL</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_PMSGDATA CLASS 'MCODE'
NONDISCARDABLE IOPL</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_PDATA CLASS
'PDATA' NONDISCARDABLE
SHARED</FONT></FONT></TT></B> <BR><B><TT><FONT color=#cccccc><FONT
size=-1>
_STEXT CLASS
'SCODE' RESIDENT</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_SDATA CLASS
'SCODE' RESIDENT</FONT></FONT></TT></B>
<BR><B><TT><FONT color=#cccccc><FONT size=-1>
_DBOSTART CLASS 'DBOCODE' PRELOAD
NONDISCARDABLE CONFORMING</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_DBOCODE CLASS 'DBOCODE' PRELOAD
NONDISCARDABLE CONFORMING</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_DBODATA CLASS 'DBOCODE' PRELOAD
NONDISCARDABLE CONFORMING</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_16ICODE CLASS '16ICODE' PRELOAD
DISCARDABLE</FONT></FONT></TT></B> <BR><B><TT><FONT
color=#cccccc><FONT size=-1>
_RCODE CLASS
'RCODE'</FONT></FONT></TT></B><TT></TT>
<P><B><TT><FONT color=#cccccc><FONT
size=-1>EXPORTS</FONT></FONT></TT></B><TT></TT>
<P><B><TT><FONT color=#cccccc><FONT size=-1>
MESSAGE_DDB @1</FONT></FONT></TT></B></P></BLOCKQUOTE>
<H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT
size=+0>汇编过程:</FONT></FONT></FONT></H3><B><FONT
face=Arial,Helvetica><FONT color=#cccccc><FONT size=-1> ml
-coff -c -Cx -DMASM6 -DBLD_COFF -DIS_32
message.asm</FONT></FONT></FONT></B>
<P><B><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1> link -VxD -def:message.def
message.obj</FONT></FONT></FONT></B>
<H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT size=+0>VxD
的安装:
<LI><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1>把message.VxD放到\system目录下。</FONT></FONT></FONT>
<LI><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1>在system.ini文件里的[386enh]部分里加上如下的一行:</FONT></FONT></FONT>
<OL><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1>device=message.VxD</FONT></FONT></FONT> </OL>
<LI><FONT face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1>重启你的计算机。</FONT></FONT></FONT>
<H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT
size=+0>测试这个VxD:</FONT></FONT></FONT></H3><FONT
face=Arial,Helvetica><FONT color=#cccccc><FONT
size=-1>打开一dos窗口,你会看到弹出的消息框,显示“A VM is
created."。当你关闭一个dos窗口,又会弹出一个消息框显示“A VM is
destroyed"。</FONT></FONT></FONT>
<BR></FONT></FONT></FONT></H3><BR></LI></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文档中心_VxD例程:消息框(Vxd教程5).files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=556">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文档中心_VxD例程:消息框(Vxd教程5).files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -