<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/syf442" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/syf442" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 19 Mar 2010 01:37:00 GMT</lastBuildDate><title>syf442</title><description>吾将上下而求索。。。</description><link>http://blog.csdn.net/blogrss.aspx?username=syf442</link><item><title>_MSC_VER</title><link>http://blog.csdn.net/syf442/archive/2010/03/19/5395146.aspx</link><description>#if _MSC_VER &gt; 1000 这是微软的预编译控制。 在_MSC_VER较小时，它对一些东西的支持与新版不同。_MSC_VER分解如下： MS：Microsoft（微软）的简写 C：MSC就是Microsoft出的C编译器。 VER：Version（版本）的简写。 全部加在一起就是：Microsoft的C编译器的版本 #if _MSC_VER &gt; 1000//如果MFC的版本大于4.2（可能是4.2，具体4.2与1000之间如何转换不清楚）#pragma once//这个头文件只编译一次，为了类库的兼容性考虑，像以前的C的类库#endif // _MSC_VER &gt; 1000//结束条件编译  　　_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值（参见扩展阅读中的参考文献2的链接）　　MS VC++ 9.0 _MSC_VER = 1500　　MS VC++&lt;img src=&quot;http://www1.feedsky.com/t1/343536456/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/03/19/5395146.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/343536456/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/343536456/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Mar 2010 09:37:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/03/19/5395146.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/03/19/5395146.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/343536456/5584442</fs:itemid></item><item><title>C 中 extern 和 static</title><link>http://blog.csdn.net/syf442/archive/2010/03/10/5365190.aspx</link><description>C语言中：extern ：extern可以置于变量或者函数前，以标示变量或函数的定义在别的文件中，在一个文件中用到的extern这些变量或函数是外来的，不是本文件定义的，提示编译器遇到此变量和函数时在其他模块中寻找其定义。注意，只有其他文件中的全局变量才能被其他文件所extern。      至于 extern“C”的用法， 一般认为属于 C++的范畴。extern是C/C++语言中表明函数和全局变量作用范围（可见性）的关键字，但在C++中为了兼容面向过程语言（C），扩展了extern功能。&lt;img src=&quot;http://www1.feedsky.com/t1/342957568/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/03/10/5365190.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957568/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957568/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 10 Mar 2010 15:29:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/03/10/5365190.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/03/10/5365190.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957568/5584442</fs:itemid></item><item><title>WRK环境搭建</title><link>http://blog.csdn.net/syf442/archive/2010/03/01/5336374.aspx</link><description>（1）将wrk-v1.2文件夹下的所有文件夹复制到虚拟机中一个目录，如 C:\wrk-v1.2（2）设置环境变量，以使用nmake命令：path \wrk-v1.2\tools\x86;%path%  可直接输入path查看结果（3）进入 cd C:\wrk-v1.2\base\ntos 目录，进行编译：nmake -nologo x86=      在编译之前，首先确定系统中包含个VC7运行库文件，否则过程中可能出现找不到msvcr71.dll 和 MSVCP71.DLL ，。将这两个VC7运行库文件复制到\WINDOWS\system32\下即可。（4）编译过程大约需要 2 分钟，编译的结果是在\wrk-v1.2\base\ntos\BUILD\EXE目录下生成内核可执行文件和符号文件等。将上述目录中的 WRK 内核文件 wrkx86.exe 复制到\WINDOWS\system32\目录下。 （5）在 X86 平台上，WRK内核需要多处理器版本的硬件抽象层h&lt;img src=&quot;http://www1.feedsky.com/t1/342957584/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/03/01/5336374.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957584/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957584/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 01 Mar 2010 16:55:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/03/01/5336374.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/03/01/5336374.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957584/5584442</fs:itemid></item><item><title>关于SSDT HOOK 取得索引号（function2hook + 1 ）</title><link>http://blog.csdn.net/syf442/archive/2010/02/25/5324550.aspx</link><description>当我们HOOK SSDT 时，要做的很重要的事情就是要获得NtXXX函数在SSDT中的索引号，以方便替换和调用。取得索引号会使用宏：#define HOOK_INDEX(function2hook) *(PULONG)((PUCHAR)function2hook + 1)但为什么要function2hook +1 呢 ？一定要注意本质问题，这里的function2hook不是我们想要HOOK的NtXXX，而是对应的ZwXXX。我们反汇编下ZwXXX，以ZwWriteFile为例：0: kd&gt; u nt!ZwWriteFilent!ZwWriteFile:805022a4 b812010000      mov     eax,112h805022a9 8d542404        lea     edx,[esp+4]805022ad 9c              pushfd805022ae 6a08            push   &lt;img src=&quot;http://www1.feedsky.com/t1/342957614/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/25/5324550.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957614/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957614/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 25 Feb 2010 09:48:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/25/5324550.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/25/5324550.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957614/5584442</fs:itemid></item><item><title>SSDT详解</title><link>http://blog.csdn.net/syf442/archive/2010/02/23/5318855.aspx</link><description>SSDT — System Services Descriptor Table ，系统服务描述符表（是一个整体的概念），共有四个表。（明确说是四个SST (System Server Table，系统服务表)类型的数组）：typedef struct _SERVICE_DESCRIPTOR_TABLE {   SYSTEM_SERVICE_TABLE ntoskrnl;    // ntoskrnl.exe ( native api )   SYSTEM_SERVICE_TABLE win32k;      // win32k.sys (gdi/user support)   SYSTEM_SERVICE_TABLE Table3;      // not used   SYSTEM_SERVICE_TABLE Table4;      // not used } SYSTEM_DESCRIPTOR_TABLE, *PSYSTEM_DESCRIPTOR_TABLE,&lt;img src=&quot;http://www1.feedsky.com/t1/342957634/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/23/5318855.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957634/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957634/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 23 Feb 2010 10:53:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/23/5318855.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/23/5318855.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957634/5584442</fs:itemid></item><item><title>获取文件大小</title><link>http://blog.csdn.net/syf442/archive/2010/02/20/5312350.aspx</link><description>获取文件大小，使用到_stat结构体，用_stat函数取得数据。struct _stat ST; _stat(&quot;C:\\xxx.iso&quot;, &amp;ST); ST.st_size 为文件大小(Byte)。当文件超过4GB时，char filesize[20] = {0};struct _stati64 ST; ::_stati64(&quot;C:\\xxx.iso&quot;, &amp;ST); _i64toa(ST.st_size, filesize , 10); //_i64toa将数字转换成字符串用户观察，第三个参数为将数字以10进制格式输出成字符串。以上在VC6 sp6 编译通过。&lt;img src=&quot;http://www1.feedsky.com/t1/342957681/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/20/5312350.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957681/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957681/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sat, 20 Feb 2010 10:00:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/20/5312350.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/20/5312350.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957681/5584442</fs:itemid></item><item><title>详解NTFS文件系统</title><link>http://blog.csdn.net/syf442/archive/2010/02/09/5301416.aspx</link><description>&lt;br /&gt;微软Windows操作系统中，有两种文件系统：FAT文件系统和NTFS文件系统。在本文中，我会详细介绍微软的NTFS文件系统。NTFS稳定性和安全性&lt;br /&gt;      微软做的很多事情都让他们受尽责备。但是它做的一件非常好的事情就是创建了一个强壮、高效而且可扩展的文件系统。NTFS（New Technology File System）文件系统最早出现在1993年的Windows NT操作系统中，它的出现大幅度地提高了微软原来的FAT文件系统的性能。NTFS是一个日志文件系统，这意味着除了向磁盘中写入信息，该文件系统还会为所发生的所有改变保留一份日志。这一功能让NTFS文件系统在发生错误的时候（比如系统崩溃或电源供应中断）更容易恢复，也让这一系统更加强壮。在这些情况下，NTFS能够很快恢复正常，而且不会丢失任何数据。在很少出错情况下，微软表示只要大概不到1%的概率才你需要运行CHKDSK修复程序来对磁盘卷进行维护。
NTFS另一个引人注目的特点，即良好的安全性是NTFS成为Windows网络中最常用的文件系统的最主要的原因。NTFS的安全系统非常强大，可以对文件系统中&lt;img src=&quot;http://www1.feedsky.com/t1/342957721/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/09/5301416.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957721/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957721/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 09 Feb 2010 10:08:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/09/5301416.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/09/5301416.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957721/5584442</fs:itemid></item><item><title>Understanding Execution Context for NT Drivers</title><link>http://blog.csdn.net/syf442/archive/2010/02/03/5284652.aspx</link><description>The NT Insider, Vol 3, Issue 2, Apr 1996 | Published: 15-Apr-96| Modified: 31-Oct-02An important aspect of NT standard kernel mode drivers is the &quot;context&quot; in which particular driver functions execute. Traditionally of concern mostly to file systems developers, writers of all types NT kernel mode drivers can benefit from a solid understanding of execution context. When used with care, understanding execution context can enable the creation of higher performance, lower overhead&lt;img src=&quot;http://www1.feedsky.com/t1/342957545/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/03/5284652.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957545/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957545/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 03 Feb 2010 13:17:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/03/5284652.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/03/5284652.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957545/5584442</fs:itemid></item><item><title>Mapping NT Status Error Codes to Win32 Error Codes</title><link>http://blog.csdn.net/syf442/archive/2010/02/03/5284327.aspx</link><description>&lt;br /&gt;When a kernel-mode driver is called because of an input/output (I/O) request from the Win32 subsystem, the status code returned by the kernel- mode driver will be translated to the status code's corresponding Win32 error code. The following table shows the mapping from the Windows NT status codes to Win32 error codes.WINDOWS NT STATUS CODE                  WIN32 ERROR CODE
------------------------------------------------------------------
STATUS_DATATYPE_MISALIGNMENT            ERROR_NOA&lt;img src=&quot;http://www1.feedsky.com/t1/342957735/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/02/03/5284327.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957735/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957735/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 03 Feb 2010 11:32:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/02/03/5284327.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/02/03/5284327.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957735/5584442</fs:itemid></item><item><title>VC 之条件编译</title><link>http://blog.csdn.net/syf442/archive/2010/01/26/5258665.aspx</link><description>&lt;br /&gt;预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了，就是对源文件进行编译前，先对预处理部分进行处理，然后对处理后的代码进行编译。这样做的好处是，经过处理后的代码，将会变的很精短。&lt;br /&gt;　　 关于预处理命令中的文件包含（#include），宏定义（#define），书上已经有了详细的说明，在这里就不详述了。这里主要是对条件编译（#ifdef,#else,#endif,#if等）进行说明。以下分3种情况：&lt;br /&gt;情况1：&lt;br /&gt;　　#ifdef _XXXX&lt;br /&gt;　　...程序段1...&lt;br /&gt;　#else&lt;br /&gt;　　...程序段2...&lt;br /&gt;　　#endif&lt;br /&gt;这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译；否则对程序段2进行编译。&lt;br /&gt;　　例： &lt;br /&gt;　　#define NUM&lt;br /&gt;　　.............&lt;br /&gt;　　.............&lt;br /&gt;　　.............&lt;br /&gt;　　#ifdef NUM&lt;br /&gt;　　 printf(&quot;之前NU&lt;img src=&quot;http://www1.feedsky.com/t1/342957737/syf442/csdn.net/s.gif?r=http://blog.csdn.net/syf442/archive/2010/01/26/5258665.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/syf442/342957737/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/syf442/342957737/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 26 Jan 2010 17:19:00 +0800</pubDate><author>syf442</author><guid isPermaLink="false">http://blog.csdn.net/syf442/archive/2010/01/26/5258665.aspx</guid><dc:creator>syf442</dc:creator><fs:srclink>http://blog.csdn.net/syf442/archive/2010/01/26/5258665.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/syf442/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/syf442/~7475509/342957737/5584442</fs:itemid></item></channel></rss>