<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>系统设计</title><link>http://blog.vckbase.com/star/category/870.html</link><description>系统设计</description><managingEditor>blog of vc_student</managingEditor><dc:language>af</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>blog of vc_student</dc:creator><title>取得网卡信息（转）</title><link>http://blog.vckbase.com/star/archive/2007/08/12/28501.html</link><pubDate>Sun, 12 Aug 2007 12:56:00 GMT</pubDate><guid>http://blog.vckbase.com/star/archive/2007/08/12/28501.html</guid><wfw:comment>http://blog.vckbase.com/star/comments/28501.html</wfw:comment><comments>http://blog.vckbase.com/star/archive/2007/08/12/28501.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/star/comments/commentRss/28501.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/star/services/trackbacks/28501.html</trackback:ping><description>&lt;P&gt;//使用ATL&lt;BR&gt;#pragma&amp;nbsp;once&lt;/P&gt;
&lt;P&gt;#include "atlstr.h"&lt;BR&gt;#include "iphlpapi.h"&lt;BR&gt;#pragma comment(lib,"iphlpapi.lib") &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;class&amp;nbsp;CDnpNetworkInterface&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;_MIB_IFTABLE*&amp;nbsp;_pInfoBuffer;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;protected:&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;bool&amp;nbsp;GetNicInformation(void)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;ret;&lt;BR&gt;&amp;nbsp;&amp;nbsp;ULONG&amp;nbsp;dwSize;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;dwSize = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;ret = ::GetIfTable(NULL,&amp;amp;dwSize,TRUE);&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(ret != NO_ERROR &amp;amp;&amp;amp; ret != ERROR_INSUFFICIENT_BUFFER)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;if(_pInfoBuffer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;(BYTE*)_pInfoBuffer;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;_pInfoBuffer = (_MIB_IFTABLE*)new BYTE[dwSize];&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(_pInfoBuffer == NULL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;ZeroMemory(_pInfoBuffer,dwSize);&lt;BR&gt;&amp;nbsp;&amp;nbsp;ret = ::GetIfTable(_pInfoBuffer,&amp;amp;dwSize,TRUE);&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(ret != NO_ERROR)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;(BYTE*)_pInfoBuffer;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_pInfoBuffer = NULL;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;bool&amp;nbsp;IsValidInfo(void)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(_pInfoBuffer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;GetNicInformation();&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;public:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;CDnpNetworkInterface()&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;_pInfoBuffer = NULL;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;~CDnpNetworkInterface()&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(_pInfoBuffer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;(BYTE*)_pInfoBuffer;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;DWORD&amp;nbsp;GetNicCount(void)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(IsValidInfo() == false)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;_pInfoBuffer-&amp;gt;dwNumEntries;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;bool&amp;nbsp;GetNicName(DWORD dwIndex,CAtlString* pstrName)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(pstrName == NULL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;*pstrName = _T("");&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(dwIndex &amp;gt;= GetNicCount())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;*pstrName = (char*)_pInfoBuffer-&amp;gt;table[dwIndex].bDescr;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;bool&amp;nbsp;GetNicMacAddress(DWORD dwIndex,CAtlString* pstrMacAddress,int nFormat=0)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(pstrMacAddress == NULL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;*pstrMacAddress = _T("");&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(dwIndex &amp;gt;= GetNicCount())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;switch(nFormat)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;case&amp;nbsp;1:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pstrMacAddress-&amp;gt;Format(_T("%02X %02X %02X %02X %02X %02X")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[0]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[1]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[2]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[3]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[4]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[5]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pstrMacAddress-&amp;gt;Format(_T("%02X%02X%02X%02X%02X%02X")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[0]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[1]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[2]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[3]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[4]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[5]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;case&amp;nbsp;0:&lt;BR&gt;&amp;nbsp;&amp;nbsp;default:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pstrMacAddress-&amp;gt;Format(_T("%02X-%02X-%02X-%02X-%02X-%02X")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[0]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[1]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[2]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[3]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[4]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,_pInfoBuffer-&amp;gt;table[dwIndex].bPhysAddr[5]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;DWORD&amp;nbsp;GetNicConnectionSpeed(DWORD dwIndex)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(dwIndex &amp;gt;= GetNicCount())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;_pInfoBuffer-&amp;gt;table[dwIndex].dwSpeed;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;bool&amp;nbsp;IsNicWorking(DWORD dwIndex)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(dwIndex &amp;gt;= GetNicCount())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(_pInfoBuffer-&amp;gt;table[dwIndex].dwOperStatus == MIB_IF_OPER_STATUS_OPERATIONAL) ? true : false;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;//使用方法&lt;BR&gt;void&amp;nbsp;Test(void)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;bool&amp;nbsp;&amp;nbsp;ret;&lt;BR&gt;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;i;&lt;BR&gt;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;dwSize;&lt;BR&gt;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;dwSpeed;&lt;BR&gt;&amp;nbsp;CAtlString&amp;nbsp;strName;&lt;BR&gt;&amp;nbsp;CAtlString&amp;nbsp;strMacAddress;&lt;BR&gt;&amp;nbsp;CAtlString&amp;nbsp;strBuff;&lt;BR&gt;&amp;nbsp;CAtlString&amp;nbsp;strMessage;&lt;BR&gt;&amp;nbsp;CDnpNetworkInterface&amp;nbsp;cDevice;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;dwSize = cDevice.GetNicCount();&lt;BR&gt;&amp;nbsp;for(i = 0; i &amp;lt; dwSize; i++)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;ret = cDevice.GetNicName(i,&amp;amp;strName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(ret == false)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;ret = cDevice.GetNicMacAddress(i,&amp;amp;strMacAddress);&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(ret == false)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;dwSpeed = cDevice.GetNicConnectionSpeed(i);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;strBuff.Format(_T("描述：%s\nMAC地址：%s\n连接速度：%dKbps\n"),strName,strMacAddress,dwSpeed/1000);&lt;BR&gt;&amp;nbsp;&amp;nbsp;strMessage += strBuff;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(cDevice.IsNicWorking(i))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strMessage += _T("工作：正常\n");&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strMessage += _T("工作：停止中\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;strMessage += _T("\n");&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;::MessageBox(NULL,strMessage,_T(""),MB_OK);&lt;BR&gt;}&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/star/aggbug/28501.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>blog of vc_student</dc:creator><title>没事写的一个arp欺骗监测工具</title><link>http://blog.vckbase.com/star/archive/2007/04/29/25872.html</link><pubDate>Sun, 29 Apr 2007 09:19:00 GMT</pubDate><guid>http://blog.vckbase.com/star/archive/2007/04/29/25872.html</guid><wfw:comment>http://blog.vckbase.com/star/comments/25872.html</wfw:comment><comments>http://blog.vckbase.com/star/archive/2007/04/29/25872.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/star/comments/commentRss/25872.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/star/services/trackbacks/25872.html</trackback:ping><description>http://blog.vckbase.com/Files/star/ArpMonitor.rar&lt;BR&gt;&lt;BR&gt;谁有空帮测一下？别笑我呀，软件太不完善！&lt;img src ="http://blog.vckbase.com/star/aggbug/25872.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>blog of vc_student</dc:creator><title>可以这样监视系统性能参数</title><link>http://blog.vckbase.com/star/archive/2006/05/18/20165.html</link><pubDate>Thu, 18 May 2006 08:20:00 GMT</pubDate><guid>http://blog.vckbase.com/star/archive/2006/05/18/20165.html</guid><wfw:comment>http://blog.vckbase.com/star/comments/20165.html</wfw:comment><comments>http://blog.vckbase.com/star/archive/2006/05/18/20165.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/star/comments/commentRss/20165.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/star/services/trackbacks/20165.html</trackback:ping><description>&lt;HTML&gt;
&lt;BODY BGCOLOR=#C0C0C0&gt;
&lt;OBJECT
CLASSID="clsid:C4D2D8E0-D1DD-11CE-940F-008029004347"
	ID="MyMonitor"
	HEIGHT=80%
	WIDTH=100%&gt;
&lt;/OBJECT&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;&lt;img src ="http://blog.vckbase.com/star/aggbug/20165.html" width = "1" height = "1" /&gt;</description></item></channel></rss>