<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Windows 7_博客园|网站分类</title><subtitle type="text">代码改变世界</subtitle><id>http://feed.cnblogs.com/blog/sitecateogry/win7/rss</id><updated>2012-02-10T17:51:56Z</updated><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cate/win7/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/sitecateogry/win7/rss"/><entry><id>http://www.cnblogs.com/MrDing/archive/2012/02/10/2344847.html</id><title type="text">uCOS任务中的OSTCBDly</title><summary type="text"/><published>2012-02-10T03:30:00Z</published><updated>2012-02-10T03:30:00Z</updated><author><name>Mr.Ding++</name><uri>http://www.cnblogs.com/MrDing/</uri></author><link rel="alternate" href="http://www.cnblogs.com/MrDing/archive/2012/02/10/2344847.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/MrDing/archive/2012/02/10/2344847.html"/><content type="html">&lt;p&gt;例：应用程序的 2 个任务使用了延时函数 OSTimeDly () 进行延时，在任务 MyTask 中还调用了函数 OSTimeDlyResume () 取消了任务 YourTask 的延时（为了观察任务YourTask 的延时时间的变化，在钩子函数 OSTimeTickHook () 输出了任务 YourTask在延时时间到时的时钟节拍数）。&lt;/p&gt;&#xD;
&lt;p&gt;OSTimeTickHook钩子函数程序如下&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;#if&lt;/span&gt; OS_CPU_HOOKS_EN &amp;gt; 0 &lt;br /&gt;&lt;br /&gt;INT8U d=&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;INT8U l=&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;INT8U n=&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;INT8U m=&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;    &lt;br /&gt;INT16U tt=&lt;span style="color: #800080;"&gt;1&lt;/span&gt;;                                &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;时钟计数器&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt; s[&lt;span style="color: #800080;"&gt;5&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  OSTimeTickHook (&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(OSTCBPrioTbl[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]-&amp;gt;OSTCBDly == &lt;span style="color: #800080;"&gt;1&lt;/span&gt;)    &lt;br /&gt;    {            &lt;br /&gt;            sprintf(s,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%5d&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,tt);&lt;br /&gt;            PC_DispStr(d,l+&lt;span style="color: #800080;"&gt;4&lt;/span&gt;,s,DISP_BGND_BLACK+DISP_FGND_WHITE );&lt;br /&gt;            d+=&lt;span style="color: #800080;"&gt;6&lt;/span&gt;;        &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    if(OSTCBPrioTbl[2]-&amp;gt;OSTCBDly == 0)    &lt;br /&gt;    {            &lt;br /&gt;            sprintf(s,"%5d",tt);&lt;br /&gt;            PC_DispStr(d,l+6,s,DISP_BGND_BLACK+DISP_FGND_WHITE );&lt;br /&gt;            d+=6;        &lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;    tt+=&lt;span style="color: #800080;"&gt;1&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;#endif&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;经过我调试发现当(OSTCBPrioTbl[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]-&amp;gt;OSTCBDly == &lt;span style="color: #800080;"&gt;1&lt;/span&gt;)&amp;nbsp;&amp;nbsp;时，正常显示节拍数，当(OSTCBPrioTbl[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]-&amp;gt;OSTCBDly == &lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&amp;nbsp;&amp;nbsp;时，则不显示节拍数。&lt;/p&gt;&#xD;
&lt;p&gt;所以显然，在OSTimeTickHook函数中OSTCBPrioTbl[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]-&amp;gt;OSTCBDly不为0。&lt;/p&gt;&#xD;
&lt;p&gt;但是仔细一想在OSTimeDlyResume () 中&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;INT8U OSTimeDlyResume  (INT8U  prio )&lt;br /&gt;{&lt;br /&gt;      &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; ( prio  &amp;gt;= OS_LOWEST_PRIO) &lt;br /&gt;      {&lt;br /&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; (OS_PRIO_INVALID);&lt;br /&gt;      }&lt;br /&gt;      OS_ENTER_CRITICAL();&lt;br /&gt;      ptcb  = (OS_TCB  * ) OSTCBPrioTbl[prio ];                   &lt;br /&gt;      &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; ( ptcb  != (OS_TCB  * )&lt;span style="color: #800080;"&gt;0&lt;/span&gt;) &lt;/pre&gt;&#xD;
&lt;pre&gt;{&lt;br /&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; ( ptcb -&amp;gt; OSTCBDly  != &lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&lt;/pre&gt;&#xD;
&lt;pre&gt;{                         &lt;br /&gt;             ptcb -&amp;gt; OSTCBDly   = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;;                           &lt;br /&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (( ptcb -&amp;gt; OSTCBStat  &amp;amp; OS_STAT_SUSPEND) == OS_STAT_RDY)&lt;/pre&gt;&#xD;
&lt;pre&gt;{  &lt;br /&gt;                  OSRdyGrp    |=  ptcb -&amp;gt; OSTCBBitY ;             &lt;br /&gt;                  OSRdyTbl[ptcb -&amp;gt;OSTCBY] |=  ptcb -&amp;gt; OSTCBBitX ;&lt;br /&gt;                  OS_EXIT_CRITICAL();&lt;br /&gt;                  OS_Sched ();                              &lt;br /&gt;            } &lt;/pre&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;/pre&gt;&#xD;
&lt;pre&gt;{&lt;br /&gt;                  OS_EXIT_CRITICAL();                       &lt;br /&gt;           }&lt;br /&gt;           &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; (OS_NO_ERR);&lt;br /&gt;        }&lt;/pre&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;/pre&gt;&#xD;
&lt;pre&gt;{&lt;br /&gt;            OS_EXIT_CRITICAL();&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; (OS_TIME_NOT_DLY);                      &lt;br /&gt;       }&lt;br /&gt;  }&lt;br /&gt;  OS_EXIT_CRITICAL();&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; (OS_TASK_NOT_EXIST);                            &lt;/pre&gt;&#xD;
&lt;pre&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;可以看出在OSTCBPrioTbl[prio]-&amp;gt;OSTCBDly&amp;nbsp;被赋值为0，且进行了一次任务调度，那为什么上面的结果又不对了。那就得看void&amp;nbsp;&amp;nbsp; OSTimeTick&amp;nbsp; (void)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OSTimeTick ( &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; )&lt;br /&gt;{&lt;br /&gt;    OS_TCB *ptcb; &lt;br /&gt;&lt;br /&gt;    OSTimeTickHook();                                      &lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;    ptcb = OSTCBList;                                      &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;时钟节拍到来时，将控制块双向链表的第一个控制块取出（并不是节拍之前运行的任务）&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; (ptcb-&amp;gt;OSTCBPrio != OS_IDLE_PRIO) &lt;/pre&gt;&#xD;
&lt;pre&gt;{                                                      &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;空闲任务处于控制块双向链表的最后一个，如果取出的控制块为空闲任务的控制块，那么已经取到最后一个了，就结束&lt;br /&gt;&lt;br /&gt;       &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OS_ENTER_CRITICAL();&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (ptcb-&amp;gt;OSTCBDly != &lt;span style="color: #800080;"&gt;0&lt;/span&gt;) &lt;/pre&gt;&#xD;
&lt;pre&gt;{                         &lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (--ptcb-&amp;gt;OSTCBDly == &lt;span style="color: #800080;"&gt;0&lt;/span&gt;) &lt;/pre&gt;&#xD;
&lt;pre&gt;{                   &lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!(ptcb-&amp;gt;OSTCBStat &amp;amp; OS_STAT_SUSPEND)) &lt;/pre&gt;&#xD;
&lt;pre&gt;{                                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;检查任务是否处于强制挂起状态，如果是，那再挂起一个时钟节拍，否则就将它就绪&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;                        OSRdyGrp               |= ptcb-&amp;gt;OSTCBBitY;&lt;br /&gt;&lt;br /&gt;                    OSRdyTbl[ptcb-&amp;gt;OSTCBY] |= ptcb-&amp;gt;OSTCBBitX;&lt;br /&gt;               }&lt;/pre&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;pre&gt;{                                       &lt;/pre&gt;&#xD;
&lt;pre&gt;ptcb-&amp;gt;OSTCBDly = &lt;span style="color: #800080;"&gt;1&lt;/span&gt;;                       &lt;/pre&gt;&#xD;
&lt;pre&gt;}                                              &lt;/pre&gt;&#xD;
&lt;pre&gt;}&lt;br /&gt;       }&lt;br /&gt;       ptcb = ptcb-&amp;gt;OSTCBNext;                           &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;下一个任务控制块&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;    //&lt;/span&gt;&lt;span style="color: #008000;"&gt;OS_EXIT_CRITICAL();&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  }&lt;/pre&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OS_ENTER_CRITICAL();                                   &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  OSTime++;                                              &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;节拍计数器+1&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OS_EXIT_CRITICAL();&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可见当OSTCBPrioTbl[prio]-&amp;gt;OSTCBDly=1时 在OSTimeTick函数中就已经赋值为0了，且将任务放入就绪表。&lt;/p&gt;&#xD;
&lt;p&gt;分析 当使用OSTimeDlyResume ()将任务中OSTCBPrioTbl[prio]-&amp;gt;OSTCBDly强制变为0，在进行任务调度，进入优先级高的任务后，任务中肯要使用延时函数，延时一段节拍，进行任务调度，这时候OSTCBPrioTbl[prio]-&amp;gt;OSTCBDly就不为0了，所以再进入OSTimeTick函数时，使用(OSTCBPrioTbl[&lt;span style="color: #800080;"&gt;2&lt;/span&gt;]-&amp;gt;OSTCBDly == &lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&amp;nbsp;的判断就不对了。所以就为出现上面调试的结果。&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/MrDing/aggbug/2344847.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/MrDing/archive/2012/02/10/2344847.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Hero-Qiang/archive/2012/02/07/2341426.html</id><title type="text">Win7系统分区限制破解方法（解决某些大神买了超大硬盘，但是不会分区问题）</title><summary type="text"/><published>2012-02-07T06:09:00Z</published><updated>2012-02-07T06:09:00Z</updated><author><name>英雄小强</name><uri>http://www.cnblogs.com/Hero-Qiang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Hero-Qiang/archive/2012/02/07/2341426.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Hero-Qiang/archive/2012/02/07/2341426.html"/><content type="html">&lt;p&gt;想必安装win7 已经不是什么新鲜的话题了！&lt;/p&gt;&#xD;
&lt;p&gt;然而有安装过win7的朋友一定碰到过这样的问题 ：win7安装程序创建的都是主分区，并没有创建逻辑分区的任何选项，这就造成了创建4个主分区后，剩余的空间无法继续分配的情况。&lt;/p&gt;&#xD;
&lt;p&gt;面对这种问题，应该如何解决呢？其实，我们完全可以采用win7系统自带的Diskpart命令先进行分区，然后再进行系统的安装，这样做好处有三点：&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;&lt;span  style="font-family: 微软雅黑;"&gt;&lt;span  style="color: #ff0000;"&gt;&lt;strong&gt;&lt;span &gt;首先：不用借助第三方工具；&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span  style="font-family: 微软雅黑;"&gt;&lt;span  style="color: #ff0000;"&gt;&lt;strong&gt;&lt;span &gt;其次：不产生100MB的&amp;ldquo;系统保留&amp;rdquo;分区；&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span  style="font-family: 微软雅黑;"&gt;&lt;span  style="color: #ff0000;"&gt;&lt;strong&gt;&lt;span  style="font-size: large;"&gt;&lt;span style="font-size: 16px;"&gt;最后：分区操作直接生效，不用重启计算机！哈哈哈&lt;/span&gt;&lt;img src="http://icon.zol-img.com.cn/blog/editimage/smilies/9/280.gif" alt="" border="0" /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Diskpart 是 Windows 环境下的一个命令，正常运行该命令时需要系统服务的支持，所以在纯DOs、XP内核的WinPE环境下都是不能运行的，但是在win7的预安装环境下确实可以运行的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: 微软雅黑;"&gt;&lt;span  style="font-size: large;"&gt;&lt;span  style="color: #0000ff;"&gt;教程开始&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;：&lt;img src="http://icon.zol-img.com.cn/blog/editimage/smilies/3/117.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;当安装程序运行到磁盘分区界面时，按下 &amp;ldquo; Shift+F10 &amp;rdquo;启动命令窗口；&lt;br /&gt;然后输入Diskpart 并回车，稍等便可进入 Diskpart的命令环境 （提示符为：DISKPART&amp;gt;），字此提示符下键入相应的命令便可完成磁盘的分区以及格式化操作，具体用到的命令有：List、Clean、Select、Create、Format、Exit，各命令的使用方法可以通过键入Help查看，这里不再赘述！&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span  style="color: #ffa500;"&gt;&lt;strong&gt;具体的操作流程看下 依次键入以下命令&amp;gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="color: #ffa500;"&gt;&lt;br /&gt;List Disk&amp;nbsp;&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/ 显示本机的所有磁盘 /&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Select Disk 0&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/ 选择0号磁盘（一个&lt;a style="text-decoration: underline;" href="http://detail.zol.com.cn/hard_drives_index/subcate2_list_1.html" target="_blank"&gt;硬盘&lt;/a&gt;默认为0） /&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Clean&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/ 清楚磁盘上所有的内容 /&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Create Partition Primary Size=51200&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 创建主分区 容量为50G /&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Active&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 激活主分区 /&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Format Quick&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 快速格式化分区 /&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Create Partition Extended&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 创建逻辑分区 /&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Create Partition Logical Size=51200&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 创建逻辑分区一 容量为50G /&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Foramt Quick&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/&amp;nbsp;快速格式化分区&amp;nbsp;/&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Create Partition Logical Size=153600&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/&amp;nbsp;创建逻辑分区二 容量为150G&amp;nbsp;/&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Foramt Quick&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/&amp;nbsp;快速格式化分区&amp;nbsp;/&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Create Partition Logical Size=153600&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/&amp;nbsp;创建逻辑分区三 容量为150G&amp;nbsp;/&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Foramt Quick&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/&amp;nbsp;快速格式化分区&amp;nbsp;/&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Create Partition Logical&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/&amp;nbsp;创建逻辑分区四 容量为剩余空间&amp;nbsp;/&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Foramt Quick&amp;nbsp; &lt;em&gt;&lt;span  style="color: #ff0000;"&gt;/ 快速格式化分区&amp;nbsp;/&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;&lt;em&gt;&lt;/em&gt;Exit&amp;nbsp;&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/ 退出 Diskpart /&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #ffa500;"&gt;Exit&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span  style="color: #ff0000;"&gt;&lt;em&gt;/ 退出命令提示符环境 /&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;--------------------------------------------&lt;span  style="color: #ffa500;"&gt;Note：&lt;em style="color: #ff0000;"&gt;（右侧的红色文字为注释部分）&lt;/em&gt;&lt;/span&gt;--------------------------------------------&lt;br /&gt;这时我们在点击&amp;ldquo;你想将windows安装在何处？&amp;rdquo;窗口中的刷新选项，便可看到我们刚才的分区结果，至此，整个磁盘的分区已经结束，怎样？是不是很简单呢？&lt;/p&gt;&#xD;
&lt;p&gt;其中每个盘的容量可以根据自己的需要设定。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;以上有一部分是摘自于网络&lt;/strong&gt;&lt;/span&gt;，不懂得可以加我QQ&amp;nbsp;&amp;nbsp; 659406804&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Hero-Qiang/aggbug/2341426.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Hero-Qiang/archive/2012/02/07/2341426.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Gkey55/archive/2012/02/04/2338287.html</id><title type="text">符号、特殊字符的英文读法</title><summary type="text"/><published>2012-02-04T12:27:00Z</published><updated>2012-02-04T12:27:00Z</updated><author><name>稻草客</name><uri>http://www.cnblogs.com/Gkey55/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Gkey55/archive/2012/02/04/2338287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Gkey55/archive/2012/02/04/2338287.html"/><content type="html">&lt;p align="left"&gt;&lt;strong&gt;键盘符号的英文读法&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;` backquote 反引号&lt;br /&gt;~ tilde&lt;br /&gt;! exclam&lt;br /&gt;@ at&lt;br /&gt;# numbersign,英语国家是hash，美语是pound,音乐里作sharp,如C#&lt;br /&gt;$ dollar&lt;br /&gt;% percent&lt;br /&gt;^ caret&lt;br /&gt;&amp;amp; ampersand&lt;br /&gt;* asterisk,star(美语),数学公式中作multiply&lt;br /&gt;( parenleft,opening parentheses&lt;br /&gt;) parenright,closing paretheses&lt;br /&gt;- minus;hyphen连字符,不读&lt;br /&gt;_ underscore&lt;br /&gt;+ plus&lt;br /&gt;= equal&lt;br /&gt;[ bracketleft,opening bracket&lt;br /&gt;] bracketright,closing bracket&lt;br /&gt;{ braceleft&lt;br /&gt;} braceright&lt;br /&gt;; semicolon&lt;br /&gt;: colon&lt;br /&gt;' quote&lt;br /&gt;" doublequote&lt;br /&gt;/ slash&lt;br /&gt;\ backslash 反斜杠&lt;br /&gt;| bar&lt;br /&gt;, comma&lt;br /&gt;&amp;lt; less&lt;br /&gt;&amp;gt; greater&lt;br /&gt;. period&lt;br /&gt;? question&lt;br /&gt;space 空格&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;下面是一些特殊符号的英文读法&lt;/strong&gt;&lt;strong&gt;----&lt;/strong&gt;&lt;strong&gt;主要是数学符号&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;＜&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is less than&lt;br /&gt;＞&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is more than&lt;br /&gt;≮&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is not less than &lt;br /&gt;≯&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is not more than&lt;br /&gt;&amp;le;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is less than or equal to 小于或等于号 &lt;br /&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hyphen 连字符 &lt;br /&gt;&amp;ge;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is more than or equal to 大于或等于号 &lt;br /&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apostrophe 省略号,英文中省略字符用的撇号;所有格符号&lt;br /&gt;％&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; percent &lt;br /&gt;－&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dash 破折号 &lt;br /&gt;&amp;permil;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; per mille&lt;br /&gt;&amp;infin;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infinity 无限大号 &lt;br /&gt;&amp;prop;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; varies as 与&amp;hellip;成比例 &lt;br /&gt;( )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parentheses 圆括号 &lt;br /&gt;&amp;radic;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (square) root 平方根 &lt;br /&gt;[ ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; square brackets 方括号 &lt;br /&gt;∵&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; since; because 因为 &lt;br /&gt;《 》&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; French quotes 法文引号;书名号 &lt;br /&gt;&amp;there4;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hence 所以 &lt;br /&gt;&amp;hellip;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ellipsis 省略号 &lt;br /&gt;∷&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; equals, as (proportion) 等于，成比例 &lt;br /&gt;&amp;uml;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tandem colon 双点号&lt;br /&gt;&amp;ang;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; angle 角 &lt;br /&gt;∶&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ditto 双点号&lt;br /&gt;⌒&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; semicircle 半圆 &lt;br /&gt;‖&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parallel 双线号 &lt;br /&gt;⊙&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; circle 圆 &lt;br /&gt;／&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virgule 斜线号 &lt;br /&gt;○&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; circumference 圆周&lt;br /&gt;～&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swung dash 代字号 &lt;br /&gt;△&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; triangle 三角形 &lt;br /&gt;&amp;sect;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; section; division 分节号 &lt;br /&gt;&amp;perp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; perpendicular to 垂直于 &lt;br /&gt;&amp;rarr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arrow 箭号；参见号 &lt;br /&gt;&amp;cup;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; union of 并，合集&lt;br /&gt;&amp;cap;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intersection of 交，通集 &lt;br /&gt;&amp;int;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the integral of &amp;hellip;的积分 &lt;br /&gt;&amp;plusmn;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plus or minus 正负号 &lt;br /&gt;&amp;sum;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; summation of 总和 &lt;br /&gt;&amp;times;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is multiplied by 乘号 &lt;br /&gt;&amp;deg;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; degree 度 &lt;br /&gt;&amp;divide;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is divided by 除号 &lt;br /&gt;&amp;prime;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minute 分&lt;br /&gt;&amp;Prime;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; second 秒 &lt;br /&gt;&amp;ne;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is not equal to 不等于号 &lt;br /&gt;&amp;equiv;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is equivalent to 全等于号 &lt;br /&gt;℃&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Celsius degree 摄氏度 &lt;br /&gt;≌&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is equal to or approximately equal to 等于或约等于号&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;strong&gt;一些符号的读法&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;+ plus 加号；正号 &lt;br /&gt;- minus 减号；负号 &lt;br /&gt;&amp;plusmn; plus or minus 正负号 &lt;br /&gt;&amp;times; is multiplied by 乘号 &lt;br /&gt;&amp;divide; is divided by 除号 &lt;br /&gt;＝ is equal to 等于号 &lt;br /&gt;&amp;ne; is not equal to 不等于号 &lt;br /&gt;&amp;equiv; is equivalent to 全等于号 &lt;br /&gt;≌ is equal to or approximately equal to 等于或约等于号 &lt;br /&gt;&amp;asymp; is approximately equal to 约等于号 &lt;br /&gt;＜ is less than 小于号 &lt;br /&gt;＞ is more than 大于号 &lt;br /&gt;≮ is not less than 不小于号 &lt;br /&gt;≯ is not more than 不大于号 &lt;br /&gt;&amp;le; is less than or equal to 小于或等于号 &lt;br /&gt;&amp;ge; is more than or equal to 大于或等于号 &lt;br /&gt;% per cent 百分之&amp;hellip; &lt;br /&gt;&amp;permil; per mill 千分之&amp;hellip; &lt;br /&gt;&amp;infin; infinity 无限大号 &lt;br /&gt;&amp;prop; varies as 与&amp;hellip;成比例 &lt;br /&gt;&amp;radic; (square) root 平方根 &lt;br /&gt;∵ since; because 因为 &lt;br /&gt;&amp;there4; hence 所以 &lt;br /&gt;∷ equals, as (proportion) 等于，成比例 &lt;br /&gt;&amp;ang; angle 角 &lt;br /&gt;⌒ semicircle 半圆 &lt;br /&gt;⊙ circle 圆 &lt;br /&gt;○ circumference 圆周 &lt;br /&gt;&amp;pi; pi 圆周率 &lt;br /&gt;△ triangle 三角形 &lt;br /&gt;&amp;perp; perpendicular to 垂直于 &lt;br /&gt;&amp;cup; union of 并，合集 &lt;br /&gt;&amp;cap; intersection of 交，通集 &lt;br /&gt;&amp;int; the integral of &amp;hellip;的积分 &lt;br /&gt;&amp;sum; (sigma) summation of 总和 &lt;br /&gt;&amp;deg; degree 度 &lt;br /&gt;&amp;prime; minute 分 &lt;br /&gt;〃 second 秒 &lt;br /&gt;℃ Celsius system 摄氏度&lt;/p&gt;&#xD;
&lt;p align="left"&gt;{ open brace, open curly 左花括号 &lt;br /&gt;} close brace, close curly 右花括号 &lt;br /&gt;( open parenthesis, open paren 左圆括号 &lt;br /&gt;) close parenthesis, close paren 右圆括号 &lt;br /&gt;() brakets/ parentheses 括号 &lt;br /&gt;[ open bracket 左方括号 &lt;br /&gt;] close bracket 右方括号 &lt;br /&gt;[] square brackets 方括号 &lt;br /&gt;. period, dot 句号，点 &lt;br /&gt;| vertical bar, vertical virgule 竖线 &lt;br /&gt;&amp;amp; ampersand, and, reference, ref 和，引用 &lt;br /&gt;/ slash, divide, oblique 斜线，斜杠，除号 &lt;br /&gt;// slash-slash, comment 双斜线，注释符 &lt;br /&gt;# pound 井号 &lt;br /&gt;\ backslash, sometimes escape 反斜线转义符，有时表示转义符或续行符 &lt;br /&gt;~ tilde 波浪符 &lt;br /&gt;. full stop 句号 &lt;br /&gt;, comma 逗号 &lt;br /&gt;: colon 冒号 &lt;br /&gt;; semicolon 分号 &lt;br /&gt;? question mark 问号 &lt;br /&gt;! exclamation mark (英式英语) exclamation point (美式英语) &lt;br /&gt;' apostrophe 撇号 &lt;br /&gt;- hyphen 连字号 &lt;br /&gt;-- dash 破折号 &lt;br /&gt;... dots/ ellipsis 省略号 &lt;br /&gt;" single quotation marks 单引号 &lt;br /&gt;"" double quotation marks 双引号 &lt;br /&gt;‖ parallel 双线号 &lt;br /&gt;&amp;amp; ampersand = and &lt;br /&gt;～ swung dash 代字号 &lt;br /&gt;&amp;sect; section; division 分节号 &lt;br /&gt;&amp;rarr; arrow 箭号；参见号 &lt;br /&gt;_ underscore 下划线&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Gkey55/aggbug/2338287.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Gkey55/archive/2012/02/04/2338287.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dongxiaoyu/archive/2012/02/03/2336992.html</id><title type="text">VMware虚拟机安装Mac OS X Lion</title><summary type="text"/><published>2012-02-03T06:14:00Z</published><updated>2012-02-03T06:14:00Z</updated><author><name>YamateDD</name><uri>http://www.cnblogs.com/dongxiaoyu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dongxiaoyu/archive/2012/02/03/2336992.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dongxiaoyu/archive/2012/02/03/2336992.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、准备篇&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、安装Lion所需软件、工具及镜像文件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;⑴SecurAble（检测你的CPU是否支持硬件级虚拟模式）&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意：当Hardware Virtualization为Yes或者Locked ON的时候才可以使用虚拟机，如果你的CPU支持硬件级虚拟模式但是Hardware Virtualization显示为Locked OFF，说明你未开启。重新开机按F2进入BIOS设置&amp;rarr;&amp;ldquo;Configuration&amp;rdquo;&amp;rarr;&amp;ldquo;Intel Virtual Technology&amp;rdquo;改为Enabled即可。（这个是联想Y560的设置方法，其他计算机同理）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;⑵VMware Workstation7.1.3 build-324285&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;先安装VMware Workstation7.1.3（安装到C盘，因为后面的补丁文件打在C盘的），然后重启计算机后，关闭Windows任务管理器进程选项卡里VMware相关的进程，然后把汉化包里的文件复制到VMware安装文件夹下覆盖即可。&lt;/p&gt;&#xD;
&lt;p&gt;PS：VMware Workstation 7.1.4版本未测试，成功与否尚不清楚。&lt;/p&gt;&#xD;
&lt;p&gt;注意版本号！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;⑶VMware Workstation Mac补丁&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;解压缩包，找到&amp;ldquo;windows.bat&amp;rdquo;文件，鼠标右键，以管理员身份运行即可。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://upload.chinaz.com/2011/0727/1311728184916.jpg" alt="" width="553" height="155" border="0" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;⑷VMware 成品Mac OS X Lion安装硬盘镜像（4.1GB）&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PS： 现在摆在你面前有两种选择，①如果你拥有现成的Mac OS X 系统和Mac OS X Lion的DMG或者ISO镜像，那么你可以选择提高篇（详见最后），自己制作VMware Mac OS X Lion安装硬盘镜像，可省去这4.1GB下载；②下载VMware 成品Mac OS X Lion安装硬盘镜像&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://upload.chinaz.com/2011/0727/1311728184999.jpg" alt="" width="553" height="50" border="0" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个是我自己做的Mac OS X Lion安装硬盘镜像，记住保留，以便以后重装系统用！&lt;/p&gt;&#xD;
&lt;p&gt;⑸darwin310（VMware Tools安装文件，VMware虚拟机自带的增强虚拟显卡和硬盘性能以及同步虚拟机与主机时钟的驱动程序）&lt;/p&gt;&#xD;
&lt;p&gt;⑹VMware SVGA II Display Driver v1.2.3（虚拟机显卡驱动，使得Mac OS X Lion的分辨率和主机一样，PS：主机就是你所用的系统）&lt;/p&gt;&#xD;
&lt;p&gt;（7） EnsoniqAudioPCI Sound Driver v1.0.3（虚拟机声卡驱动，使虚拟机可以和主机共享声卡）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、安装篇&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、打开VMware Workstation，新建虚拟机。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、进入新建虚拟机向导&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里选哪个都无所谓，因为后面可以更改的，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;3、选择虚拟机硬件兼容性，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;4、选择&amp;ldquo;我以后再安装操作系统&amp;rdquo;，然后下一步。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5、重要的来了，选择客户机操作系统，如果你最初的VMwareWorkstation Mac补丁成功打上了，那么选择&amp;ldquo;客户机操作系统&amp;rdquo;这里就可以选择&amp;ldquo;Apple Mac OS X&amp;rdquo;，如果不能选择，建议你重新安装虚拟机，然后打补丁。下面的版本Mac OS X Server 10.6的两者都可以选择，下一步。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6、命名虚拟机，位置建议你换个盘，毕竟放在C盘很占系统盘空间，下一步。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;7、处理器配置，下一步即可。&lt;/p&gt;&#xD;
&lt;p&gt;8、虚拟机内存，设置成2048（也就是2G），2G以内用户不建议玩虚拟机，然后下一步。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;9、网络类型，默认选择的&amp;ldquo;使用网络地址翻译（NAT）&amp;rdquo;，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;10、选择I/O控制器类型，默认选择的&amp;ldquo;LSI Logic&amp;rdquo;，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;11、选择磁盘，创建一个新的虚拟磁盘。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;12、虚拟磁盘类型，默认选择&amp;ldquo;SCSI&amp;rdquo;，注意这个虚拟设备节点SCSI（后面会提到）。&lt;/p&gt;&#xD;
&lt;p&gt;13、指定磁盘容量，默认40GB，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;14、指定磁盘文件，直接下一步。&lt;/p&gt;&#xD;
&lt;p&gt;15、完成即可。&lt;/p&gt;&#xD;
&lt;p&gt;16、别忙打开虚拟机电源，先对虚拟机进行设置。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;17、把CD/DVD（IDE）和软盘驱动器移除。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;18、然后按左下角的&amp;ldquo;添加&amp;rdquo;，选择&amp;ldquo;硬盘&amp;rdquo;，选择&amp;ldquo;使用一个已存在的虚拟磁盘&amp;rdquo;，下一步。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;19、&amp;ldquo;浏览&amp;rdquo;，找到你下载的VMware 成品Mac OS X Lion安装硬盘镜像，&amp;ldquo;完成&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意：硬盘后的虚拟设备节点SCSI，Mac OS X系统的安装必须要这个虚拟设备节点，添加CD/DVD也必须是这个虚拟设备节点。&lt;/p&gt;&#xD;
&lt;p&gt;20、虚拟机准备就绪，可以打开虚拟机电源了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;三、安装篇（二）&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、耐心等待一小会儿，就可以看见画面了，喔呵呵~~~&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、选择语言界面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3、安装Mac OS X，按&amp;ldquo;继续&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4、同意安装呗，不同意就不给你安，呵呵。&lt;/p&gt;&#xD;
&lt;p&gt;5、选择要安装的&amp;ldquo;Mac OS X&amp;rdquo;的磁盘，还记得最初分的那40G的虚拟磁盘么？因为没分区，所以下面没磁盘显示。选择左上角的实用工具，磁盘工具。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6、左边选择42.95GB VMware，右边先选&amp;ldquo;分区&amp;rdquo;，然后分区布局下拉&amp;ldquo;1个分区&amp;rdquo;即可，名称自己设置，格式默认，注意下面的&amp;ldquo;选项&amp;rdquo;，要选择默认的&amp;ldquo;GUID分区表&amp;rdquo;，最后点&amp;ldquo;应用&amp;rdquo;，确认&amp;ldquo;分区&amp;rdquo;即可。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;7、分区了就要&amp;ldquo;抹掉&amp;rdquo;一下，这个就类似于Windows系统分区了就要格式化一下。点击左边选中你分出的区，然后选择右边的&amp;ldquo;抹掉&amp;rdquo;选项卡，点&amp;ldquo;抹掉&amp;rdquo;，确认&amp;ldquo;抹掉&amp;rdquo;即可。然后点窗口左上角的红色按钮关闭窗口。&lt;/p&gt;&#xD;
&lt;p&gt;8、这下有磁盘了，选择磁盘，点&amp;ldquo;安装&amp;rdquo;即可。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;9、正在安装了，而且下面有进度，耐心等待20分钟吧，其实这个20分钟很假，由电脑性能决定，好的电脑用不到20分钟，最后一分钟要等待很久。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;10、等待安装完成会提示重新启动，注意此时赶紧关闭虚拟机！！！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;11、&amp;ldquo;编辑虚拟机设置&amp;rdquo;，移除Mac OS X Lion安装硬盘镜像，然后确定即可，启动虚拟机。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;12、熟悉的画面~~~&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;13、期待已久的欢迎界面~~~开始设置你的Mac OS X Lion吧~~~&lt;/p&gt;&#xD;
&lt;p&gt;14、默认的&amp;ldquo;中国&amp;rdquo;，继续吧，&amp;ldquo;键盘布局&amp;rdquo;选择&amp;ldquo;中文&amp;mdash;简体&amp;rdquo;然后继续，&amp;ldquo;互联网连接&amp;rdquo;，由于是虚拟机，采用的NAT本地连接的，所以继续吧，&amp;ldquo;现在不传输&amp;rdquo;（后面我会教大家设置共享的），继续，&amp;ldquo;Apple ID&amp;rdquo;如果你有就输入，没有就直接继续，&amp;ldquo;注册信息&amp;rdquo;，注意全部必填且用英文字母和数字填写，然后继续。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;15、&amp;ldquo;创建您的电脑账户&amp;rdquo;这个就类似于Windows的用户账户创建，一定要牢记你的密码，因为开机和软件安装还有终端命令都需要密码的，然后继续。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;16、&amp;ldquo;选择时区&amp;rdquo;，在地球上找到你的时区然后继续。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;17、成功了！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;18、登陆窗口注意密码大小写，别输入错误啦~~~输入完后按&amp;ldquo;回车键&amp;rdquo;即可进入桌面。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;19、恭喜进入界面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;补充：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Mac OS X Lion虚拟机完整镜像（Intel版）- 附带提供Lion DP2 &amp;amp; Xcode 4.1 DP4下载&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;下载地址列表如下：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、Mac OSX 10.7（纯净OS）-VM.rar 大小3.66G&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|Mac%20OSX%2010.7(%E7%BA%AF%E5%87%80OS)-VM.rar|3927534097|011BB970902CFFC697D68C8D1E91D978|h=2MJZUUQ7XZKBWFOX6LD7Q42HFUOK2KJD|/" target="_blank"&gt;&lt;span&gt;Mac OSX 10.7（纯净OS）-VM.rar （3.66 GB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、【显卡】【声卡】最新驱动（有全屏花屏现象的请安装）可驱动VM 2D 3D显卡&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|VMDrivers_Mac.rar|886567|CC299AFC8E74C6740D5A78A8C1A81458|h=XWIHWFR72R5AKHEZWV7WEKD5SWWK73AC|/" target="_blank"&gt;&lt;span&gt;VMDrivers_Mac.rar （865.79 KB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3、VMWare补丁（需要安装）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|macosx_guest_vmware_7.tar.gz|53504|7557028D3B7DEABA9E0C7830625E2CD8|h=3XMOSONS3FQ3MVL6DAFGFWC2CG3P4TAW|/" target="_blank"&gt;&lt;span&gt;macosx_guest_vmware_7.tar.gz （52.25 KB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4、测试CPU是否支持硬件VT的工具&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|securable.rar|104653|4779EE2EBA950FBB8B23E3E90629E89D|h=4ZDFW4OJYBR4BYQ33QUIDC54EZCVSIBT|/" target="_blank"&gt;&lt;span&gt;securable.rar （102.2 KB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5、Mac OS X Lion v10.7 11A419 DP 2原版DMG 大小3.5G&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|Mac%20OS%20X%2010.7%20Lion%20DP%202.dmg|3787041009|F3CB04B8E41023C439C7DDF0E2C3386C|h=EE7VLVKE4JBV6RYJAM2V6RPA3O5UQLZ6|/" target="_blank"&gt;&lt;span&gt;Mac OS X 10.7 Lion DP 2.dmg （3.53 GB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6、Xcode 4.1 DP2 大小 4.3G（如需DP4版本请留言给我）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="ed2k://|file|xcode_4.1_developer_preview_2.dmg|4604720066|6C8D3A7A661B46C7633E8DFBD2F3C83D|h=L2FXADMWCMKZTGRU5TE5QFUUIHFFKP2Y|/" target="_blank"&gt;&lt;span&gt;xcode_4.1_developer_preview_2.dmg （4.29 GB）&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;简介：&lt;/p&gt;&#xD;
&lt;p&gt;运行于Windows操作系统下，使用VMWare 7直接加载（VMWare7需补丁）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;此虚拟机仅适用于支持硬件虚拟化VT技术IntelCPU。&lt;/p&gt;&#xD;
&lt;p&gt;AMD CPU不能保证成功，请务必确认您的CPU为Intel系列的！&lt;/p&gt;&#xD;
&lt;p&gt;运行在PC机器Windows操作系统下的Mac OSX Lion （10.7 Build 11A390 ）虚拟机。&lt;/p&gt;&#xD;
&lt;p&gt;可以直接在Windows 7环境下通过VMWare加载虚拟机文件即可！&lt;/p&gt;&#xD;
&lt;p&gt;Mac OS X Lion为Apple最新于2011年3月发布的第一版测试预览版，增加了诸多改进和优化。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;如果要运行加载此虚拟机，需满足如下条件&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、您的内存大于等于4G。建议 安装有Windows 7 -64位版本宿主操作系统，可以调度更大内存。&lt;/p&gt;&#xD;
&lt;p&gt;2、至少为虚拟机分配2G可用内存&lt;/p&gt;&#xD;
&lt;p&gt;3、您的VMWare软件需要安装补丁（已添加到资源中，使用方法请参见readme.txt）&lt;/p&gt;&#xD;
&lt;p&gt;4、您的CPU务必为Intel CPU，并支持硬件VT技术以及64位技术&lt;/p&gt;&#xD;
&lt;p&gt;如还有其他问题，请在此留言，我来逐步调试！&lt;/p&gt;&#xD;
&lt;p&gt;此虚拟机为参照国外blog信息来安装成功的，你如果也有兴趣，可以直接移步：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.sysprobs.com/working-method-install-mac-107-lion-vmware-windows-7-intel-pc" target="_blank"&gt;&lt;span&gt;http://www.sysprobs.com/working-method-install-mac-107-lion-vmware-windows-7-intel-pc&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;【补充】&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Step 1： 请先安装VMWare 7.1.x版本（在VC中搜索可找到）&lt;/p&gt;&#xD;
&lt;p&gt;Step 2： 将macosx_guest_vmware_7.tar.gz解压缩到一个目录中（这是VMWare的补丁）&lt;/p&gt;&#xD;
&lt;p&gt;Step 3： 用系统管理员身份运行CMD.exe命令行程序，切换到macosx_guest_vmware_7.tar.gz解压缩的目录中&lt;/p&gt;&#xD;
&lt;p&gt;Step 4： 关闭所有VMWare程序，在命令行运行 Windows.bat，补丁安装完成&lt;/p&gt;&#xD;
&lt;p&gt;Step 5： 重启计算机，运行VMWare，加载下载下来的vmx文件即可运行。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;有关Xcode 4.1&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;资源中单独提供了Xcode 4.1，给需要尝试开发的同学使用，或者你需要用Xcode 4.1来打开iPad手势操作，那可以下载第三个文件，如果不需要则只需要下载前两个文件即可！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;如何修改分辨率&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看到屏幕最顶端右侧的那个黑色显示器了吗？点击它来选择分辨率。&lt;/p&gt;&#xD;
&lt;p&gt;如果找不到，就去 系统偏好设置 -》 显示器 中进行修改&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;有关root账户&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;默认情况下root账户是不启用的，并未开启。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;其中系统管理员（不是root）密码 sssssssss&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;如何在Windows和Mac OSX虚拟机中共享文件&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Step 1：打开虚拟机，选择 Options，选择Shared Folders&lt;/p&gt;&#xD;
&lt;p&gt;Step 2：选择&amp;ldquo;Always Enabled&amp;rdquo;，点击Add，选择Windows本地目录（注意不能是中文目录）&lt;/p&gt;&#xD;
&lt;p&gt;Step 3：点击 OK，启动 虚拟机即可&lt;/p&gt;&#xD;
&lt;p&gt;Step 4：进入Mac OSX后，共享目录就在桌面上，双击打开即可！&lt;/p&gt;&#xD;
&lt;p&gt;24小时供源，但由于是联通线路，可能一些电信连接的速度不是很好，请大家完成后多多供源！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;【更新-2011.3.20】&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、更新最新版VMWare - VMware-workstation-full-7.1.3-324285&lt;/p&gt;&#xD;
&lt;p&gt;2、更新测试CPU是否支持硬件VT的工具&lt;/p&gt;&#xD;
&lt;p&gt;securable&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.grc.com/securable.htm" target="_blank"&gt;&lt;span&gt;http://www.grc.com/securable.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://upload.chinaz.com/2011/0728/1311845708266.png" target="_blank"&gt;&lt;span&gt;http://upload.chinaz.com/2011/0728/1311845708955.png&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3、更新Intel官方检测CPU工具&lt;/p&gt;&#xD;
&lt;p&gt;4、更新Mac OSX 10.6.x 系统引导盘（Intel / AMD）&lt;/p&gt;&#xD;
&lt;p&gt;【更新-2011.3.25】&lt;/p&gt;&#xD;
&lt;p&gt;加入Mac OSX Lion原版安装盘，有兴趣的同学可以自行安装&lt;/p&gt;&#xD;
&lt;p&gt;【更新 - 2011.4.5】&lt;/p&gt;&#xD;
&lt;p&gt;已更新Lion DP2 &amp;amp; Xcode 4.1 DP2&lt;/p&gt;&#xD;
&lt;p&gt;【更新 - 2011.4.24】&lt;/p&gt;&#xD;
&lt;p&gt;全屏出现花屏和鼠标错位的同学，请更新下面这个最新显卡补丁&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://sourceforge.net/projects/vmsvga2/files/Display/VMsvga2_v1.2.3_Common_Installer.pkg/download" target="_blank"&gt;&lt;span&gt;http://sourceforge.net/projects/vmsvga2/files/Display/VMsvga2_v1.2.3_Common_Installer.pkg/download&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dongxiaoyu/aggbug/2336992.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dongxiaoyu/archive/2012/02/03/2336992.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BreakMind/archive/2012/01/31/2332522.html</id><title type="text">VMware Workstation 虚拟机（客户机）创建和主机共享文件夹</title><summary type="text"/><published>2012-01-30T16:29:00Z</published><updated>2012-01-30T16:29:00Z</updated><author><name>BreakMind</name><uri>http://www.cnblogs.com/BreakMind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BreakMind/archive/2012/01/31/2332522.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BreakMind/archive/2012/01/31/2332522.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在虚拟机中，我们有时候需要和本机进行数据的交互，但是我们往往为这样简单的问题而不知所措，因此会繁琐的通过网络传送数据，或者直接通过U盘这样，在本机和虚拟机之间进行数据的交互。&lt;/p&gt;&#xD;
&lt;p&gt;本文介绍一种最简单的办法，解决虚拟机和本机之间的数据交互问题。&lt;/p&gt;&#xD;
&lt;p&gt;先介绍一下我的电脑环境。主机系统是Windows 7的，thinkpad E40。在电脑上安装了虚拟机VMware Workstation ，版本是7.1.4 build-385536。在该虚拟机里面，安装的客户操作系统是Ubuntu的11.10版本的系统。我现在的目标是想在Windows 7 下用迅雷下载软件，然后转到Ubuntu下，在Ubuntu操作系统里面安装我的软件。&lt;/p&gt;&#xD;
&lt;p&gt;其步骤如下：&lt;/p&gt;&#xD;
&lt;p&gt;1、在本机下，创建指定的文件夹。我在本机的E盘下创建了Ubuntu文件夹，然后开始将其设置为共享。将光标移到该文件夹上，点击右键，选择属性。点击共享&lt;img src="http://pic002.cnblogs.com/images/2012/305054/2012013100114562.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;选择_vmware_user，注意右侧的权限级别，最好设置成&amp;ldquo;读取/写入&amp;rdquo;，以图方便。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/305054/2012013100145773.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击右下角的共享，这样我们的本机上的文件夹就已经设置好了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、设置虚拟机vmware，其具体设置参考&lt;a href="http://www.baike369.com/content/?id=1124"&gt;http://www.baike369.com/content/?id=1124&lt;/a&gt;。注意这篇文章，只看&amp;ldquo;二、在VMware虚拟机中设置共享文件夹&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;，其他部分文章我不保证没问题。&lt;/p&gt;&#xD;
&lt;p&gt;3、虚拟机设置好了之后，你开始启动你的虚拟客户操作系统Ubuntu。这时候，我们打开Ubuntu的文件系统，在&amp;ldquo;网络&amp;rdquo;里面，点击&amp;ldquo;浏览网络&amp;rdquo;，我这里有一个&amp;ldquo;windows网络&amp;rdquo;，一路点击下去后，就可以看到你之前在2中设置的文件夹，你可以直接读取里面的内容了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这样整个的虚拟机与本机的数据共享就大功告成啦！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BreakMind/aggbug/2332522.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BreakMind/archive/2012/01/31/2332522.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Rainr/archive/2012/01/21/2328046.html</id><title type="text">Windows修改注册表按键映射</title><summary type="text"/><published>2012-01-21T07:40:00Z</published><updated>2012-01-21T07:40:00Z</updated><author><name>Rainr</name><uri>http://www.cnblogs.com/Rainr/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Rainr/archive/2012/01/21/2328046.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Rainr/archive/2012/01/21/2328046.html"/><content type="html">&lt;p&gt;Scancode Map 注册表项来实现键盘按键映射。&lt;/p&gt;&#xD;
&lt;p&gt;位于注册表的：&lt;/p&gt;&#xD;
&lt;p&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\&amp;nbsp;下新建一个二进制值项： &amp;nbsp;"Scancode Map"&lt;/p&gt;&#xD;
&lt;p&gt;这个项目可实现对键盘按键的映射。这里映射的意思可理解为&amp;ldquo;替换&amp;rdquo;，可将任意一键替换成其它键。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;[项目格式]&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;em&gt;以16进制表示，更分为五个部分，每个逗号之间都为一个字节。&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;"&lt;span style="color: #ff0000;"&gt;Scancode Map&lt;/span&gt;" =&amp;nbsp;&lt;span style="color: #808000;"&gt;00,00,00,00,00,00,00,00,&lt;/span&gt; &amp;nbsp; &lt;span style="color: #008000;"&gt;02,00,00,00,&lt;/span&gt; &amp;nbsp; &lt;span style="color: #0000ff;"&gt;01,00,&amp;nbsp;02,00,&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style="color: #666699;"&gt;00,00,00,00&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;8个字节。 这是版本信息号。照例写就好。&lt;/li&gt;&#xD;
&lt;li&gt;4个字节。 这是映射键的总数。按照二进制的读写规则，低位在左，高位在右。02 00 00 00 这个数实际就是：00 00 00 02 。从 02 开始，一个映射键是 02 ，两个是03 ，依次递加，十个是 0B 。&lt;/li&gt;&#xD;
&lt;li&gt;2个字节。 表示替换后按键的&amp;rdquo;扫描码&amp;ldquo;。如：ESC 键的扫描码是 01 ，所以就表示 01 00 。再如 左Ctrl键扫描码是 1D 00, 而右Ctrl键是 1D E0 。&lt;/li&gt;&#xD;
&lt;li&gt;2个字节。 表示原按键的&amp;rdquo;扫描码&amp;ldquo;。格式同上。&lt;/li&gt;&#xD;
&lt;li&gt;以四个 00 结束。&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;[键盘扫描码]&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;em&gt;以十六进制表示，分两部份，0X后面两个数是扫描码，最后两个数是 ASCII 码（可忽略）。如　0x011b &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ESC　扫描码是01。&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12px;"&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000080;"&gt;&lt;strong&gt;扫描码 &amp;nbsp; &amp;nbsp;键&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;0X011B ESC &lt;br /&gt;0X3B00 F1 &lt;br /&gt;0X3C00 F2 &lt;br /&gt;0X3D00 F3 &lt;br /&gt;0X3E00 F4 &lt;br /&gt;0X3F00 F5 &lt;br /&gt;0X4000 F6 &lt;br /&gt;0X4100 F7 &lt;br /&gt;0X4200 F8 &lt;br /&gt;0X4300 F9 &lt;br /&gt;0X4400 F10&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;主键盘区:&lt;/strong&gt; &lt;br /&gt;0X2960 ~ &lt;br /&gt;0X0231 1 &lt;br /&gt;0X0332 2 &lt;br /&gt;0X0433 3 &lt;br /&gt;0X0534 4 &lt;br /&gt;0X0635 5 &lt;br /&gt;0X0736 6 &lt;br /&gt;0X0837 7 &lt;br /&gt;0X0938 8 &lt;br /&gt;0X0A39 9 &lt;br /&gt;0X0B30 0 &lt;br /&gt;0X0C2D - &lt;br /&gt;0X0D3D = &lt;br /&gt;0X2B5C " &lt;br /&gt;0X0E08 退格键 &lt;br /&gt;0X0F09 TAB &lt;br /&gt;0X1071 Q &lt;br /&gt;0X1177 W &lt;br /&gt;0X1265 E &lt;br /&gt;0X1372 R &lt;br /&gt;0X1474 T &lt;br /&gt;0X1579 Y &lt;br /&gt;0X1675 U &lt;br /&gt;0X1769 I &lt;br /&gt;0X186F O &lt;br /&gt;0X1970 P &lt;br /&gt;0X1A5B [ &lt;br /&gt;0X1B5D ] &lt;br /&gt;0X1E61 A &lt;br /&gt;0X1F73 S &lt;br /&gt;0X2064 D &lt;br /&gt;0X2166 F &lt;br /&gt;0X2267 G &lt;br /&gt;0X2368 H &lt;br /&gt;0X246A J &lt;br /&gt;0X256B K &lt;br /&gt;0X266C L &lt;br /&gt;0X273B ; &lt;br /&gt;0X2827 ' &lt;br /&gt;0X1C0D 回车 &lt;br /&gt;0X2C7A Z &lt;br /&gt;0X2D78 X &lt;br /&gt;0X2E63 C &lt;br /&gt;0X2F76 V &lt;br /&gt;0X3062 B &lt;br /&gt;0X316E N &lt;br /&gt;0X326D M &lt;br /&gt;0X332C , &lt;br /&gt;0X342E . &lt;br /&gt;0X352F / &lt;br /&gt;0X3920 空格键&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;右边数字键盘:&lt;/strong&gt; &lt;br /&gt;0X5200 INSERT &lt;br /&gt;0X4700 HOME &lt;br /&gt;0X4900 PAGE UP &lt;br /&gt;0X5300 DELETE &lt;br /&gt;0X4F00 END &lt;br /&gt;0X5100 PAGEDOWN &lt;br /&gt;0X4800 上箭头 &lt;br /&gt;0X4B00 左箭头 &lt;br /&gt;0X5000 下箭头 &lt;br /&gt;0X4D00 右箭头 &lt;br /&gt;0X352F / &lt;br /&gt;0X372A * &lt;br /&gt;0X4A2D - (注意,这是数字键盘的)&lt;br /&gt;0X4737 7 &lt;br /&gt;0X4838 8 &lt;br /&gt;0X4939 9 &lt;br /&gt;0X4B34 4 &lt;br /&gt;0X4C35 5 &lt;br /&gt;0X4D36 6 &lt;br /&gt;0X4E2B + &lt;br /&gt;0X4F31 1 &lt;br /&gt;0X5032 2 &lt;br /&gt;0X5133 3 &lt;br /&gt;0X5230 0 &lt;br /&gt;0X532E DEL&lt;/p&gt;&#xD;
&lt;p&gt;左 Crtl 扫描码是 1D ，表示 1D 00 。 右 Ctrl 键扫描码是 E01D，表示 1D E0。&lt;/p&gt;&#xD;
&lt;p&gt;左 ALT 扫描码是 38 ，表示 38 00 。 右 ALT 键扫描码是 E0 38，表示 38 E0。&lt;/p&gt;&#xD;
&lt;p&gt;左 Shift 扫描码是 2A ，表示 2A 00 。 右 Shift 键扫描码是 36 ，表示 36 00&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;[示例]&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.屏蔽左侧WIN键&lt;/p&gt;&#xD;
&lt;p&gt;"Scancode Map"=00,00,00,00,00,00,00,00,&lt;span style="color: #ff0000;"&gt;02&lt;/span&gt;,00,00,00,&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #008080; text-decoration: underline;"&gt;00,00,5B,E0&lt;/span&gt;&lt;/span&gt;,00,00,00,00&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2.屏蔽右侧WIN键&lt;/p&gt;&#xD;
&lt;p&gt;"Scancode Map"=00,00,00,00,00,00,00,00,&lt;span style="color: #ff0000;"&gt;02&lt;/span&gt;,00,00,00,&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #008080; text-decoration: underline;"&gt;00,00,5C,E0&lt;/span&gt;&lt;/span&gt;,00,00,00,00&lt;/p&gt;&#xD;
&lt;p&gt;3.屏蔽左右WIN两个键&lt;/p&gt;&#xD;
&lt;p&gt;"Scancode Map"=00,00,00,00,00,00,00,00,&lt;span style="color: #ff0000;"&gt;03&lt;/span&gt;,00,00,00,&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;00,00,5B,E0&lt;/span&gt;&lt;/span&gt;,&lt;span style="text-decoration: underline; color: #008080;"&gt;00,00,5C,E0&lt;/span&gt;,00,00,00,00&lt;/p&gt;&#xD;
&lt;p&gt;4.替换左Crtl键为左Alt键&lt;/p&gt;&#xD;
&lt;p&gt;"Scancode Map"=00,00,00,00,00,00,00,00,&lt;span style="color: #ff0000;"&gt;02&lt;/span&gt;,00,00,00,&lt;span style="text-decoration: underline; color: #008080;"&gt;38,00&lt;/span&gt;,&lt;span style="text-decoration: underline; color: #008080;"&gt;1D,00&lt;/span&gt;,00,00,00,00&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #888888; font-size: 12px;"&gt;&lt;em&gt;数据及信息经网络收集所得&amp;nbsp;2012-01-21&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Rainr/aggbug/2328046.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Rainr/archive/2012/01/21/2328046.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/btchenguang/archive/2012/01/20/2328320.html</id><title type="text">Windows 7下解决因为itunes备份导致C盘过度臃肿问题</title><summary type="text"/><published>2012-01-20T13:50:00Z</published><updated>2012-01-20T13:50:00Z</updated><author><name>btchenguang</name><uri>http://www.cnblogs.com/btchenguang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/btchenguang/archive/2012/01/20/2328320.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/btchenguang/archive/2012/01/20/2328320.html"/><content type="html">&lt;p&gt;突然觉得C盘快不行了，试了很久，终于网上查到的方法，挺好用的，特此记录下来&lt;/p&gt;&#xD;
&lt;p&gt;Win7&lt;strong&gt;自带&lt;/strong&gt;的一个小工具：mklink(用于创建符号链接)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;itunes的备份目录为&lt;/strong&gt;：C:\Users\hanks\AppData\Roaming\Apple Computer\MobileSync\Backup，&lt;/p&gt;&#xD;
&lt;p&gt;大小有几个G，而且每次备份一次，还会慢慢增大，对于本身没有分多少空间给C盘来说比较&lt;/p&gt;&#xD;
&lt;p&gt;痛苦。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;首先右键选择&amp;ldquo;以管理员运行&amp;rdquo;附件中的命令提示符&lt;/li&gt;&#xD;
&lt;li&gt;剪切上面路径中的Backup文件夹（&lt;span style="color: #000000;"&gt;&lt;strong&gt;注意是剪切，不是复制&lt;/strong&gt;&lt;/span&gt;）到你自己的其它盘，比如E:\myItunes,得到E:\myItunes\Backup&lt;/li&gt;&#xD;
&lt;li&gt;在命令提示窗口中输入：mklink /D &amp;ldquo;C:\Users\hanks\AppData\Roaming\Apple Computer\MobileSync\Backup&amp;rdquo; E:\myItunes\Backup，回车，提示创建成功&lt;/li&gt;&#xD;
&lt;li&gt;这样就可以了，释放C盘空间，而且不影响使用&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;同样的方法，你也可以移动C盘中的其它占空间的文件夹&lt;/p&gt;&lt;img src="http://www.cnblogs.com/btchenguang/aggbug/2328320.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/btchenguang/archive/2012/01/20/2328320.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianyus/archive/2012/01/18/2325953.html</id><title type="text">Win7笔记本电脑启用虚拟WIFI共享上网</title><summary type="text"/><published>2012-01-18T13:11:00Z</published><updated>2012-01-18T13:11:00Z</updated><author><name>霖雨</name><uri>http://www.cnblogs.com/jianyus/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianyus/archive/2012/01/18/2325953.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianyus/archive/2012/01/18/2325953.html"/><content type="html">&lt;p&gt;今天看了一个帖子，win7系统通过笔记本的无线网卡，启用虚拟Wifi功能共享上网，自己尝试了一下，感觉很好用，至少没有无线路由的自己，手机可以上wifi了，更新软件玩微信等等，都方便多了，好了，废话不多说，先介绍下吧。&lt;/p&gt;&#xD;
&lt;p&gt;首先，先确定自己的笔记本网卡支持&amp;ldquo;启动承载网络&amp;rdquo;的功能，使用管理员运行cmd命令，里面敲击netsh wlan show drivers命令，会显示无线网卡驱动信息，如下图所示，如果功能是&amp;ldquo;否&amp;rdquo;，说明你的无线网卡不支持这个功能，如果为&amp;ldquo;是&amp;rdquo;就继续跟我尝试这个功能吧。【确定的方法，还可以查看任务管理器，无线网卡的&amp;ldquo;驱动程序详细信息&amp;rdquo;，里面是否有vwifibus.sys驱动程序文件，大家也可以通过这个方法确定】&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/256729/2012011820494620.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;确定你的无线网卡有这个功能后，开始&lt;span style="font-size: 16px;"&gt;启动virtaul wifi，同样是命令行netsh wlan set hostednetwork mode=allow ssid=Windows7AP key=password （ssid是将来无线连接的名字和password就是密码了【8位以上】，大家可以设自己习惯的ssid，将来搜索无线网络，就是搜这个名字，输入password后面的密码，要记清楚啊）。启动后，可以查看&amp;ldquo;网络共享中心&amp;rdquo;-&amp;ldquo;更改适配器设置&amp;rdquo;，里面会多出一个&amp;ldquo;Microsoft Virtual WiFi Miniport Adapter&amp;rdquo;，你也可以重命名这个网络连接，当然这个对于网络连接是没有任何影响的，我重命名改成了Virtual WiFi，主要是之前看着太长了，哈哈。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第三步、开启共享上网，打开&amp;ldquo;网络共享中心&amp;rdquo;-&amp;ldquo;更改适配器设置&amp;rdquo;【在左侧的栏里面】-找到你现在上网用的连接，右键属性，点击共享的标签，勾选第一个选项卡【如下图】，在下面的输入框点击，弹出列表，选择你的Microsoft Virtual WiFi Miniport Adapter网络连接，我这里刚刚重命名了，所以选择Virtual WiFi，确定。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/256729/2012011820591192.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第四步、打开无线网，在命令行中输入：netsh wlan start hostednetwork 。启动后，用手机搜这个无线网，就可以咯，哈哈，我现在已经通过这个方式上网了，如果你只有一台电脑能通过网线上网，又有其它需求，不妨试一下。当然，这一项有可能报错，是因为你没有启动无线网卡，哥、通过无线网卡上网，不启动怎么行呢？！好了，不废话了，我去玩微信了，大家拜咯~&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;作者：&lt;a href="http://www.cnblogs.com/jianyus/"&gt;霖雨&lt;/a&gt;&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/jianyus"&gt;http://www.cnblogs.com/jianyus&lt;/a&gt;&lt;br /&gt;本文版权归 霖雨和博客园共有，欢迎转载，但请注明出处。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianyus/aggbug/2325953.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianyus/archive/2012/01/18/2325953.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lyongde/archive/2012/01/17/2324462.html</id><title type="text">Windows 7 Apache下计算机无法访问局域网网站的问题</title><summary type="text"/><published>2012-01-17T03:32:00Z</published><updated>2012-01-17T03:32:00Z</updated><author><name>夜落朦空</name><uri>http://www.cnblogs.com/lyongde/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lyongde/archive/2012/01/17/2324462.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lyongde/archive/2012/01/17/2324462.html"/><content type="html">&lt;p&gt;在Windows 7系统下，由于安全限制问题，本机搭建的网站，局域网内其它计算机是无法访问的。&lt;/p&gt;&lt;p&gt;要解决这个问题，只需要在防火墙加入自建规则便可以了，具体步骤如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;控制面板=&amp;gt;Windows防火墙=&amp;gt;&lt;/p&gt;&lt;p&gt;点击左侧高级设置，弹出高级Windows防火墙窗口=&amp;gt;&lt;/p&gt;&lt;p&gt;点击左侧入站规则，再点击右侧新建规则，弹出新建入站规则向导=&amp;gt;&lt;/p&gt;&lt;p&gt;规则类型：端口；协议和端口：TCP、特定本地端口80；操作：允许连接；配置文件：域、专用、计算机三个复远框全选；输入名称，点击完成。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;经过以上操作， 局域网内其它计算机就可以通过你的本机IP地址访问你搭建的服务器了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lyongde/aggbug/2324462.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lyongde/archive/2012/01/17/2324462.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BreakMind/archive/2012/01/12/2320060.html</id><title type="text">创建GUID</title><summary type="text"/><published>2012-01-11T16:38:00Z</published><updated>2012-01-11T16:38:00Z</updated><author><name>BreakMind</name><uri>http://www.cnblogs.com/BreakMind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BreakMind/archive/2012/01/12/2320060.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BreakMind/archive/2012/01/12/2320060.html"/><content type="html">&lt;p&gt;GUID是什么？全球唯一标示符。&lt;/p&gt;&#xD;
&lt;p&gt;VC++中，想要获得一个GUID，可以通过方法&lt;span&gt;CoCreateGuid，创建一个GUID的对象。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;下面是我在网上收藏的代码，将一个GUID转换成字符串。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原始网址：&lt;a href="http://blog.csdn.net/missshirly/article/details/5609642"&gt;http://blog.csdn.net/missshirly/article/details/5609642&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;char* NewGuid(char* guidBuf)&#xD;
{&#xD;
	memset(guidBuf,0,64);&#xD;
	GUID guid;&#xD;
	CoInitialize(NULL);&#xD;
	if(S_OK == CoCreateGuid(&amp;amp;guid))&#xD;
	{&#xD;
	_snprintf(guidBuf, 64,&#xD;
		"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",&#xD;
		guid.Data1,&#xD;
		guid.Data2,&#xD;
		guid.Data3,&#xD;
		guid.Data4[0], guid.Data4[1],&#xD;
		guid.Data4[2], guid.Data4[3],&#xD;
		guid.Data4[4], guid.Data4[5],&#xD;
		guid.Data4[6], guid.Data4[7]);&#xD;
	}&#xD;
	CoUninitialize();&#xD;
	return guidBuf;&#xD;
}&#xD;
	  &#xD;
&#xD;
WCHAR* NewGuid(WCHAR* guidBuf)&#xD;
{&#xD;
	char guidBufA[64];&#xD;
	wcsset(guidBuf,0);&#xD;
	NewGuid(guidBufA);&#xD;
	if(guidBufA)&#xD;
	{&#xD;
		MultiByteToWideChar(CP_ACP,NULL,guidBufA,64,guidBuf,64);&#xD;
	}&#xD;
	return guidBuf;&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BreakMind/aggbug/2320060.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BreakMind/archive/2012/01/12/2320060.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/heartstill/archive/2012/01/11/2319936.html</id><title type="text">取消Win7关机时的补丁更新</title><summary type="text"/><published>2012-01-11T14:17:00Z</published><updated>2012-01-11T14:17:00Z</updated><author><name>开始测试</name><uri>http://www.cnblogs.com/heartstill/</uri></author><link rel="alternate" href="http://www.cnblogs.com/heartstill/archive/2012/01/11/2319936.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/heartstill/archive/2012/01/11/2319936.html"/><content type="html">&lt;div &gt;取消Win7关机时的补丁更新&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;作者：三好 阅读： 30037人&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;文：陕西 三好&lt;/p&gt;&#xD;
&lt;p&gt;Windows操作系统一直是在缝缝补补中前行的，Win7也不例外。由于系统自带的更新更安全更可靠，所以好多朋友都喜欢使用，如果将系统默认的&amp;#8220;自动安装更新（推荐）&amp;#8221;修改为&amp;#8220;下载更新，但是让我选择是否更新&amp;#8221;后，每次关机前都必须等系统安装更新完成后才能关机。&lt;/p&gt;&#xD;
&lt;p&gt;其实在Win7下经过简单的设置就可以解决这个烦人的问题。以管理员级别的帐户登录系统，在运行对话框中输入&amp;#8220;gpedit.msc&amp;#8221;，打开本地组策略编辑器，依次展开&amp;#8220;用户配置&amp;#8594;管理模板&amp;#8594;Windows组件&amp;#8594;Windows Update&amp;#8221;项，从右侧窗格中找到&amp;#8220;不要在&amp;#8216;关闭Windows&amp;#8217;对话框显示&amp;#8216;安装更新并关机&amp;#8217;&amp;#8221;项，双击打开其属性窗口，在其属性窗口中选择&amp;#8220;已启用&amp;#8221;，确认退出即可生效。&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;a href="http://ep.cbifamily.com/2010/06/77/116704.html"&gt;&lt;img id="selimg_3441" border="0" alt="" src="http://ep.cbifamily.com/images/h003/h97/img201002031634200.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;#9679;选择补丁下载模式&lt;/p&gt;&#xD;
&lt;p&gt;以后每次关机时，即使当前有尚未完成的系统更新，也能快速关机，不会显示&amp;#8220;安装更新并关机&amp;#8221;的信息了。以后有时间了，可以手动安装下载的更新补叮&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;a href="http://ep.cbifamily.com/2010/06/77/116704.html"&gt;&lt;img id="selimg_3442" border="0" alt="" src="http://ep.cbifamily.com/images/h003/h97/img201002031634251.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;#9679;组策略中开启对应选项&lt;/p&gt;&#xD;
&lt;p&gt;小贴士：Win7使用自带的补丁升级程序最好&lt;/p&gt;&#xD;
&lt;p&gt;相比起XP，Win7自带的补丁更新程序已经做得比较完善，在这个 windows update中，我们可以完全按照自己的选择来进行补丁更新。每个补丁的解释都非常清楚，一般来说，除了提示为重要的更新之外，其他可选更新都是一些语言包或者是驱动程序的更新，可以忽略不计。&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;a href="http://ep.cbifamily.com/2010/06/77/116704.html"&gt;&lt;img id="selimg_3443" border="0" alt="" src="http://ep.cbifamily.com/images/h003/h97/img201002031634252.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;#9679;查看补丁安装历史&lt;/p&gt;&lt;/div&gt;&lt;!--&#xD;
&lt;div &gt;&#xD;
					[1] 　&lt;a href="#" &gt;[2]&lt;/a&gt; 　&lt;a href="#"&gt;[下一页]&lt;/a&gt; &lt;/div&gt;&#xD;
--&gt;&lt;img src="http://www.cnblogs.com/heartstill/aggbug/2319936.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/heartstill/archive/2012/01/11/2319936.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yetiea/archive/2012/01/09/2317619.html</id><title type="text">安装win7的解决方法（“安装程序无法定位现有系统分区，也无法创建新的系统分区”）（转载记录一下备案）</title><summary type="text"/><published>2012-01-09T15:19:00Z</published><updated>2012-01-09T15:19:00Z</updated><author><name>忝</name><uri>http://www.cnblogs.com/yetiea/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yetiea/archive/2012/01/09/2317619.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yetiea/archive/2012/01/09/2317619.html"/><content type="html">&lt;p&gt;&lt;strong&gt;　　安装win7的解决方法（&amp;ldquo;安装程序无法定位现有系统分区，也无法创建新的系统分区&amp;rdquo;）&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;ldquo;安装程序无法定位现有系统分区，也无法创建新的系统分区&amp;rdquo;提示&lt;br /&gt;&lt;br /&gt;　　我在使用win pe模式安装win7 ( 32 位）的时候出现&amp;ldquo;安装程序无法定位现有系统分区，也无法创建新的系统分区&amp;rdquo;提示。&lt;br /&gt;　　解决步骤：&lt;br /&gt;　　第一步：把win7镜像发在你电脑的非系统盘的其他硬盘上。&lt;br /&gt;　　第二步：重启机器，通过U 盘启动．进入win pe系统，关于这点我说一下，有些朋友也许不知道什么叫win pe系统，这个win pe 究竟有什么用途，其实你可以把win pe 理解为一个微缩版本win xp ，他和win xp 使用差不多．只是大部分的功能被禁用了，所以他的体积也非常小，虽然大部分的功能被禁用，可是他不影响第三方软件使用，比如Ghost , PQ 等一些软件依旧在win pe运行自如。&lt;br /&gt;　　第三步：把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上。如D:\windows 7\....。当然你也可以不用建立win7 文件夹。在这里再说明一点就是，一定要把你想分的分区分好．尽量不要频繁调整硬盘各个分区的大小，尤其是主分区，一定要考虑周全。进入win pe系统，格式化C 盘为NTFS 。C盘最好有15 G以上的空间，安装完win7 大概要用8 G 。我在这里建议大家分3O G 。&lt;br /&gt;　　第四步（最关键一步）：从你解压的安装程序的文件夹中找到boot , bootmgr 和sources这三个文件，并且复制到C盘根目录下。&lt;br /&gt;　　第五步：在win pe系统中运行cmd ，输入&amp;ldquo; c:\boot\bootsect.exe /nt60 c: &amp;rdquo;（注意exe和/nt60、/nt60和c:之间有空格），然后回车，看到提示successful 字样（画面会很快闪过，以至于来不及看。）的语句即成功了！然后重起电脑。&lt;br /&gt;　　第六步：把U盘从电脑中拔出，取出U盘，然后从硬盘启动，出现了win7 安装导入文件的&amp;ldquo;白道&amp;rdquo;（屏幕的下面），然后出现了win7 安装的欢迎界面，选择好地域、语言、键盘。点&amp;ldquo;下一步&amp;rdquo;，选择分区，这时，这个&amp;ldquo;安装程序无法定位现有系统分区，也无法创建新的系统分区&amp;rdquo;的提示没有出现，选择C 分区，安装OK 。再次进入系统把刚才装机放入的多余文件删掉（不删除也行）。&lt;br /&gt;&amp;nbsp;　 此外，装好系统后，重新启动时，会有两个启动选择，有个windows 设置启动，那我们如何把它删除？以管理员身份打开命令提示符，键入 msconfig&amp;nbsp;&amp;nbsp;打开系统配置对话框，选择【引导】标签，选择要删除的引导项目，单击【删除】、【应用】、【确定】即可，注意谨慎操作！&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yetiea/aggbug/2317619.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yetiea/archive/2012/01/09/2317619.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html</id><title type="text">C++ AMP实战：绘制曼德勃罗特集图像</title><summary type="text"/><published>2012-01-03T07:02:00Z</published><updated>2012-01-03T07:02:00Z</updated><author><name>装配脑袋</name><uri>http://www.cnblogs.com/Ninputer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html"/><content type="html">&lt;p&gt;之前我写了&lt;a href="http://www.cnblogs.com/Ninputer/archive/2009/11/24/1609364.html" target="_blank"&gt;一篇用GPU绘制曼德勃罗特（Mandelbrot）集图像的文章&lt;/a&gt;，里面使用的技术是与DirectX 11继承在一起的DirectCompute。DirectCompute执行在GPU上的kernel代码，必须用一种特殊的HLSL语言来编写。虽然这种语言有些类似于C，但一些特殊的细节使得没接触过DirectX的开发人员很不适应。相比于kernel代码，驱动HLSL所要进行的准备工作那简直麻烦得要命，所以我在那篇博客里索性略去了。如果要想要体会一下DirectCompute那麻烦又不直观的API，可以参考&lt;a href="http://www.cnblogs.com/Ninputer/archive/2009/12/11/1622190.html" target="_blank"&gt;我翻译的另一篇博客&lt;/a&gt;。后来我转向了OpenCL，这是一种异构并行计算的行业标准。它的的kernel语言和API相比DirectCompute那可是简单了好几倍，又有.NET封装类库，无疑是个方便的选择。但是经过我的实践，至少在我的AMD 5850显卡上，OpenCL的性能没有DirectCompute那么好。能否鱼和熊掌兼得呢？现在这个选择出现了：C++ AMP&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;C++ AMP全名C++ Accelerated Massive Parallelism（加速大规模并行计算）。是微软提出的基于C++的异构化并行计算平台。它将随Visual Studio 11一起发布，目前为预览版本。所谓异构并行计算，主要的需求就来自于GPU通用计算的崛起。GPU非常适合大规模数据并行算法，即同一程序应多多组不同的数据进行并行运算。然而GPU的架构与主流CPU不同，而且常常更新换代，没法采用传统编程语言来编程。现有的GPU多数编程方案，如DirectCompute和OpenCL，都要使用不同的语言或编译器来编写运行于GPU上的kernel部分和运行在CPU上的host部分。C++ AMP统一了这两部分，可以用同一个编译器，同一种语法来编写kernel代码；无需任何编译器选项或设置。更甚至C++ AMP的API简单到了极致，比OpenCL的方便程度更上了一个层次。下面我们就用C++ AMP来实现经典的曼德勃罗特集图形绘制。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;先来回顾一下曼德勃罗特集，这个是很多并行计算书都用来做例子的经典问题，因为它是一个典型的易并行算法。选任意复数c，让z从0开始采用以下公式&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Ninputer/WindowsLiveWriter/GPU_7B55/clip_image002_2.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/Ninputer/WindowsLiveWriter/GPU_7B55/clip_image002_thumb.gif" width="126" height="29"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;进行迭代。不同的c会产生很不一样的效果。有的c可以一直迭代下去（z的模都在半径为2的圆以内），而有的c会导致迭代若干次之后逃逸（其模会变得大于2，进而趋近于无穷）。不同的c迭代次数相差很大，如果把平面上的每个点坐标都当作c来进行迭代，然后把迭代次数绘制成不同的颜色，就会形成绚丽的图形。而不同c可以完全独立地进行独立，不会影响其他c值的计算结果。因此算法可以是完全并行的。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;首先我们要开辟出一块空间来表示最后生成的图像。图像上的每一个像素将会映射到一个复数c上，这样a x b的图像，就表示a x b个不同的复数，分别进行上述迭代。C++ AMP提供了两种表示数据的方式：array模板类和array_view模板类。array模板类就像C++ 11的STL容器array一样，是一个固定尺寸、固定维度的数组。和STL array唯一的不同是C++ AMP的array直接分配在GPU的显存中。声明array时要传入两个模板参数——array元素的类型和维度。比如我们要构建一个unsigned int类型的二维数组，就可以这样写：&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;pre &gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;int &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;a = 100, b = 100;&#xD;
&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;span style="background: white; color: black"&gt;, 2&amp;gt; buffer(a, b);&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意这个array模板是定义在Concurrency命名空间里的，需要提前using。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;有时我们需要把CPU上的数据传送到GPU上，或者希望GPU计算的结果直接写入指定的CPU内存中，这时我们就可以用第二个模板类array_view。array_view本身不会分配任何内存，它只是一个CPU数据buffer的包装，其中数据buffer可以是一个指针、数组，也可以是诸如std::vector等各种常用容器。array_view仅仅当数据访问发生时才进行必要的数据拷贝。声明array_view和声明array一样，但必须传入它的基础容器：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;pre &gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;int &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;a = 100, b = 100;&#xD;
std::&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;vector&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;&amp;gt; myarray(a * b);&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;span style="background: white; color: black"&gt;, 2&amp;gt; view(a, b, myarray);&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接下来最重要的是让代码在GPU上执行，完成这个任务的入口方法是parallel_for_each方法。它非常像.NET 4里面的Parallel.ForEach方法，是一个通过lambda函数来分派任务的方法。我们先来完成一个简单的任务，现在有两个array_view，要生成一个array，其内容是两个array_view中相应元素的和。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;pre &gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;std::&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;vector&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;&amp;gt; arr1(10);&#xD;
std::&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;vector&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;&amp;gt; arr2(10);&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, 1&amp;gt; view1(10, arr1);&#xD;
&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, 1&amp;gt; view2(10, arr2);&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, 1&amp;gt; r(10);&#xD;
&#xD;
&lt;strong&gt;parallel_for_each&lt;/strong&gt;(r.grid, [view1, view2, &amp;amp;r](&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;index&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;1&amp;gt; i) &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;restrict&lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;direct3d&lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;)&#xD;
{&#xD;
    r[i] = view1[i] + view2[i];&#xD;
});&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;观察这里的parallel_for_each，有许多有趣的信息。首先它的第一个参数是一个grid类型的对象。grid是C++ AMP用来描述并行计算拓扑结构的对象。因为经过parallel_for_each方法分派的计算是在显卡计算的，我们需要事先指定有多少GPU线程来完成计算，以及这些线程的排列方式。这个任务当中，我们想要把两个array_view表示的数据想加，为了达到最大并行性，我们给数组的每一个元素都分配一个线程。代码里的r.grid就表示线程的排列方式由数组r自身的拓扑结构决定——在这个例子中就是一个1 x 10的一维结构。注意，GPU上通常可以开成百上千的线程，几乎没有任何代价，所以线程的拓扑结构应当尽量达到最大的并行度。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接下来那个方括号语法是C++的lambda表达式语法。C++ 11开始支持lambda表达式，和其他语言的lambda表达式一样，这是一种就地声明匿名函数的语法。lambda表达式在C++ 11中具有极其重要的地位。一开始的方括号是lambda表达式的&lt;strong&gt;捕获列表&lt;/strong&gt;。与C#等语言的lambda表达式不同，C++得lambda表达式需要显式进行变量捕获，只有列在捕获列表中的变量才能在lambda函数体内使用。注意，捕获的时候直接写名字的变量（如上面例子中的view1和view2）是按值捕获的变量，在lambda函数体内修改它们的值，不会改变原始变量。而名字前加一个&amp;amp;符号的捕获变量是按引用捕获的变量，lambda函数对其修改会反应到原始变量中。在C++ AMP的parallel_for_each调用时有一个规定：&lt;strong&gt;所有变量都必须按值捕获，除了array对象，array对象必须按引用捕获&lt;/strong&gt;。这就是上面例子为何要这样写的原因。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;捕获列表之后是lambda函数的参数，定义方法和普通函数的参数方法是一样的。parallel_for_each要求传入的函数接受一个index类型的特殊参数。这个参数是实际运行时的线程编号。因为线程的拓扑结构已经由grid参数决定了，所以这个index运行时就会是grid表示范围中的一个值，维度和grid一样。比如上面的例子，index就会表示0-9号线程中的某一个，这些线程都是并行执行的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参数表之后，出现了一个新的修饰符restrict(direct3d)。这是专为C++ AMP设计的新修饰符，用来表示函数的语法约束。众所周知GPU和CPU是有很多不同的，在GPU上执行的方法无法进行某些操作。比如GPU代码无法调用Windows API，也无法递归。restrict(direct3d)告诉编译器检查函数体中的代码，并且在编译时就能检测出所有不满足约束的语法。restrict修饰符还是函数签名的一部分，可以针对不同的restrict修饰符进行函数重载，这和const等C++原有的修饰符是一样的。除了restrict(direct3d)，还有一种restrict(cpu)修饰符。所有现有C++函数都默认带有restrict(cpu)修饰符。一个函数还可以同时约束为CPU和GPU代码，只要这么写即可：restrict(cpu, direct3d)。在restrict(direct3d)函数中调用其它的函数，会自动选择restrict(direct3d)的重载。稍后我们会看到，C++ AMP定义了一组restrict(direct3d)版本的数学函数，如log和sin等。在restrict(direct3d)代码中调用这些数学函数就会自动使用GPU版本，而普通的CPU代码则会去调用不带修饰的CPU版本。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后是lambda函数的函数体，里面的代码非常直白，就是直接对当前线程index所对应的数组元素进行相加。当你运行上述代码，该代码就会在GPU上以并行计算的方式完成。没有任何额外的初始化代码，隐藏代码或者编译器选项设置——只要这么写就可以运行了。是不是很方便？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面我们就来完成GPU上的曼德勃罗特集生成算法。先看头文件mandelbrot.h，里面include了amp.h——C++ AMP的主要头文件。还声明了一个fp_t类型，根据宏来控制它表示float或double。目前Windows 7上的C++ AMP还不支持双精度浮点运算。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;pre &gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;#include &lt;/font&gt;&lt;/span&gt;&lt;span style="background: white; color: #a31515"&gt;&lt;font face="Consolas"&gt;"amp.h"&#xD;
&#xD;
&lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: green"&gt;//#define FP64&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;#if defined &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;FP64&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;#define &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;_F(x) x&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;typedef double &lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;fp_t;&#xD;
&lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: blue"&gt;#else&#xD;
#define &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;_F&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;(x) x##f&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;typedef float &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t&lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;;&#xD;
&lt;/font&gt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;#endif&#xD;
&#xD;
void &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;generate_mandelbrot(&#xD;
    Concurrency::&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, 2&amp;gt; result,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;max_iter,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;real_min,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;imag_min,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;real_max,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;span style="background: white; color: black"&gt;imag_max );&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接下来是实现的代码，还顺便生成了一个HSB（色调、饱和度、亮度）到RGB转换的GPU函数：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;pre &gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;#include &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: #a31515"&gt;"stdafx.h"&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;#include &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: #a31515"&gt;"mandelbrot.h"&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;using namespace &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;Concurrency;&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;span style="background: white; color: black"&gt;set_hsb (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;hue, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;saturate, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;bright) &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;restrict &lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;direct3d&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;);&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;void &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;generate_mandelbrot(&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, 2&amp;gt; result,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;max_iter,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;real_min,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;imag_min,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;real_max,&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;imag_max )&#xD;
{&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;width = result.extent.get_x();&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;height = result.extent.get_y();&#xD;
&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;scale_real = (real_max - real_min) / width;&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;scale_imag = (imag_max - imag_min) / height;&#xD;
&#xD;
    parallel_for_each(result.grid, [=](&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;index&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;2&amp;gt; i) &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;restrict&lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;direct3d&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)&#xD;
    {&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;gx = i.get_x();&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;gy = i.get_y();        &#xD;
&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;cx = real_min + gx * scale_real;&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;cy = imag_min + (height - gy) * scale_imag;&#xD;
&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;span style="background: white; color: black"&gt;zx = &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;_F&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;(0.0);&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;span style="background: white; color: black"&gt;zy = &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;_F&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;(0.0);&#xD;
&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;temp;&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;fp_t &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;length_sqr;&#xD;
&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;count = 0;&#xD;
        &lt;/font&gt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;&lt;font face="Consolas"&gt;do&#xD;
        &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;{&#xD;
            count++;&#xD;
        &#xD;
            temp = zx * zx - zy * zy + cx;&#xD;
            zy = 2 * zx * zy + cy;&#xD;
            zx = temp;&#xD;
&#xD;
            length_sqr = zx * zx + zy * zy;&#xD;
        }&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;while&lt;/span&gt;&lt;span style="background: white; color: black"&gt;((length_sqr &amp;lt; &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;_F&lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;(4.0)) &amp;amp;&amp;amp; (count &amp;lt; max_iter));&#xD;
    &#xD;
        &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: green"&gt;//faster using multiplication than division&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;n = count * 0.0078125f; &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: green"&gt;// n = count / 128.0f; &#xD;
        &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;h = 1.0f - 2.0f * fabs(0.5f - n + floor(n));&#xD;
&#xD;
        &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: green"&gt;//turn points at maximum iteration to black&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;bfactor = &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;direct3d&lt;/span&gt;&lt;span style="background: white; color: black"&gt;::clamp((&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)(max_iter - count), 0.0f, 1.0f);&#xD;
&#xD;
        result[i] = set_hsb(h, 0.7f, (1.0f - h * h * 0.83f) * bfactor);&#xD;
    });&#xD;
}&#xD;
&#xD;
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;span style="background: white; color: black"&gt;set_hsb (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;hue, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;saturate, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;bright) &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;restrict &lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;direct3d&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)&#xD;
{   &#xD;
&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;red, green, blue;      &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;h = (hue * 256) / 60;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;p = bright * (1 - saturate);  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;q = bright * (1 - saturate * (h - (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)h));  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;float &lt;/span&gt;&lt;span style="background: white; color: black"&gt;t = bright * (1 - saturate * (1 - (h - (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)h)));  &#xD;
    &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;switch &lt;/span&gt;&lt;span style="background: white; color: black"&gt;((&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)h) {  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;0:   &#xD;
        red = bright,  green = t,  blue = p;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;1:  &#xD;
        red = q,  green = bright,  blue = p;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;2:  &#xD;
        red = p,  green = bright,  blue = t;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;3:  &#xD;
        red = p,  green = q,  blue = bright;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;4:  &#xD;
        red = t,  green = p,  blue = bright;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;5:  &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;case &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;6:  &#xD;
        red = bright,  green = p,  blue = q;  &#xD;
        &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;break&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;;  &#xD;
    }  &#xD;
&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;ired, igreen, iblue;&#xD;
    ired = (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)(red * 255.0f);&#xD;
    igreen = (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)(green * 255.0f);&#xD;
    iblue = (&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;)(blue * 255.0f);&#xD;
    &#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;return &lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;0xff000000 | (ired &amp;lt;&amp;lt; 16) | (igreen &amp;lt;&amp;lt; 8) | iblue;  &#xD;
 }&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意，在这段代码中我们使用的array_view是二维的，所以index也相应是一个二维的结构。我们可以从index的get_x()，get_y()等方法得到线程的编号。代码中还使用了若干小技巧，比如判断复数模的平方大于4而不是模大于2。因为开平方运算即使在GPU上也是个比较慢的操作，需要尽量避免。方法的最后部分使用一个特殊的算法将迭代数转化成了颜色。这个公式是我反复试验得到的，只是为了视觉上好看。大家自己实践可以根据自己喜好随便改。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;C++ AMP的parallel_for_each调用是一种“准同步”的调用，当parallel_for_each完成时，GPU计算并不一定结束了，但代码会继续执行。只有当你访问计算的结果——比如包含结果的array_view时，它就会阻塞线程等待GPU计算的完成。我们可以调用array_view的synchornize方法来显式地等待。C++ AMP也提供真正异步接口，但用起来比较麻烦，在这个例子中就不采用了。下面的代码就是调用以及同步的代码。这里展示代码将结果保存在一个位图中：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="5" width="100%"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;pre &gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;_tmain&lt;/span&gt;&lt;span style="background: white; color: black"&gt;(&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;int &lt;/span&gt;&lt;span style="background: white; color: black"&gt;argc, &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;_TCHAR&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;* argv[])&#xD;
{&#xD;
&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;GdiplusStartupInput &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;gdiplusStartupInput;&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;ULONG_PTR           &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;gdiplusToken;&#xD;
    GdiplusStartup(&amp;amp;gdiplusToken, &amp;amp;gdiplusStartupInput, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;nullptr&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;);&#xD;
&#xD;
&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;const int &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;edge = 1024;&#xD;
&#xD;
    std::&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;vector&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;&amp;gt; a(edge * edge);&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;array_view&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;unsigned int&lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;, 2&amp;gt; av(edge, edge, a);&#xD;
&#xD;
    generate_mandelbrot(av, 512, -2, -2, 2, 2);&#xD;
&#xD;
    av.synchronize();&#xD;
&#xD;
    &lt;/font&gt;&lt;/span&gt;&lt;span style="background: white; color: green"&gt;&lt;font face="Consolas"&gt;//construct a image    &#xD;
    &lt;/font&gt;&lt;/span&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;{&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;Bitmap &lt;/span&gt;&lt;span style="background: white; color: black"&gt;output(edge, edge, edge * 4, &lt;/span&gt;&lt;span style="background: white; color: #6f008a"&gt;PixelFormat32bppARGB&lt;/span&gt;&lt;span style="background: white; color: black"&gt;, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;reinterpret_cast&lt;/span&gt;&lt;span style="background: white; color: black"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;BYTE&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;*&amp;gt;(a.data()));&#xD;
&#xD;
        &lt;/span&gt;&lt;span style="background: white; color: #2b91af"&gt;CLSID &lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;pngClsid;&#xD;
        GetEncoderClsid(L&lt;/span&gt;&lt;span style="background: white; color: #a31515"&gt;"image/png"&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;, &amp;amp;pngClsid);&#xD;
&#xD;
        output.Save(L&lt;/span&gt;&lt;span style="background: white; color: #a31515"&gt;"test.png"&lt;/span&gt;&lt;span style="background: white; color: black"&gt;, &amp;amp;pngClsid, &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;nullptr&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="background: white; color: black"&gt;);&#xD;
    }&#xD;
    &#xD;
    GdiplusShutdown(gdiplusToken);&#xD;
    &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;return &lt;/span&gt;&lt;/font&gt;&lt;span style="background: white; color: black"&gt;&lt;font face="Consolas"&gt;0;&#xD;
}&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;以上代码绘制了实部从-2到2，虚部从-2i到2i范围的曼德勃罗特集图形，绘制到一个边长1024的位图上，最大迭代次数512次。注意其中synchronize方法的调用。所得结果（缩小图）为：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Ninputer/201201/201201031353197718.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="test" border="0" alt="test" src="http://images.cnblogs.com/cnblogs_com/Ninputer/201201/201201031353211174.jpg" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;曼德勃罗特集图形每一点放大都有无穷无尽美丽的花纹，为了能够任意探索图形的细节，我还编写了一个Windows界面的程序，使用Direct2D将所绘图像展示出来，而且加入了拖拽和鼠标滚轮的交互。实际运行效果非常酷，因为GPU并行计算的强大性能，所有交互都是平滑实时进行的。就好像是一张可以无限放大的图片一样。美中不足的是当前C++ AMP的Windows 7实现只支持单精度浮点数，所以放大到一定倍数就会模糊了。等到Windows 8的稳定版本出现，大家才能体验到双精度浮点的美妙结果。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Ninputer/201201/201201031353289334.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Ninputer/201201/201201031353408570.png" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我已经将所有源代码上传到了Github上，地址为：&lt;a title="https://github.com/Ninputer/AMP-Demo" href="https://github.com/Ninputer/AMP-Demo" target="_blank"&gt;https://github.com/Ninputer/AMP-Demo&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;主要，要编译和运行此例子，需要以下软硬件环境：&lt;/p&gt;&#xD;
&lt;p&gt;1. Windows 7 （不支持XP和Vista）&lt;/p&gt;&#xD;
&lt;p&gt;2. 硬件支持DirectX 11所有特性的显卡。如Nvidia Geforce 400,500系列显卡，AMD Radeon HD5000,6000,7000系列显卡。无法运行于不支持DirectX 11的显卡上。&lt;/p&gt;&#xD;
&lt;p&gt;3. 需要Visual Studio 11 Developer Preview。&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27543ls.aspx?displaylang=en&amp;amp;id=27543" target="_blank"&gt;&lt;font color="#0000ff"&gt;下载地址&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4. 需要Windows SDK。&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=e" target="_blank"&gt;&lt;font color="#0000ff"&gt;下载地址&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我还翻译了一个Build大会关于C++ AMP的视频，是快速了解C++ AMP的最佳途径。观看地址：&lt;a title="http://www.tudou.com/playlist/p/l13690258i105735621.html" href="http://www.tudou.com/playlist/p/l13690258i105735621.html" target="_blank"&gt;http://www.tudou.com/playlist/p/l13690258i105735621.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;欢迎关注我的微博&lt;a title="http://weibo.com/ninputer" href="http://weibo.com/ninputer" target="_blank"&gt;http://weibo.com/ninputer&lt;/a&gt;，一起讨论C++ AMP和其他有趣的技术~&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Ninputer/aggbug/2310945.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Ninputer/archive/2012/01/03/2310945.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mvperic/archive/2012/01/01/2309258.html</id><title type="text">快速诊断内存泄漏</title><summary type="text"/><published>2011-12-31T16:43:00Z</published><updated>2011-12-31T16:43:00Z</updated><author><name>佘华煜</name><uri>http://www.cnblogs.com/mvperic/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mvperic/archive/2012/01/01/2309258.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mvperic/archive/2012/01/01/2309258.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 26pt;"&gt;这&lt;/span&gt;一年眼看就到了尽头。下半年我比较忙，发生了太多的事情，半年都没写博客了，现在又捡起来，显得有些生疏。值此新旧更替之际，诚挚祝愿各位新老朋友在新的2012年里万事如意，心想事成！回首来看，以往的文章多少显得篇幅太长，比较累赘，在新的2012年里，我将专注面向 IT 专业人士，减少对基础的赘述，如您有什么不明白的地方，欢迎在文后评论留言，也可在微博给我发消息。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在这一年里，是否有遗漏什么事情呢？哈哈，也许，电脑有时候遇到了写得不好的程序或者驱动，也会泄漏内存呢。今天我们就一起在2011年的最后时刻一起讨论一下如何快速检测内存泄漏。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们知道，当程序向内存池申请分配内存后，若不释放，就会产生所谓的"内存泄漏"。这样的后果是严重的：Windows会越来越慢，如果有限的内存池被完全耗尽，那就会发生各种错误和异常。当您觉得系统在启动和登录后越来越慢时，您大致就可以开始怀疑是否存有内存泄漏了。现在介绍一种能够简易诊断的方式，这种方式虽不能直接指出是哪个用户态或者内核态的程序造成的内存泄漏，但是能够诊断是否存有泄漏情况，我们一起来看看。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1. 启动"性能监视器"(perfmon)；&lt;/p&gt;&#xD;
&lt;p&gt;2. 添加三个特征计数器：&lt;/p&gt;&#xD;
&lt;div style="margin-left: 11pt;"&gt;&#xD;
&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 85px;" /&gt;&lt;col style="width: 151px;" /&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: solid #4bacc6 1.0pt; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 2.25pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;父类别&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: solid #4bacc6 1.0pt; border-left: none; border-bottom: solid #4bacc6 2.25pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;计数器名称&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: #d2eaf1;"&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Memory&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Pool Nonpaged Bytes&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Memory&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Pool Paged Bytes&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: #d2eaf1;"&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Paging File&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;% Usage&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;由于内存泄漏一般都要数小时才能检测到并确诊，所以这个方法虽叫"快速"，实际上还是比较缓慢的，但是最简易的方式了。这里，我建议大家将性能计数器的属性中的采样间隔和持续时间都设得久一些，这样采样点会较少，而两个采样点之间的数据变化也会比较明显，容易直观比较。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/mvperic/201201/201201010042279568.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;开始采样后，您需要启动您认为可疑的应用程序，或者干脆就在您认为会有内存泄漏的现有系统环境下直接开始监测。如果您是在添加计数器后才开始启动一些可疑程序的，那么您会看到一个前期过程内，计数器的值会变化较大，但是，过段时间就会趋于相对稳定。那么在稳定后的数据规律性变化则起到关键的判别作用。值得注意的是，在检测期间，就不要再使用系统了，也不要对应用产生干扰，以免造成计数器的无关变化。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里我给出一张对照表，可以帮助您通过稳定后的指标变化来判断是否有内存泄漏：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 85px;" /&gt;&lt;col style="width: 198px;" /&gt;&lt;col style="width: 180px;" /&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: solid #4bacc6 1.0pt; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 2.25pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;泄漏来源&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: solid #4bacc6 1.0pt; border-left: none; border-bottom: solid #4bacc6 2.25pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;计数器指标变化规律&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: solid #4bacc6 1.0pt; border-left: none; border-bottom: solid #4bacc6 2.25pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: #d2eaf1;"&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;用户态&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Pool Paged Bytes 和 page file Usage 会随时间不断上升&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;用户态程序内存泄漏总是发生在换页内存池中&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid #4bacc6 1.0pt; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;strong&gt;内核态&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Pool Nonpaged Bytes 随时间不断上升 (Pool Paged Bytes 也能随时间上升)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid #4bacc6 1.0pt; border-right: solid #4bacc6 1.0pt;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;内核态内存泄漏通常消耗非换页内存池&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意，万一在计数点遇到应用程序缓存数据，则会造成计数器计数值的"异常"，这对于我们的内存泄漏判断而言将是种误报。需根据后续的情况走势来看。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里，我进行了30多分钟的检测，我的采样间隔是10分钟一次，那么下图中将有三次采样的数据。可以看出，这是相对稳定的状态，没有内存泄漏。（建议您至少监测1小时以上）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/mvperic/201201/201201010042381792.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果您想搜集详细的日志，不妨在"数据收集器"的"用户定义"下创建一个收集器，然后您可以在一段时间后查看报告。这样可以有效避免实时监测窗口的记录线条在到达右边底部时重新从左边开始覆盖已有数据。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;好了，到这里本文就介绍完了。如果您是专业开发人员，需要进一步检测应用程序的用户态/内核态内存泄漏情况，那就需要用更加专业的工具了，例如诊断内核态泄漏，可以使用 Driver Verifier、内核调试器和 Windows Driver Kit 里面的 PoolMon 工具；对于用户态内存泄漏诊断，可以使用 WinDbg 自带的 UMDH 工具或者针对具体的进程添加更多的计数器&amp;hellip; 这些都不在本文的讨论范围内了。希望大家怀疑有内存泄漏时，都能通过这一简易办法进行确认哦~&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;咱2012年再见~ &lt;span style="font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mvperic/aggbug/2309258.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mvperic/archive/2012/01/01/2309258.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/distance/archive/2011/12/30/2307198.html</id><title type="text">WCF中的服务引用根源</title><summary type="text"/><published>2011-12-30T03:21:00Z</published><updated>2011-12-30T03:21:00Z</updated><author><name>distance</name><uri>http://www.cnblogs.com/distance/</uri></author><link rel="alternate" href="http://www.cnblogs.com/distance/archive/2011/12/30/2307198.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/distance/archive/2011/12/30/2307198.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span style="background-color: #00ffff;"&gt;导航：&lt;/span&gt;&lt;a title="（一）WCF之路起航" href="http://www.cnblogs.com/distance/archive/2011/12/27/WCF.html"&gt;（一）WCF之路起航&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="(二)WCF端口号问题的解决办法" href="http://www.cnblogs.com/distance/archive/2011/12/28/2304279.html"&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;（二）WCF端口号问题的解决办法&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="(三)WCF添加服务引用时找不到应用" href="http://www.cnblogs.com/distance/archive/2011/12/28/2304780.html"&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;（三）WCF添加服务引用时找不到应用&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="WCF中的服务引用根源" href="http://www.cnblogs.com/distance/archive/2011/12/30/2307198.html"&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;（四）WCF中的服务引用根源&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: 16px;"&gt;Q:WCF中添加服务引用是要通过一个地址去找到服务的，像下图这样：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: 16px;"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/distance/345834/r_112302545.jpg" alt="服务引用" width="526" height="480" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: 16px;"&gt;刚开始的很疑惑服务中的这个名字（AppointmentServiceImepletation）是怎么找到呢？ 而且我在哪里定义的这个服务名称呢？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: 16px;"&gt;仔细想了一下，其实这个名字是通过命名空间+类名找到的，在定义服务的时候已经在配置文件中设置过了：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml version="1.0" encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;compilation &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;debug&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; targetFramework&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="4.0"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;services&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;service &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AppointmentServiceIISHost.ServiceBehavior"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000; background-color: #ff00ff;"&gt;        name="com.contoso.AppointmentService.AppointmentServiceImplementation"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;endpoint &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;binding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="wsHttpBinding"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; bindingConfiguration&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=""&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="wsHttpBinding"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;          contract&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="com.contoso.AppointmentService.AppointmentServiceContract"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;service&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;services&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;behaviors&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;behavior &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AppointmentServiceIISHost.ServiceBehavior"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;           &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;serviceMetadata &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;httpGetEnabled&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;           &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;serviceDebug &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="false"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;behavior&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;behaviors&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;serviceHostingEnvironment &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;multipleSiteBindingsEnabled&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;modules &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;runAllManagedModulesForAllRequests&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;   &lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: 16px;"&gt;最明显的这一行就是我们之前的定义，在添加服务引用的时候只显示名字，这个类是在约定的类中定义的&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; com.contoso.AppointmentService&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; AppointmentServiceImplementation : IAppointmentServiceContract&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt;     {}&lt;br /&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; }&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;现在总算知道一点原理了，但是找到这个引用该怎么使用呢？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在这之前我的服务已经写好了，运行起来效果还不错哦：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/distance/345834/r_%e5%bf%ab%e7%85%a7-201112302273.jpg" alt="查看写好服务" width="648" height="551" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;按照这个网页上显示的做法去执行 svcutil.exe 会自动生成两个文件：AppointmentServiceImplementation.cs和output.config，就和上述服务说明的一样，然后就在Client调用吧！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/distance/aggbug/2307198.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/distance/archive/2011/12/30/2307198.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/NewJourney/archive/2011/12/29/2305704.html</id><title type="text">两个进程间通讯几种方式</title><summary type="text"/><published>2011-12-29T02:33:00Z</published><updated>2011-12-29T02:33:00Z</updated><author><name>生如夏花之绚烂</name><uri>http://www.cnblogs.com/NewJourney/</uri></author><link rel="alternate" href="http://www.cnblogs.com/NewJourney/archive/2011/12/29/2305704.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/NewJourney/archive/2011/12/29/2305704.html"/><content type="html">&lt;p&gt;1.发消息&lt;/p&gt;&#xD;
&lt;p&gt;2.Socket&lt;/p&gt;&#xD;
&lt;p&gt;3.管道Pipe&lt;/p&gt;&#xD;
&lt;p&gt;4.邮槽MailSlot&lt;/p&gt;&#xD;
&lt;p&gt;5.DDE&lt;/p&gt;&lt;img src="http://www.cnblogs.com/NewJourney/aggbug/2305704.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/NewJourney/archive/2011/12/29/2305704.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/haisongvip/archive/2011/12/24/2300645.html</id><title type="text">必须掌握8个基本DOS命令</title><summary type="text"/><published>2011-12-24T12:33:00Z</published><updated>2011-12-24T12:33:00Z</updated><author><name>彭海松</name><uri>http://www.cnblogs.com/haisongvip/</uri></author><link rel="alternate" href="http://www.cnblogs.com/haisongvip/archive/2011/12/24/2300645.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/haisongvip/archive/2011/12/24/2300645.html"/><content type="html">&lt;div&gt;&lt;div&gt;下面的这些DOS命令是我几年前在网上看到整理下来的，在此分享一下：&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;一，ping&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说，ping命令是第一个必须掌握的DOS命令，它所利用的原理是这样的：网络上的机器都有唯一确定的IP地址，我们给目标IP地址发送一个数据包，对方就要返回一个同样大小的数据包，根据返回的数据包我们可以确定目标主机的存在，可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧，在DOS窗口中键入：ping /? 回车，。所示的帮助画面。在此，我们只掌握一些基本的很有用的参数就可以了。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-t 表示将不间断向目标IP发送数据包，直到我们强迫其停止。试想，如果你使用100M的宽带接入，而目标IP是56K的小猫，那么要不了多久，目标IP就因为承受不了这么多的数据而掉线，呵呵，一次攻击就这么简单的实现了。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-l 定义发送数据包的大小，默认为32字节，我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用，会有更好的效果哦。 　　&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-n 定义向目标IP发送数据包的次数，默认为3次。如果网络速度比较慢，3次对我们来说也浪费了不少时间，因为现在我们的目的仅仅是判断目标IP是否存在，那么就定义为一次吧。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　说明一下，如果-t 参数和 -n参数一起使用，ping命令就以放在后面的参数为标准，比如&amp;#8220;ping IP -t -n 3&amp;#8221;，虽然使用了-t参数，但并不是一直ping下去，而是只ping 3次。另外，ping命令不一定非得ping IP，也可以直接ping主机域名，这样就可以得到主机的IP。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　下面我们举个例子来说明一下具体用法。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒，从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统，之所以说&amp;#8220;初步判断&amp;#8221;是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　（小知识：如果TTL=128，则表示目标主机可能是Win2000；如果TTL=250，则目标主机可能是Unix）&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　至于利用ping命令可以快速查找局域网故障，可以快速搜索最快的QQ服务器，可以对别人进行ping攻击&amp;#8230;&amp;#8230;这些就靠大家自己发挥了。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　二，nbtstat&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接，使用这个命令你可以得到远程主机的NETBIOS信息，比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。 　　&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-a 使用这个参数，只要你知道了远程主机的机器名称，就可以得到它的NETBIOS信息（下同）。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-A 这个参数也可以得到远程主机的NETBIOS信息，但需要你知道它的IP。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-n 列出本地机器的NETBIOS信息。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　当得到了对方的IP或者机器名的时候，就可以使用nbtstat命令来进一步得到对方的信息了，这又增加了我们入侵的保险系数。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　三，netstat&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这是一个用来查看网络状态的命令，操作简便功能强大。 　　&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-a 查看本地机器的所有开放端口，可以有效发现和预防木马，可以知道机器所开的服务等信息。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法：netstat -a IP。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　-r 列出当前的路由信息，告诉我们本地机器的网关、子网掩码等信息。用法：netstat -r IP。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　四，tracert&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　跟踪路由信息，使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径，这对我们了解网络布局和结构很有帮助。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这里说明数据从本地机器传输到192.168.0.1的机器上，中间没有经过任何中转，说明这两台机器是在同一段局域网内。用法：tracert IP。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;五，net&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这个命令是网络命令中最重要的一个，必须透彻掌握它的每一个子命令的用法，因为它的功能实在是太强大了，这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令，键入net /?回车。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　在这里，我们重点掌握几个入侵常用的子命令。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net view&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　使用此命令查看远程主机的所以共享资源。命令格式为net view \\IP。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net use&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　把远程主机的某个共享资源影射为本地盘符，图形界面方便使用，呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接（net&amp;nbsp;use $"&amp;gt;\\IP\IPC$ "password" /user:"name"），建立了IPC$连接后，呵呵，就可以上传文件了：copy nc.exe&amp;nbsp;$"&amp;gt;\\192.168.0.7\admin$，表示把本地目录下的nc.exe传到远程主机，结合后面要介绍到的其他DOS命令就可以实现入侵了。　&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net start&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　使用它来启动远程主机上的服务。当你和远程主机建立连接后，如果发现它的什么服务没有启动，而你又想利用此服务怎么办？就使用这个命令来启动吧。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; 用法：net start servername，成功启动了telnet服务。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net stop&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　入侵后发现远程主机的某个服务碍手碍脚，怎么办？利用这个命令停掉就ok了，用法和net start同。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net user&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　查看和帐户有关的情况，包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的，最重要的，它为我们克隆帐户提供了前提。键入不带参数的net user，可以查看所有用户，包括已经禁用的。下面分别讲解。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　1，net user abcd 1234 /add，新建一个用户名为abcd，密码为1234的帐户，默认为user组成员。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　2，net user abcd /del，将用户名为abcd的用户删除。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　3，net user abcd /active:no，将用户名为abcd的用户禁用。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　4，net user abcd /active:yes，激活用户名为abcd的用户。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　5，net user abcd，查看用户名为abcd的用户的情况&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net localgroup&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　查看所有和用户组有关的信息和进行相关操作。键入不带参数的net&amp;nbsp;localgroup即列出当前所有的用户组。在入侵过程中，我们一般利用它来把某个帐户提升为administrator组帐户，这样我们利用这个帐户就可以控制整个远程主机了。用法：net localgroup groupname username /add。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　现在我们把刚才新建的用户abcd加到administrator组里去了，这时候abcd用户已经是超级管理员了，呵呵，你可以再使用net user abcd来查看他的状态。但这样太明显了，网管一看用户情况就能漏出破绽，所以这种方法只能对付菜鸟网管，但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员，这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　net time&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面，那么也许就用不到这个命令了。但简单的入侵成功了，难道只是看看吗？我们需要进一步渗透。这就连远程主机当前的时间都需要知道，因为利用时间和其他手段（后面会讲到）可以实现某个命令和程序的定时启动，为我们进一步入侵打好基础。用法：net time \\IP。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　六，at&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序（知道net time的重要了吧？）。当我们知道了远程主机的当前时间，就可以利用此命令让其在以后的某个时间（比如2分钟后）执行某个程序和命令。用法：at time&amp;nbsp;command \\computer。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　表示在6点55分时，让名称为a-01的计算机开启telnet服务（这里net start&amp;nbsp;telnet即为开启telnet服务的命令）。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;七，ftp&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　大家对这个命令应该比较熟悉了吧？网络上开放的ftp的主机很多，其中很大一部分是匿名的，也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机（一般都是开了21端口的机器），如果你还不会使用ftp的命令怎么办？下面就给出基本的ftp命令使用方法。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　首先在命令行键入ftp回车，出现ftp的提示符，这时候可以键入&amp;#8220;help&amp;#8221;来查看帮助（任何DOS命令都可以使用此方法查看其帮助)。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　大家可能看到了，这么多命令该怎么用？其实也用不到那么多，掌握几个基本的就够了。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　首先是登陆过程，这就要用到open了，直接在ftp的提示符下输入&amp;#8220;open 主机IP ftp端口&amp;#8221;回车即可，一般端口默认都是21，可以不写。接着就是输入合法的用户名和密码进行登陆了，这里以匿名ftp为例介绍。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　用户名和密码都是ftp，密码是不显示的。当提示**** logged in时，就说明登陆成功。这里因为是匿名登陆，所以用户显示为Anonymous。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　接下来就要介绍具体命令的使用方法了。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　dir 跟DOS命令一样，用于查看服务器的文件，直接敲上dir回车，就可以看到此ftp服务器上的文件。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　cd 进入某个文件夹。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　get 下载文件到本地机器。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了，如果可以，呵呵，该怎么 利用就不多说了，大家就自由发挥去吧。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　bye 退出当前连接。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　quit 同上。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　八，telnet&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　功能强大的远程登陆命令，几乎所有的入侵者都喜欢用它，屡试不爽。为什么？它操作简单，如同使用自己的机器一样，只要你熟悉DOS命令，在成功以administrator身份连接了远程机器后，就可以用它来**想干的一切了。下面介绍一下使用方法，首先键入telnet回车，再键入help查看其帮助信息。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　然后在提示符下键入open IP回车，这时就出现了登陆窗口，让你输入合法的用户名和密码，这里输入任何密码都是不显示的。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　当输入用户名和密码都正确后就成功建立了telnet连接，这时候你就在远程主机上具有了和此用户一样的权限，利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;　　另外大家应该清楚，任何人要想进入系统，必须得有一个合法的用户名和密码（输入法漏洞差不多绝迹了吧），哪怕你拿到帐户的只有一个很小的权限，你也可以利用它来达到最后的目的。所以坚决消灭空口令，给自己的帐户加上一个强壮的密码，是最好的防御弱口令入侵的方法。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/haisongvip/aggbug/2300645.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/haisongvip/archive/2011/12/24/2300645.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lgm1006/archive/2011/12/18/2291690.html</id><title type="text">win7 下发wifi热点 供手机使用无线网</title><summary type="text"/><published>2011-12-18T03:49:00Z</published><updated>2011-12-18T03:49:00Z</updated><author><name>画哲</name><uri>http://www.cnblogs.com/lgm1006/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lgm1006/archive/2011/12/18/2291690.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lgm1006/archive/2011/12/18/2291690.html"/><content type="html">&lt;p&gt;由于这段时间流量耗损巨大。无意间有人告诉我说可以用笔记本的无线网卡发射wifi热点给手机用。于是虚心求教，自己实践了下，貌似可以了。在这里和大家分享下。。&lt;br /&gt;　　首先就是要准备好有一台带有无线网卡的笔记本电脑，或...台式机买个无线适配器也应该得吧。。由于没有赞助商，所以自己就没有实践过了。有想法的可以自己到时候试试。&lt;br /&gt;　　。。。&lt;br /&gt;　　准备好之后，就开始吧。。&lt;br /&gt;　　1. cmd 打开 dos 窗口&lt;br /&gt;　　依次运行dos命令：netsh--&amp;gt;wlan---&amp;gt;set hostednetwork ssid=用户名 key=密码---&amp;gt;start hostednetwork 刚刚的用户名&lt;br /&gt;　　如果有什么不懂的可以敲击dos命令 空格加？号。。即可看见提示。。&lt;br /&gt;　　2.这样。基本的用无限网卡虚拟wifi网卡就虚拟出来了，接下来就是分享自己的本地连接给它了，打开网络共享中心。打开本地连接的属性&lt;br /&gt;　　然后选择共享选项卡，&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/293234/2011121811482551.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;　　这个时候，有的人可能就出问题了，那就是不能共享，有一个什么.......(null).....的问题。&lt;br /&gt;　　如果以上设置都正确却出现无法实现共享的情况一般是ICS服务没有打开&lt;br /&gt;　　下面右击我的电脑&amp;mdash;&amp;mdash;管理&amp;mdash;&amp;mdash;服务和应用程序&amp;mdash;&amp;mdash;服务&amp;mdash;&amp;mdash;Internet Connection Sharing (ICS)。?&lt;br /&gt;　　&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/293234/2011121811483641.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;　　(2)右击选择属性&amp;mdash;&amp;mdash;启动类型选择&amp;ldquo;自动&amp;rdquo;(开机自动启动)&amp;mdash;&amp;mdash;单击下方&amp;ldquo;启动&amp;rdquo;按钮(验证当前设置能否开启服务)。?&lt;br /&gt;　　(3)如果提示无法启动说明与ICS有依存关系的某些服务没有启动，点开属性里&amp;ldquo;依存关系&amp;rdquo;标签，依次在服务管理列表里找到这4个服务，与之前一样设置成自动启动类型，并点击&amp;ldquo;启动&amp;rdquo;尝试开启服务，如果该服务也无法开启，则继续寻找该服务的&amp;ldquo;依存关系&amp;rdquo;服务，直到与ICS存在依存关系的4项服务全部开启，才能开启ICS服务。&lt;br /&gt;　　(类似等级金字塔，ICS服务在金字塔最上方，与之依存的服务按等级分布在金字塔每层，只有将下层服务开启后才能开启顶层的ICS服务)。?&lt;br /&gt;　　?。。&lt;br /&gt;　　待你全部设置好了之后。。那么就赶快来试试他的极速吧。。（本人在2M的宽带下开启，测试手机下载的时候最高可以达到150 kb/s。。。）&lt;br /&gt;　　在这里我还想说一个问题就是。我是使用师大的校园网，有一个问题就是我们需要使用锐捷认证客户端。。这个东西有时候确实很恶心。。可能在你上面的全部都设置好了时候，依然还是有问题，那便是，连上一段时间后，突然跳出一个什么ip冲突的东西来。。&lt;br /&gt;　　当然我们不能就此罢休。。只要思想不滑坡，解决的办法总比问题多。&lt;br /&gt;　　原因就在于，因为锐捷默认是每隔一分钟扫描一次，看你有没有多网卡，有没有代理什么的，有的话就自动下线了,这就给我们的应用带来很大不便。。&lt;br /&gt;　　破解方法就是：&lt;br /&gt;　　下载一个反汇编的工具。这里使用UltraEdit&lt;br /&gt;　　然后打开 锐捷的 8021x.exe,&lt;br /&gt;　　查找60EA00006A06,&lt;br /&gt;　　修改为60EAFFFF6A06即可。?&lt;br /&gt;　　原理大概就是：&lt;br /&gt;　　反汇编8021x.exe，然后查找 60EA0000，&lt;br /&gt;　　这是因为1分钟=60000毫秒= 0x0000EA60毫秒（settimer的时间参数为UINT ）&lt;br /&gt;　　只发现有两处：&lt;br /&gt;　　第一处：&lt;br /&gt;　　* Reference To: MFC42.Ordinal:06E8, Ord:06E8h&lt;br /&gt;　　|&lt;br /&gt;　　:0042B253 E868340000 Call 0042E6C0&lt;br /&gt;　　:0042B258 8B4E20 mov ecx, dword ptr [esi+20]&lt;br /&gt;　　:0042B25B 6A00 push 00000000&lt;br /&gt;　　:0042B25D 6860EA0000 push 0000EA60&lt;br /&gt;　　:0042B262 6A0A push 0000000A&lt;br /&gt;　　:0042B264 51 push ecx&lt;br /&gt;　　* Reference To: USER32.SetTimer, Ord:027Ah&lt;br /&gt;　　|&lt;br /&gt;　　:0042B265 FF1514384300 Call dword ptr [00433814]&lt;br /&gt;　　第二处：&lt;br /&gt;　　* Referenced by a (U)nconditional or (C)onditional Jump at Address:&lt;br /&gt;　　|:004069C0(C)&lt;br /&gt;　　|&lt;br /&gt;　　:004069E8 6A00 push 00000000&lt;br /&gt;　　:004069EA 6860EA0000 push 0000EA60&lt;br /&gt;　　:004069EF 6A06 push 00000006&lt;br /&gt;　　:004069F1 6A00 push 00000000&lt;br /&gt;　　:004069F3 FFD7 call edi&lt;br /&gt;　　:004069F5 8BCE mov ecx, esi&lt;br /&gt;　　:004069F7 8986D80E0000 mov dword ptr [esi+00000ED8], eax&lt;br /&gt;　　:004069FD E83E220000 call 00408C40&lt;br /&gt;　　:00406A02 5F pop edi&lt;br /&gt;　　* Referenced by a (U)nconditional or (C)onditional Jump at Address:&lt;br /&gt;　　|:00406948(C)&lt;br /&gt;　　|&lt;br /&gt;　　:00406A03 5E pop esi&lt;br /&gt;　　:00406A04 C20800 ret 0008?&lt;br /&gt;　　第一处的后面有很明显的一个settimer，所以，怀疑在这里。&lt;br /&gt;　　把第一处的 push 0000EA60 用 UltraEdit 修改为 push 00003075&lt;br /&gt;　　即把一分钟改30秒，在多网卡的情况下运行认证系统，看是否半分钟后出现运行&lt;br /&gt;　　环境不正确的提示，发现还是一分钟后提示，修改无效。&lt;br /&gt;　　把第一处改还原，修改第二处，看结果，发现半分钟后就出现提示，说明这里就&lt;br /&gt;　　是关键。如何修改呢？简单的方法是把时间改的尽可能大，把push 0000EA60&lt;br /&gt;　　修改为：&lt;br /&gt;　　push FFFFEA60&lt;br /&gt;　　然后打开虚拟机的虚拟网卡，哈哈，烦人的掉线现象消失了&lt;br /&gt;　　时间FFFFEA60是多少？ &amp;gt;45天，45天重启一次，还有什么可担心的呢?&lt;br /&gt;　　这时候锐捷认真的校园网亦可畅行无阻了。。后面锐捷的东西由于本人电脑属台式，本人尚未亲自实践。仅仅借用朋友电脑实践了前面部分，所以有想法的自己亲自实践一下吧。&lt;br /&gt;　　提醒一句，就是在你反汇编之前最好备份一下那个东西。。&lt;br /&gt;　　如有不足或不对之处，还请大家指正。。。。&lt;br /&gt;　　最后我这里提供了两个文件，如果大家闲每次开启（注意，这是需要每次上都要自己开启的）麻烦的话可以直接运行本文件就可以开启承接网络了。。。1.bat是设置文件 ssid=gm_wifi key=01234567 2.bat是启动文件。。&lt;br /&gt;　　大家有需要的话可以联系：QQ345518067。。。&lt;br /&gt;　　如有不足或不对之处，还请大家指正。。。。?&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lgm1006/aggbug/2291690.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lgm1006/archive/2011/12/18/2291690.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caodaiming/archive/2011/12/18/2291669.html</id><title type="text">windows phone 学习笔记 四</title><summary type="text"/><published>2011-12-18T03:26:00Z</published><updated>2011-12-18T03:26:00Z</updated><author><name>good man</name><uri>http://www.cnblogs.com/caodaiming/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caodaiming/archive/2011/12/18/2291669.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caodaiming/archive/2011/12/18/2291669.html"/><content type="html">&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;&lt;strong&gt;设置应用程序的背景图片：&lt;/strong&gt;&lt;/p&gt;    &lt;pre &gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;image1_MouseLeftButtonDown(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;MouseButtonEventArgs &lt;/span&gt;e)&#xD;
        {&#xD;
            SetAppBackground(&lt;span style="color: #a31515"&gt;&amp;quot;/ChangeBackground;component/Images/Lighthouse.png&amp;quot;&lt;/span&gt;);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: blue"&gt;private static void &lt;/span&gt;SetAppBackground(&lt;span style="color: blue"&gt;string &lt;/span&gt;imageName)&#xD;
        {&#xD;
            &lt;span style="color: blue"&gt;var &lt;/span&gt;app = &lt;span style="color: #2b91af"&gt;Application&lt;/span&gt;.Current &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;App&lt;/span&gt;;&#xD;
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(app == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&#xD;
                &lt;span style="color: blue"&gt;return&lt;/span&gt;;&#xD;
&#xD;
            &lt;span style="color: blue"&gt;var &lt;/span&gt;imageBrush = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ImageBrush&#xD;
            &lt;/span&gt;{&#xD;
                ImageSource = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(imageName, &lt;span style="color: #2b91af"&gt;UriKind&lt;/span&gt;.Relative))&#xD;
            };&#xD;
            app.RootFrame.Background = imageBrush;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: blue"&gt;private void &lt;/span&gt;image2_MouseLeftButtonDown(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;MouseButtonEventArgs &lt;/span&gt;e)&#xD;
        {&#xD;
            SetAppBackground(&lt;span style="color: #a31515"&gt;&amp;quot;/ChangeBackground;component/Images/Tulips.jpg&amp;quot;&lt;/span&gt;);&#xD;
        }&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/caodaiming/201112/201112181126254824.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="a" border="0" alt="a" src="http://images.cnblogs.com/cnblogs_com/caodaiming/201112/201112181126262938.png" width="148" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://images.cnblogs.com/cnblogs_com/caodaiming/201112/201112181126278087.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="b" border="0" alt="b" src="http://images.cnblogs.com/cnblogs_com/caodaiming/201112/201112181126289789.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/caodaiming/aggbug/2291669.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caodaiming/archive/2011/12/18/2291669.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazypig/archive/2011/12/17/2290935.html</id><title type="text">如何在win7下打开xp系统时建立的&amp;quot;..&amp;quot;秘密文件夹</title><summary type="text"/><published>2011-12-17T02:44:00Z</published><updated>2011-12-17T02:44:00Z</updated><author><name>CrazyPig</name><uri>http://www.cnblogs.com/crazypig/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazypig/archive/2011/12/17/2290935.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazypig/archive/2011/12/17/2290935.html"/><content type="html">&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;由于各种原因，一直都在用xp，早两天才换上了win7系统，加入了xin7联盟，还不错。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;但是，突然发现了一个灰常严峻的难题：xp系统时，利用windows的文件命名的小bug，建立的&lt;span style="color: #ff0000;"&gt;"xxx.."秘密文件夹&lt;/span&gt;，在win7居然打不开了！！！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/299091/2011121710131310.jpg" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;这不是坑爹吧？各种私人资料都在里面了，应有尽有。。。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;还好,有度娘、谷姐在，经过各种尝试，终于捣弄出来了，原来这么简单。。。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;废话不多说，记录下简单的操作，方便自己及他人.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;1、在cmd中进入秘密文件所在目录&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;2、输入&lt;span style="color: #ff0000;"&gt; dir /x&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/299091/2011121710235422.jpg" alt="" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff0000; font-size: 16px;"&gt;注意文件名。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/299091/2011121710275441.jpg" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;3、得出类似于xxx~1的短文件名（原来建立名为xxx..\）把你原来打开命令中的xxx..\改为xxx~1\就行了.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;成功进入，如截图。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/299091/2011121710282859.jpg" alt="" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;-------------------------------------------------------------完美分割线---------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;当然还有各种各样的方法，例如双系统，利用PE取出里面的文件，各种软件之类的。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;但是最王道的做法还是备份好重要资料，不然会死人滴。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;硬盘恢复也是挺麻烦的 =。=&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazypig/aggbug/2290935.html?type=0" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazypig/archive/2011/12/17/2290935.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
