<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_jasonBlog</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/26972/rss</id><updated>2011-08-26T03:50:27Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/26972/rss"/><entry><id>http://www.cnblogs.com/jasononline/archive/2011/08/26/2154217.html</id><title type="text">Delphi调用C#dll的问题</title><summary type="text">转载: 近来，因工作需要，必须解决Delphi7写的主程序调用C#写的dll的问题。在网上一番搜索，又经过种种试验，最终证明有以下两种方法可行： 编写C#dll的方法都一样，首先在vs2005中创建一个“类库”项目TestDll，using System.Runtime.InteropServices; namespace TestDll{ public interface I TestClass { void YourProcedure(stirng param1); } [ClassInterface(ClassInterfaceType.None)] public class Test.</summary><published>2011-08-26T03:50:00Z</published><updated>2011-08-26T03:50:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2011/08/26/2154217.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2011/08/26/2154217.html"/><content type="html">&lt;div&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;转载:&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;近来，因工作需要，必须解决Delphi7写的主程序调用C#写的dll的问题。在网上一番搜索，又经过种种试验，最终证明有以下两种方法可行：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 编写C#dll的方法都一样，首先在vs2005中创建一个&amp;#8220;类库&amp;#8221;项目TestDll，&lt;br /&gt;using System.Runtime.InteropServices; &lt;br /&gt;namespace TestDll&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; interface&amp;nbsp; I TestClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void YourProcedure(stirng param1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp; [ClassInterface(ClassInterfaceType.None)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;&amp;nbsp; class TestClass:I TestClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void YourProcedure (stirng param1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; //自己的代码&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;完成之后，设置项目的属性&amp;#8220;Make assembly COM-Visible&amp;#8221;为选中状态。编译之后得到 TestClass.dll,把此dll放到Delphi主程序目录下。打开vs2005自带的工具&amp;#8220;Visual Studio 2005命令提示&amp;#8221;，输入&lt;br /&gt;Regasm&amp;nbsp; 路径\TestClass.dll 向系统注册此dll。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;Delphi程序调用此Dll方式有两种：&lt;br /&gt;一、打开vs2005自带的工具&amp;#8220;Visual Studio 2005命令提示&amp;#8221;，输入 TlbExp&amp;nbsp; 路径\TestClass.dll 得到一个TestClass.tlb 文件。打开Delphi，选择&amp;#8220;Project&amp;#8221;--&amp;#8220;imp&lt;wbr&gt;ort type library&amp;#8221;找到刚才的TestClass.tlb,点击 CreateUnit，向delphi中引入一个com接口。&lt;br /&gt;delphi 调用代码如下：&lt;br /&gt;&amp;nbsp; var aClass: TestClass; &lt;br /&gt;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aClass : =&amp;nbsp; CoTestClass.Create;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aClass. YourProcedure ('参数'); &lt;br /&gt;&amp;nbsp; end; &lt;br /&gt;二、不需生成tlb文件，仿照调用Excel的方式。代码如下：&lt;br /&gt;&amp;nbsp;var aClass: Variant;&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; aClass:= CreateOleObject('TestDll.TestClass');&lt;br /&gt;&amp;nbsp; aClass.YourProcedure ('参数');&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;以上两种方法都可以调用成功，其中调用regasm.exe向系统注册dll是必需的。第一种方法需要生成tlb文件，并引入delphi中，操作繁琐，但可以看到接口的定义。第二种方法操作简单，但看不到接口的定义。 &lt;br /&gt;============================================================== &lt;br /&gt;本人用第二种方法已正常实现功能，但DLL中一些自动创建的方法无法在外部直接调用，需要DLL准备特定的接口函数&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;本文来自CSDN博客，转载请标明出处：&lt;a href="http://blog.csdn.net/genispan/archive/2009/06/24/4294487.aspx"&gt;&lt;font color="#c4a30c"&gt;http://blog.csdn.net/genispan/archive/2009/06/24/4294487.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;最近公司进行产品改造，由于存在部分代码是用delphi写的Com+需要调用C#写的Dll方法，经过网上一些搜索和摸索，调用已经OK。但是至于两者之间的事务问题还需要用到的朋友深入研究。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;现在来说一下调用过程：【本地调试通过，环境是XP，delphi7.0,vs2005】&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先在vs2005中创建一Class Library项目，添加2个cs文件，代码分别为：&lt;br /&gt;&amp;nbsp;声明一个接口&lt;br /&gt;&amp;nbsp;1&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_5117490398" /&gt;using&amp;nbsp;System;&lt;br /&gt;&amp;nbsp;2&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_4687136630" /&gt;using&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&amp;nbsp;3&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_1949321710" /&gt;using&amp;nbsp;System.Text;&lt;br /&gt;&amp;nbsp;4&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_1879369838" /&gt;namespace&amp;nbsp;beep_Class&lt;br /&gt;&amp;nbsp;5{&lt;br /&gt;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;interface&amp;nbsp;IGO&lt;br /&gt;&amp;nbsp;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;GO();&lt;br /&gt;&amp;nbsp;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;10&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/ykocU9FvH0ZipGIyZQIx_A==/2783787519669477589.jpg" __1314330461287__="ev_2458499727" /&gt;}实现该接口&lt;br /&gt;&amp;nbsp;1&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_8435959020" /&gt;using&amp;nbsp;System.Runtime.InteropServices;&lt;br /&gt;&amp;nbsp;2&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_9385065317" /&gt;namespace&amp;nbsp;beep_Class&lt;br /&gt;&amp;nbsp;3{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ClassInterface(ClassInterfaceType.None)]&lt;br /&gt;&amp;nbsp;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;class&amp;nbsp;Class1:IGO&lt;br /&gt;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;7&lt;br /&gt;&amp;nbsp;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;string&amp;nbsp;GO()&lt;br /&gt;&amp;nbsp;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;"aaaaabbbb";&lt;br /&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;13&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/ykocU9FvH0ZipGIyZQIx_A==/2783787519669477589.jpg" __1314330461287__="ev_7005260844" /&gt;}然后在生成类库之前设置一下该项目的属性，如下图所示：&lt;br /&gt;&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/LrMi_G2XKcSukQxuqeAubw==/3321686200163579095.jpg" __1314330461287__="ev_2315160053" /&gt;&lt;br /&gt;注意红线标示的部分。&lt;br /&gt;然后对此编译成功的DLL【beep_Class.dll】进行处理，打开vs2005自带的命令行工具。输入 tlbexp beep_Class.dll&lt;br /&gt;生成 beep_Class.tlb文件。&lt;br /&gt;&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_4725870971" /&gt;元宝注解：&lt;br /&gt;&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_4141055171" /&gt;这一步有个更好的方法，即在VS2005中DLL的&amp;#8220;项目属性&amp;#8221;下&amp;#8220;生成事件&amp;#8221;添加&amp;#8220;生成后事件命令行&amp;#8221;：&lt;br /&gt;&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_6475710341" /&gt;"C:\Program&amp;nbsp;Files\Microsoft&amp;nbsp;Visual&amp;nbsp;Studio&amp;nbsp;8\SDK\v2.0\Bin\tlbexp"&amp;nbsp;"$(TargetPath)"&lt;br /&gt;下一步是打开delphi7，新建一个Application，在Form上增加一Button。然后选择Project下的，imp&lt;wbr&gt;ort type library，把刚才生成的Tlb文件【beep_Class.tlb】添加进来，然后点击 CreateUnit就ok了&lt;br /&gt;delphi中的Button事件代码如下：&lt;br /&gt;&amp;nbsp;1&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_5380389224" /&gt;procedure&amp;nbsp;TForm1.Button1Click(Sender:&amp;nbsp;TObject);&lt;br /&gt;&amp;nbsp;2&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_2756093536" /&gt;var&lt;br /&gt;&amp;nbsp;3&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_9319693723" /&gt;&amp;nbsp;&amp;nbsp;co:Class1;&lt;br /&gt;&amp;nbsp;4&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_2645229735" /&gt;&amp;nbsp;&amp;nbsp;a:string;&lt;br /&gt;&amp;nbsp;5&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_4287406152" /&gt;begin&lt;br /&gt;&amp;nbsp;6&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_6681328112" /&gt;&amp;nbsp;&amp;nbsp;co:=&amp;nbsp;CoClass1.Create;&lt;br /&gt;&amp;nbsp;7&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_1916110523" /&gt;&amp;nbsp;&amp;nbsp;a:=co.GO();&lt;br /&gt;&amp;nbsp;8&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_4381186480" /&gt;&amp;nbsp;&amp;nbsp;showmessage(a);&lt;br /&gt;&amp;nbsp;9&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_5062740551" /&gt;end;&lt;br /&gt;10&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/c_dx2n5VmiXTmZSbUR-rvA==/1377820011000625464.jpg" __1314330461287__="ev_8069934697" /&gt;end.编译通过，运行结果如下图：&lt;br /&gt;&lt;img alt="Delphi调用Cdll的问题 - 炎火 - 千里之行始于足下" src="http://img.ph.126.net/hcMFWHUgPRT5wKvT4BT74g==/3321686200163579097.jpg" __1314330461287__="ev_2549590926" /&gt;&lt;br /&gt;注意：运行的时候要把Beep_Class.dll放在程序目录中。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/jasononline/aggbug/2154217.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jasononline/archive/2011/08/26/2154217.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/07/21/1247884.html</id><title type="text">Windows驱动开发,几个BLOG值得经常看看</title><summary type="text">对于从事Windows驱动开发的朋友，或者是对Windows内核感兴趣的朋友，以下几个BLOG值得经常看看！1，Kernel Mustard by Steve Dispensa link: http://kernelmustard.com/category/ddk/他以前的BLOG地址为：http://msmvps.com/blogs/kernelmustard/default.aspx2，Lar...</summary><published>2008-07-21T10:07:00Z</published><updated>2008-07-21T10:07:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/07/21/1247884.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/07/21/1247884.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/07/18/1245710.html</id><title type="text">IIS的ISAPI接口简介</title><summary type="text">ISAPI（Internet Server Application Programming Interface）作为一种可用来替代CGI的方法，是由微软和Process软件公司联合提出的Web服务器上的API标准。ISAPI与Web服务器结合紧密，功能强大，能够获得大量的信息，因此利用ISAPI可以开发出灵活高效的Web服务器增强程序。由于ISAPI程序与Web服务器的关系，使得ISAPI接口在安...</summary><published>2008-07-18T01:34:00Z</published><updated>2008-07-18T01:34:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/07/18/1245710.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/07/18/1245710.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231778.html</id><title type="text">文件过滤系统驱动开发Filemon学习笔记 </title><summary type="text">WINDOWS文件过滤系统驱动开发，可用于硬盘还原，防病毒，文件安全防护，文件加密等诸多领域。而掌握核心层的理论及实践，对于成为一名优秀的开发人员不可或缺。WINDOWS文件过滤系统驱动开发的两个经典例子，Filemon与SFilter，初学者在经过一定的理论积累后，对此两个例子代码的研究分析，会是步入驱动开发殿堂的重要一步，相信一定的理论积累以及贯穿剖析理解此两个例程后，就有能力开始进行文件过滤...</summary><published>2008-06-28T12:58:00Z</published><updated>2008-06-28T12:58:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231778.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231778.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231777.html</id><title type="text">Windows平台内核级文件访问</title><summary type="text">Windows平台内核级文件访问作者：baiyuanfan (baiyuanfan@163.com)日期：2.1,20061.背景在windows平台下，应用程序通常使用API函数来进行文件访问，创建，打开，读写文件。从kernel32的CreateFile/ReadFile/WriteFile函数，到本地系统服务，再到FileSystem及其FilterDriver，经历了很多层次。在每个层次上...</summary><published>2008-06-28T12:56:00Z</published><updated>2008-06-28T12:56:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231777.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231777.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231776.html</id><title type="text">Windows文件系统过滤驱动开发教程(11)</title><summary type="text">11.文件和目录的生成打开，关闭与删除 我们已经分析了读，写与读类似。文件系统还有其他的操作。比如文件或目录的打开（打开已经存在的或者创建新的）,关闭。文件或目录的移动，删除。 实际上FILE_OBJECT并不仅仅指文件对象。在windows文件系统中，目录和文件都是用FileObject来抽象的。这里产生一个问题，对于一个已经有的FileObject,我如何判断这是一个目录还是一个文件呢? 对于...</summary><published>2008-06-28T12:53:00Z</published><updated>2008-06-28T12:53:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231776.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231776.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231775.html</id><title type="text">Windows文件系统过滤驱动开发教程(10)</title><summary type="text">Windows文件系统过滤驱动开发教程 注: 有任何问题与建议请加QQ16191935,邮箱MFC_Tan_Wen@163.com 工作忙，好久没有来过了，请大家谅解。 10 自己发送Irp完成读请求 关于这个有一篇文档解释得很详细，不过我认为示例的代码有点太简略了，这篇文档在IFS所附带的OSR文档中，请自己寻找。 为何要自己发送Irp?在一个文件过滤驱动中，如果你打算读写文件，可以试用ZwRe...</summary><published>2008-06-28T12:53:00Z</published><updated>2008-06-28T12:53:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231775.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231775.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231774.html</id><title type="text">Windows文件系统过滤驱动开发教程(9)</title><summary type="text">Windows文件系统过滤驱动开发教程 注: 有任何问题与建议请加QQ16191935,邮箱MFC_Tan_Wen@163.com 9 完成读操作 除非是一个完整的文件系统，完成读操作似乎是不必要的。过滤驱动一般只需要把请求交给下层的实际文件系统来完成。但是有时候比如加解密操作，我希望从下层读到数据，解密后，我自己来完成这一IRP请求。 这里要谈到IRP的minor function code.以...</summary><published>2008-06-28T12:52:00Z</published><updated>2008-06-28T12:52:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231774.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231774.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231773.html</id><title type="text">Windows文件系统过滤驱动开发教程(8)</title><summary type="text">Windows文件系统过滤驱动开发教程 注: 有任何问题与建议请加QQ16191935,邮箱MFC_Tan_Wen@163.com 8 终于绑定了Volume,读操作的捕获与分析 上文已经讲到绑定Volume之前的关键操作.我们一路逢山开路,逢水架桥,相信你从中也学到了驱动开发的基本方法.以后的工作,无非灵活运用这些方法而 已.前边已经举出过绑定FS CDO的操作.那么现在绑定Volume,无非照...</summary><published>2008-06-28T12:52:00Z</published><updated>2008-06-28T12:52:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231773.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231773.html"/></entry><entry><id>http://www.cnblogs.com/jasononline/archive/2008/06/28/1231771.html</id><title type="text">Windows文件系统过滤驱动开发教程(7)</title><summary type="text">Windows文件系统过滤驱动开发教程 7.IRP完成函数,中断级,如何超越中断级别的限制 先讨论一下Volumne设备是如何得到的.首先看以下几个函数: // ------------------wdf.h 中的内容 ------------------------- typedef VPB wd_vpb; _inline wd_vpb * wd_dev_vbp(wd_dev *dev) { r...</summary><published>2008-06-28T12:50:00Z</published><updated>2008-06-28T12:50:00Z</updated><author><name>jasonCao</name><uri>http://www.cnblogs.com/jasononline/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231771.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jasononline/archive/2008/06/28/1231771.html"/></entry></feed>
