在新建的工程里面添加一个类
即:以下一个类
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>