MFC获取电脑硬盘序列号(附源代码)
在新建的project里面加入一个类
即:下面一个类
GetHDSerial.cpp
<code class="hljs cs has-numbering" style="font-family: 'Source Code Pro', monospace; display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// GetHDSerial.cpp: implementation of the CGetHDSerial class.</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Download by http://www.newxing.com/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include "stdafx.h"</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include "GetHDSerial.h"</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> m_buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
WORD m_serial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
DWORD m_OldInterruptAddress;
DWORDLONG m_IDTR; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 等待硬盘空暇</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> unsigned <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> WaitHardDiskIdle()
{
BYTE byTemp; Waiting:
_asm
{
mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f7</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">in</span> al, dx
cmp al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x80</span>
jb Endwaiting
jmp Waiting
}
Endwaiting:
_asm
{
mov byTemp, al
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> byTemp;
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//中断服务程序</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span> _declspec( naked )InterruptProcess(<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> byTemp;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i;
WORD temp;
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//保存寄存器值</span>
_asm
{
push eax
push ebx
push ecx
push edx
push esi
} WaitHardDiskIdle();<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//等待硬盘空暇状态</span>
_asm
{
mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f6</span>
mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xa0</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al
}
byTemp = WaitHardDiskIdle(); <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//若直接在Ring3级运行等待命令,会进入死循环</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ((byTemp&<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x50</span>)!=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x50</span>)
{
_asm <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 恢复中断现场并退出中断服务程序</span>
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
} _asm
{
mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f6</span> <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//命令端口1f6,选择驱动器0</span>
mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xa0</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al
inc dx
mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xec</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//发送读驱动器參数命令</span>
}
byTemp = WaitHardDiskIdle();
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ((byTemp&<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x58</span>)!=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x58</span>)
{
_asm <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 恢复中断现场并退出中断服务程序</span>
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//读取硬盘控制器的所有信息</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++)
{
_asm
{
mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f0</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">in</span> ax, dx
mov temp, ax
}
m_serial[i] = temp;
}
_asm
{
pop esi
pop edx
pop ecx
pop ebx
pop eax
iretd
}
}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Construction/Destruction</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span> CGetHDSerial::CGetHDSerial()
{ } CGetHDSerial::~CGetHDSerial()
{ }
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取硬盘序列号函数</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* CGetHDSerial::GetHDSerial()
{
m_buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>]=<span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\n'</span>;
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到当前操作系统版本号</span>
OSVERSIONINFO OSVersionInfo;
OSVersionInfo.dwOSVersionInfoSize = <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(OSVERSIONINFO);
GetVersionEx( &OSVersionInfo);
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (OSVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
{
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows 9x/ME下读取硬盘序列号</span>
WORD m_wWin9xHDSerial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
Win9xReadHDSerial(m_wWin9xHDSerial);
strcpy (m_buffer, WORDToChar (m_wWin9xHDSerial, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">19</span>));
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
{
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取硬盘序列号</span>
DWORD m_wWinNTHDSerial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 推断是否有SCSI硬盘</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ( ! WinNTReadIDEHDSerial(m_wWinNTHDSerial))
WinNTReadSCSIHDSerial(m_wWinNTHDSerial);
strcpy (m_buffer, DWORDToChar (m_wWinNTHDSerial, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">19</span>));
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> m_buffer;
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows9X/ME系统下读取硬盘序列号</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span> _stdcall CGetHDSerial::Win9xReadHDSerial(WORD * buffer)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++)
buffer[i]=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
_asm
{
push eax
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//获取改动的中断的中断描写叙述符(中断门)地址</span>
sidt m_IDTR
mov eax,dword ptr [m_IDTR+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h]
add eax,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">08</span>h+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h
cli
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//保存原先的中断入口地址</span>
push ecx
mov ecx,dword ptr [eax]
mov cx,word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h]
mov dword ptr m_OldInterruptAddress,ecx
pop ecx
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//设置改动的中断入口地址为新的中断处理程序入口地址</span>
push ebx
lea ebx,InterruptProcess
mov word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h],bx
shr ebx,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>h
mov word ptr [eax+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h],bx
pop ebx
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//运行中断,转到Ring 0(相似CIH病毒原理)</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>h
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//恢复原先的中断入口地址</span>
push ecx
mov ecx,dword ptr m_OldInterruptAddress
mov word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h],cx
shr ecx,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>h
mov word ptr [eax+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h],cx
pop ecx
sti
pop eax
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++)
buffer[i]=m_serial[i];
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows 9x/ME系统下,将字类型(WORD)的硬盘信息转换为字符类型(char)</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> * CGetHDSerial::WORDToChar (WORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>];
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> index = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> position = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 依照高字节在前。低字节在后的顺序将字数组diskdata 中内容存入到字符串string中 </span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = firstIndex; index <= lastIndex; index++)
{
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入字中的高字节</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] / <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
position++;
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入字中的低字节</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] % <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
position++;
}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 加入字符串结束标志</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 删除字符串中空格</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = position - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; index > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span> && <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">' '</span> == <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index]; index--)
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>; <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span>;
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP系统下,将双字类型(DWORD)的硬盘信息转换为字符类型(char)</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* CGetHDSerial::DWORDToChar (DWORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>];
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> index = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> position = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 依照高字节在前。低字节在后的顺序将双字中的低字存入到字符串string中 </span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = firstIndex; index <= lastIndex; index++)
{
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入低字中的高字节</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] / <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
position++;
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入低字中的低字节</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] % <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
position++;
}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 加入字符串结束标志</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 删除字符串中空格</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = position - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; index > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span> && <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">' '</span> == <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index]; index--)
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>; <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span>;
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取IDE硬盘序列号</span>
BOOL CGetHDSerial::WinNTReadIDEHDSerial(DWORD * buffer)
{
BYTE IdOutCmd [<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];
BOOL bFlag = FALSE;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> driveName [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
HANDLE hPhysicalDriveIOCTL = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; sprintf (driveName, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"\\\\.\\PhysicalDrive%d"</span>, drive);
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下创建文件须要管理员权限</span>
hPhysicalDriveIOCTL = CreateFileA (driveName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, NULL); <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
{
GETVERSIONOUTPARAMS VersionParams;
DWORD cbBytesReturned = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到驱动器的IO控制器版本号</span>
memset ((<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>*) &VersionParams, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(VersionParams));
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_VERSION,
NULL, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, &VersionParams,
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(VersionParams),
&cbBytesReturned, NULL) )
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (VersionParams.bIDEDeviceMap > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)
{
BYTE bIDCmd = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE或者ATAPI识别命令</span>
SENDCMDINPARAMS scip; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 假设驱动器是光驱,採用命令IDE_ATAPI_IDENTIFY。 command,</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 否则採用命令IDE_ATA_IDENTIFY读取驱动器信息</span>
bIDCmd = (VersionParams.bIDEDeviceMap >> drive & <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x10</span>)?
IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY; memset (&scip, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(scip));
memset (IdOutCmd, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(IdOutCmd));
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 获取驱动器信息</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (WinNTGetIDEHDInfo (hPhysicalDriveIOCTL,
&scip,
(PSENDCMDOUTPARAMS)&IdOutCmd,
(BYTE) bIDCmd,
(BYTE) drive,
&cbBytesReturned))
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> m = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
USHORT *pIdSector = (USHORT *)
((PSENDCMDOUTPARAMS) IdOutCmd) -> bBuffer; <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (m = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; m < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>; m++)
buffer[m] = pIdSector [m];
bFlag = TRUE; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取硬盘信息成功</span>
}
}
}
CloseHandle (hPhysicalDriveIOCTL); <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭句柄</span>
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> bFlag;
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// WindowsNT/2000/XP系统下读取SCSI硬盘序列号</span>
BOOL CGetHDSerial::WinNTReadSCSIHDSerial (DWORD * buffer)
{
buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>]=<span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\n'</span>;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> controller = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
HANDLE hScsiDriveIOCTL = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> driveName [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
sprintf (driveName, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"\\\\.\\Scsi%d:"</span>, controller);
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下不论什么权限都能够进行</span>
hScsiDriveIOCTL = CreateFileA (driveName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, NULL); <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (hScsiDriveIOCTL != INVALID_HANDLE_VALUE)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
DWORD dummy;
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; drive < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>; drive++)
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> buffer [<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) + SENDIDLENGTH];
SRB_IO_CONTROL *p = (SRB_IO_CONTROL *) buffer;
SENDCMDINPARAMS *pin =
(SENDCMDINPARAMS *) (buffer + <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL));
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 准备參数</span>
memset (buffer, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (buffer));
p -> HeaderLength = <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL);
p -> Timeout = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10000</span>;
p -> Length = SENDIDLENGTH;
p -> ControlCode = IOCTL_SCSI_MINIPORT_IDENTIFY;
strncpy ((<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *) p -> Signature, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"SCSIDISK"</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>);
pin -> irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY;
pin -> bDriveNumber = drive;
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到SCSI硬盘信息</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (DeviceIoControl (hScsiDriveIOCTL, IOCTL_SCSI_MINIPORT,
buffer,
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) +
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SENDCMDINPARAMS) - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
buffer,
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) + SENDIDLENGTH,
&dummy, NULL))
{
SENDCMDOUTPARAMS *pOut =
(SENDCMDOUTPARAMS *) (buffer + <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL));
IDSECTOR *pId = (IDSECTOR *) (pOut -> bBuffer);
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (pId -> sModelNumber [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>])
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> n = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
USHORT *pIdSector = (USHORT *) pId; <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (n = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; n < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>; n++)
buffer[n] =pIdSector [n];
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> TRUE; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取成功 </span>
}
}
}
CloseHandle (hScsiDriveIOCTL); <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭句柄</span>
}
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> FALSE; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取失败</span>
} <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取IDE设备信息</span>
BOOL CGetHDSerial::WinNTGetIDEHDInfo (HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP,
PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum,
PDWORD lpcbBytesReturned)
{
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 为读取设备信息准备參数</span>
pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;
pSCIP -> irDriveRegs.bFeaturesReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
pSCIP -> irDriveRegs.bSectorCountReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;
pSCIP -> irDriveRegs.bSectorNumberReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;
pSCIP -> irDriveRegs.bCylLowReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
pSCIP -> irDriveRegs.bCylHighReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 计算驱动器位置</span>
pSCIP -> irDriveRegs.bDriveHeadReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xA0</span> | ((bDriveNum & <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) << <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>); <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 设置读取命令</span>
pSCIP -> irDriveRegs.bCommandReg = bIDCmd;
pSCIP -> bDriveNumber = bDriveNum;
pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取驱动器信息</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_DRIVE_INFO,
(LPVOID) pSCIP,
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(SENDCMDINPARAMS) - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
(LPVOID) pSCOP,
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
lpcbBytesReturned, NULL) );
}</code><ul class="pre-numbering" style="font-family: 宋体 !important; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">2</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">3</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">4</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">5</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">6</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">7</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">8</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">9</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">10</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">11</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">12</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">13</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">14</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">15</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">16</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">17</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">18</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">19</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">20</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">21</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">22</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">23</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">24</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">25</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">26</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">27</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">28</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">29</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">30</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">31</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">32</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">33</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">34</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">35</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">36</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">37</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">38</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">39</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">40</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">41</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">42</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">43</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">44</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">45</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">46</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">47</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">48</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">49</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">50</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">51</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">52</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">53</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">54</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">55</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">56</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">57</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">58</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">59</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">60</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">61</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">62</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">63</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">64</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">65</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">66</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">67</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">68</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">69</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">70</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">71</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">72</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">73</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">74</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">75</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">76</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">77</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">78</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">79</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">80</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">81</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">82</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">83</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">84</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">85</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">86</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">87</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">88</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">89</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">90</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">91</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">92</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">93</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">94</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">95</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">96</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">97</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">98</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">99</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">100</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">101</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">102</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">103</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">104</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">105</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">106</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">107</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">108</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">109</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">110</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">111</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">112</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">113</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">114</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">115</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">116</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">117</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">118</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">119</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">120</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">121</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">122</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">123</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">124</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">125</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">126</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">127</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">128</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">129</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">130</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">131</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">132</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">133</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">134</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">135</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">136</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">137</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">138</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">139</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">140</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">141</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">142</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">143</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">144</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">145</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">146</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">147</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">148</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">149</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">150</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">151</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">152</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">153</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">154</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">155</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">156</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">157</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">158</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">159</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">160</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">161</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">162</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">163</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">164</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">165</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">166</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">167</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">168</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">169</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">170</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">171</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">172</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">173</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">174</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">175</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">176</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">177</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">178</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">179</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">180</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">181</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">182</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">183</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">184</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">185</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">186</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">187</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">188</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">189</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">190</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">191</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">192</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">193</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">194</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">195</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">196</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">197</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">198</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">199</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">200</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">201</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">202</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">203</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">204</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">205</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">206</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">207</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">208</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">209</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">210</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">211</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">212</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">213</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">214</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">215</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">216</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">217</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">218</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">219</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">220</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">221</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">222</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">223</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">224</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">225</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">226</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">227</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">228</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">229</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">230</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">231</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">232</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">233</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">234</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">235</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">236</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">237</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">238</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">239</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">240</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">241</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">242</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">243</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">244</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">245</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">246</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">247</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">248</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">249</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">250</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">251</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">252</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">253</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">254</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">255</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">256</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">257</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">258</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">259</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">260</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">261</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">262</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">263</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">264</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">265</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">266</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">267</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">268</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">269</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">270</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">271</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">272</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">273</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">274</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">275</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">276</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">277</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">278</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">279</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">280</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">281</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">282</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">283</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">284</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">285</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">286</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">287</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">288</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">289</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">290</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">291</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">292</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">293</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">294</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">295</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">296</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">297</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">298</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">299</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">300</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">301</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">302</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">303</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">304</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">305</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">306</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">307</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">308</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">309</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">310</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">311</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">312</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">313</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">314</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">315</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">316</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">317</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">318</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">319</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">320</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">321</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">322</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">323</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">324</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">325</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">326</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">327</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">328</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">329</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">330</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">331</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">332</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">333</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">334</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">335</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">336</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">337</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">338</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">339</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">340</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">341</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">342</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">343</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">344</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">345</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">346</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">347</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">348</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">349</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">350</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">351</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">352</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">353</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">354</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">355</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">356</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">357</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">358</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">359</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">360</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">361</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">362</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">363</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">364</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">365</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">366</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">367</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">368</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">369</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">370</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">371</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">372</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">373</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">374</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">375</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">376</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">377</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">378</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">379</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">380</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">381</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">382</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">383</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">384</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">385</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">386</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">387</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">388</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">389</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">390</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">391</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">392</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">393</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">394</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">395</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">396</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">397</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">398</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">399</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">400</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">401</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">402</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">403</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">404</li></ul>
GetHDSerial.h
<code class="hljs cs has-numbering" style="font-family: 'Source Code Pro', monospace; display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// GetHDSerial.h: interface for the CGetHDSerial class.</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Download by http://www.newxing.com/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include <windows.h></span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include <stdio.h></span> <span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> SENDIDLENGTH sizeof (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IDENTIFY_BUFFER_SIZE 512</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> FILE_DEVICE_SCSI 0x0000001b</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IOCTL_SCSI_MINIPORT 0x0004D008 // see NTDDSCSI.H for definition</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IDE_ATAPI_IDENTIFY 0xA1 // Returns ID sector for ATAPI.</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IDE_ATA_IDENTIFY 0xEC // Returns ID sector for ATA.</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IOCTL_GET_DRIVE_INFO 0x0007c088</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span> IOCTL_GET_VERSION 0x00074080</span>
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _IDSECTOR
{
USHORT wGenConfig;
USHORT wNumCyls;
USHORT wReserved;
USHORT wNumHeads;
USHORT wBytesPerTrack;
USHORT wBytesPerSector;
USHORT wSectorsPerTrack;
USHORT wVendorUnique[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>];
CHAR sSerialNumber[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">20</span>];
USHORT wBufferType;
USHORT wBufferSize;
USHORT wECCSize;
CHAR sFirmwareRev[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>];
CHAR sModelNumber[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">40</span>];
USHORT wMoreVendorUnique;
USHORT wDoubleWordIO;
USHORT wCapabilities;
USHORT wReserved1;
USHORT wPIOTiming;
USHORT wDMATiming;
USHORT wBS;
USHORT wNumCurrentCyls;
USHORT wNumCurrentHeads;
USHORT wNumCurrentSectorsPerTrack;
ULONG ulCurrentSectorCapacity;
USHORT wMultSectorStuff;
ULONG ulTotalAddressableSectors;
USHORT wSingleWordDMA;
USHORT wMultiWordDMA;
BYTE bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">128</span>];
} IDSECTOR, *PIDSECTOR; typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _DRIVERSTATUS
{
BYTE bDriverError; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Error code from driver, or 0 if no error.</span>
BYTE bIDEStatus; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Contents of IDE Error register.</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Only valid when bDriverError is SMART_IDE_ERROR.</span>
BYTE bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Reserved for future expansion.</span>
DWORD dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Reserved for future expansion.</span>
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS; typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SENDCMDOUTPARAMS
{
DWORD cBufferSize; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Size of bBuffer in bytes</span>
DRIVERSTATUS DriverStatus; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Driver status structure.</span>
BYTE bBuffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Buffer of arbitrary length in which to store the data read from the // drive.</span>
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SRB_IO_CONTROL
{
ULONG HeaderLength;
UCHAR Signature[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>];
ULONG Timeout;
ULONG ControlCode;
ULONG ReturnCode;
ULONG Length;
} SRB_IO_CONTROL, *PSRB_IO_CONTROL; typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _IDEREGS
{
BYTE bFeaturesReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Used for specifying SMART "commands".</span>
BYTE bSectorCountReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE sector count register</span>
BYTE bSectorNumberReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE sector number register</span>
BYTE bCylLowReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE low order cylinder value</span>
BYTE bCylHighReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE high order cylinder value</span>
BYTE bDriveHeadReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE drive/head register</span>
BYTE bCommandReg; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Actual IDE command.</span>
BYTE bReserved; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// reserved for future use. Must be zero.</span>
} IDEREGS, *PIDEREGS, *LPIDEREGS; typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SENDCMDINPARAMS
{
DWORD cBufferSize; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Buffer size in bytes</span>
IDEREGS irDriveRegs; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Structure with drive register values.</span>
BYTE bDriveNumber; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Physical drive number to send </span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// command to (0,1,2,3).</span>
BYTE bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Reserved for future expansion.</span>
DWORD dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// For future use.</span>
BYTE bBuffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Input buffer.</span>
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _GETVERSIONOUTPARAMS
{
BYTE bVersion; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Binary driver version.</span>
BYTE bRevision; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Binary driver revision.</span>
BYTE bReserved; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Not used.</span>
BYTE bIDEDeviceMap; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Bit map of IDE devices.</span>
DWORD fCapabilities; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Bit mask of driver capabilities.</span>
DWORD dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// For future use.</span>
} GETVERSIONOUTPARAMS, *PGETVERSIONOUTPARAMS, *LPGETVERSIONOUTPARAMS; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 获取硬盘序列号的类</span>
class CGetHDSerial
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">public</span>:
<span class="hljs-title" style="font-family: 宋体 !important; margin: 0px; padding: 0px; box-sizing: border-box;">CGetHDSerial</span>();
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">virtual</span> ~CGetHDSerial();
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span> _stdcall Win9xReadHDSerial(WORD * buffer);
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* GetHDSerial();
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* WORDToChar (WORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex);
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* DWORDToChar (DWORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex);
BOOL WinNTReadSCSIHDSerial(DWORD * buffer);
BOOL WinNTReadIDEHDSerial (DWORD * buffer);
BOOL WinNTGetIDEHDInfo (HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP,
PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum,
PDWORD lpcbBytesReturned);
};</code><ul class="pre-numbering" style="font-family: 宋体 !important; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">2</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">3</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">4</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">5</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">6</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">7</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">8</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">9</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">10</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">11</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">12</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">13</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">14</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">15</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">16</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">17</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">18</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">19</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">20</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">21</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">22</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">23</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">24</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">25</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">26</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">27</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">28</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">29</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">30</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">31</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">32</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">33</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">34</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">35</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">36</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">37</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">38</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">39</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">40</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">41</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">42</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">43</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">44</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">45</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">46</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">47</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">48</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">49</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">50</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">51</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">52</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">53</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">54</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">55</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">56</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">57</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">58</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">59</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">60</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">61</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">62</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">63</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">64</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">65</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">66</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">67</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">68</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">69</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">70</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">71</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">72</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">73</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">74</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">75</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">76</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">77</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">78</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">79</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">80</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">81</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">82</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">83</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">84</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">85</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">86</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">87</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">88</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">89</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">90</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">91</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">92</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">93</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">94</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">95</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">96</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">97</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">98</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">99</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">100</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">101</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">102</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">103</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">104</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">105</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">106</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">107</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">108</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">109</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">110</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">111</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">112</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">113</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">114</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">115</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">116</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">117</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">118</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">119</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">120</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">121</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">122</li></ul>
源代码下载
MFC获取电脑硬盘序列号(附源代码)的更多相关文章
- 完善DriveInfoEx源代码 获取计算机硬盘序列号
概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...
- C# 获取电脑硬盘剩余空间
获取本地硬盘的所有剩余空间: 主要应用到System.IO类库的:Driveinfo.Directory,将model转换成json需要用到Newtonsoft.Json.JsonConvert.Se ...
- C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)
在开发过程中,经常需要获取电脑的一些属性,如获取硬盘ID/CPU序列号/MAC地址作为来加密字符串. 1.硬盘 在我查看网上一些文档时,发现很多人对硬盘序列号很模糊~ 什么叫硬盘序列号?指的是作为一个 ...
- java获取电脑部分信息
获取mac地址与cpu序列号 参考博客:https://www.jb51.net/article/94793.htm 另一篇参考地址没记录下来 package util; import java.io ...
- C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑
using System.Management; namespace GLaLa { /// <summary> /// hardware_mac 的摘要说明. /// </summ ...
- java通过jni方式获取硬盘序列号(windows,linux)
linux系统java通过jni方式获取硬盘序列号 http://blog.csdn.net/starter110/article/details/8186788 使用jni在windows下读取硬盘 ...
- 转: 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
最近由于项目的需要,需要在程序中获取机器的硬盘序列号和MAC地址等信息,在C#下,可以很容易的获得这些信息,但是在C++程序中感觉比较麻烦.经过百度,发现很多大虾都是通过WMI来获取这些硬件信息的,网 ...
- C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...
- (转)通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
最近由于项目的需要,需要在程序中获取机器的硬盘序列号和MAC地址等信息,在C#下,可以很容易的获得这些信息,但是在C++程序中感觉比较麻烦.经过百度,发现很多大虾都是通过WMI来获取这些硬件信息的,网 ...
随机推荐
- fread函数和fwrite函数
1.函数功能 用来读写一个数据块. 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 ( ...
- 济南day3
连续几天都有点炸 预计的分拿不到,调整好心态,考试的时候多想一下,think twice,code once 唉,什么情况啊 题解链接 0+0+0 T1读错题输出反了 n*m%2判断是否==1 T2 ...
- [CQOI2018] 社交网络
题目背景 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息(例如微博.状态.Tweet等) 后,他的好友们也可以看见这条消息,并可能转发.转发的消息 ...
- link2005 重复定义错误
造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量. 对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下.其实这是错误的,全局变量是针对整个工程的. 正 ...
- html中的列表标签
1.<dl>定义列表,<dt>定义列表中的项目,<dd>对项目的描述 例: 效果: 2.<ul>无序列表,<li>列表项 例: 效果: 3. ...
- mysql delete auto_increment列时的注意问题
1. 说明 在对带有AUTO_INCREMENT列的表delete掉所有数据时: (1)对于MyISAM表,在delete表中所有数据时没有任何风险,随意折腾: (2)对于InnoDB表,在delet ...
- 控制显示input隐藏和查看密码
通过更改input的password和text类型即可实现 //点击函数,获取dom,判断更改属性. show(){ let input=document.getElementById("i ...
- VC++ ADO 连接 mysql
通过自己摸索和网上帮助 了解了VC++ 用ADO 连接mysql数据库的方法: 使用的方法是利用ADO通过建立ODBC数据源来最终达到访问MySQL的目的. 1.安装mysql数据库服 ...
- Odoo calendar 提醒器
Odoo calendar 提供了一个提醒功能,它包含邮件通知以及web client弹窗功能 创建日历事件的时候,可以设置提醒器 Meeting [ calendar.event ] ...
- 解题报告 之 HDU5288 OO' s Sequence
解题报告 之 HDU5288 OO' s Sequence Description OO has got a array A of size n ,defined a function f(l,r) ...