📄 vxd-c6.htm
字号:
font-family:Wingdings;}
@list l1
{mso-list-id:1053851393;
mso-list-type:hybrid;
mso-list-template-ids:1132996874 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F06C;
mso-level-tab-stop:21.0pt;
mso-level-number-position:left;
margin-left:21.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:1741172563;
mso-list-type:hybrid;
mso-list-template-ids:2133372370 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:\F06C;
mso-level-tab-stop:21.0pt;
mso-level-number-position:left;
margin-left:21.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
@list l3
{mso-list-id:1872566727;
mso-list-type:hybrid;
mso-list-template-ids:1007564172 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:\F06C;
mso-level-tab-stop:21.0pt;
mso-level-number-position:left;
margin-left:21.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=navy lang=ZH-CN link=blue vlink=purple style='tab-interval:21.0pt;
text-justify-trim:punctuation'>
<div class=Section1 style='layout-grid:15.6pt'>
<h1 align=center style='text-align:center'><span lang=EN-US style='font-size:
24.0pt;mso-bidi-font-size:22.0pt;font-family:Arial;color:#FFFF99'>DeviceIoControl</span><span
style='font-size:24.0pt;mso-bidi-font-size:22.0pt;font-family:宋体;mso-ascii-font-family:
Arial;mso-hansi-font-family:Arial;color:#FFFF99'>接口</span><span lang=EN-US
style='font-size:24.0pt;mso-bidi-font-size:22.0pt;font-family:Arial;color:#FFFF99'><o:p></o:p></span></h1>
<p class=MsoPlainText>在这一节中我们将要关于学习动态<span lang=EN-US>VXD,特别是如何创建,加载和使用。</span></p>
<p class=MsoPlainText>点击<span lang=EN-US style='color:#FFFF99'><a
href="files\shellmsg.zip">这里</a></span>下载例子</p>
<h3><span lang=EN-US style='font-size:13.5pt;mso-bidi-font-size:16.0pt;
color:#66FFFF'>VxD</span><span style='font-size:13.5pt;mso-bidi-font-size:16.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";color:#66FFFF'>接口</span><span
lang=EN-US style='font-size:13.5pt;mso-bidi-font-size:16.0pt;color:#66FFFF'><o:p></o:p></span></h3>
<p class=MsoPlainText><span lang=EN-US>VxD总共提供了4种接口。</span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l0 level1 lfo2;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-family:Wingdings'>l<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span lang=EN-US style='color:#66FF99'>VxD services</span><span
lang=EN-US> <span style='mso-tab-count:5'> </span></span><span
lang=EN-US style='color:#66FF99'>VxD服务</span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l0 level1 lfo2;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-family:Wingdings'>l<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span lang=EN-US style='color:#66FF99'>V86 Interface</span><span
lang=EN-US> <span style='mso-tab-count:5'> </span></span><span
lang=EN-US style='color:#66FF99'>V86接口</span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l0 level1 lfo2;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-family:Wingdings'>l<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span lang=EN-US style='color:#66FF99'>Protected-mode
(PM) Interface</span><span lang=EN-US> <span style='mso-tab-count:1'> </span></span><span
style='color:#66FF99'>保护模式接口</span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l0 level1 lfo2;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-family:Wingdings'>l<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><span lang=EN-US style='color:#66FF99'>Win32
DeviceIoControl Interface</span><span lang=EN-US> </span><span lang=EN-US
style='color:#66FF99'>Win32设备输入输出控制接口</span></p>
<p class=MsoPlainText>我们已经知道了<span lang=EN-US>VxD服务,V86和保护模式接口是由V86和保护模式程序调用的。因为V86和保护模式程序是16位的,我们不能在Win32应用程序中使用那两种接口。在Windows
95中,微软给Win32应用程序加了另外一个接口所以Win32应用程序可以调用VxD的服务:</span><span lang=EN-US
style='color:#FFFF99'>DeviceIoControl</span>接口(<span style='color:#FFFF99'>设备输入输出控制</span>接口)</p>
<h3><span lang=EN-US style='font-size:13.5pt;mso-bidi-font-size:16.0pt;
color:#66FFFF'>DeviceIoControl</span><span style='font-size:13.5pt;mso-bidi-font-size:
16.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";color:#66FFFF'>接口</span><span
lang=EN-US style='font-size:13.5pt;mso-bidi-font-size:16.0pt;color:#66FFFF'><o:p></o:p></span></h3>
<p class=MsoPlainText>简单的说,<span lang=EN-US style='color:#FFFF99'>DeviceIoControl</span>接口是一种为<span
lang=EN-US>Win32程序准备的调用VxD内部函数的方法。不要混淆</span><span lang=EN-US style='color:
#FFFF99'>DeviceIoControl</span>接口调用函数和用<span lang=EN-US>VxD服务调用函数,这两种方法是不一样的。比如说,</span><span
lang=EN-US style='color:#FFFF99'>DeviceIoControl</span><span lang=EN-US>
function1 也许和Vxd service1是不一样的。你应给把DeviceIoControl函数作为一种只为Win32应用程序提供的单独的函数。</span></p>
<h3><span style='font-size:12.0pt;mso-bidi-font-size:16.0pt;font-family:宋体;
mso-ascii-font-family:"Times New Roman"'>在</span><span lang=EN-US
style='font-size:12.0pt;mso-bidi-font-size:16.0pt'>Win32</span><span
style='font-size:12.0pt;mso-bidi-font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman"'>程序方面:</span><span lang=EN-US style='font-size:12.0pt;
mso-bidi-font-size:16.0pt'><o:p></o:p></span></h3>
<p class=MsoPlainText>首先用<span lang=EN-US style='color:#FFFF99'>CreateFile</span>来打开<span
lang=EN-US>/加载一个VxD。如果调用成功的话,VxD将会创建/加再到内存中并且</span><span lang=EN-US
style='color:#FFFF99'>CreateFile</span>把<span lang=EN-US>VxD的句柄返回到eax中。</span></p>
<p class=MsoPlainText>接着你调用<span lang=EN-US style='color:#FFFF99'>DeviceIoControl</span><span
lang=EN-US>API函数来选择要运行的函数。</span><span lang=EN-US style='color:#FFFF99'>DeviceIoControl</span>函数遵循下面的语法:</p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'>DeviceIoControl PROTO<span style="mso-spacerun:
yes"> </span>hDevice:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>dwIoControlCode:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>lpInBuffer:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>nInBufferSize:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span><span style="mso-spacerun:
yes"> </span>lpOutBuffer:DWORD,\
<o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>nOutBufferSize:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>lpBytesReturned:DWORD,\ <o:p></o:p></span></b></p>
<p class=MsoPlainText><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial'><span style="mso-spacerun:
yes">
</span>lpOverlapped:DWORD <o:p></o:p></span></b></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l1 level1 lfo4;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Wingdings'>l<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial;color:#66FFFF'>hDevice</span></b><span lang=EN-US
style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Arial'> </span><span
style='mso-hansi-font-family:Arial'>是从<span lang=EN-US>CreateFile返回的VxD句柄。</span></span><span
lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Arial'><o:p></o:p></span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l1 level1 lfo4;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-family:Wingdings'>l<span style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial;color:#66FFFF'>dwIoControlCode</span></b><span
style='mso-hansi-font-family:Arial'>是用来制定<span lang=EN-US>VxD将要进行的操作。你应该在你要选用那种操作之前得到可能的dwIoControlCode值得列表。</span></span><span
lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
<p class=MsoPlainText style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:
l1 level1 lfo4;tab-stops:list 21.0pt'><![if !supportLists]><span lang=EN-US
style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Wingdings'>l<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]><b><span lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;font-family:Arial;color:#66FFFF'>lpInBuffer</span></b><span
style='mso-ascii-font-family:Arial;mso-hansi-font-family:Arial'>是包含了</span><span
lang=EN-US style='font-family:Arial'>VxD</span><span style='mso-ascii-font-family:
Arial;mso-hansi-font-family:Arial'>完成</span><span lang=EN-US style='font-family:
Arial'>dwIoControlCode</span><span style='mso-ascii-font-family:Arial;
mso-hansi-font-family:Arial'>所制定操作的数据的缓冲区地址。如果这个操作不需要数据,你可以传为</span><span
lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Arial;
color:#FFFF99'>NULL</span><span style='font-size:10.0pt;mso-bidi-font-size:
10.5pt;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial'>。</span><span
lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:10.5pt;font-family:Arial'><o:p></o:p></span></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -