MFC获取电脑硬盘序列号(附源代码)

老子叫甜甜 提交于 2020-01-25 09:51:24

在新建的project里面加入一个类 
即:下面一个类 
GetHDSerial.cpp

<code class="hljs cs has-numbering" style="font-family: 'Source Code Pro', monospace; display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// GetHDSerial.cpp: implementation of the CGetHDSerial class.</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Download by http://www.newxing.com/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include "stdafx.h"</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include "GetHDSerial.h"</span>


<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>  m_buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
WORD  m_serial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
DWORD m_OldInterruptAddress;
DWORDLONG m_IDTR;

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 等待硬盘空暇</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> unsigned <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> WaitHardDiskIdle() 
{ 
    BYTE byTemp;

Waiting:
    _asm
    {
        mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f7</span>
        <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">in</span> al, dx
        cmp al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x80</span>
        jb Endwaiting
        jmp Waiting
    }
Endwaiting:
    _asm
    {
        mov byTemp, al
    }
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> byTemp; 
} 

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//中断服务程序</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>  _declspec( naked )InterruptProcess(<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)
{
     <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span>   byTemp;
     <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span>   i;
     WORD temp;
     <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//保存寄存器值</span>
     _asm
     {
         push eax
         push ebx
         push ecx
         push edx
         push esi
     }

     WaitHardDiskIdle();<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//等待硬盘空暇状态</span>
     _asm
     {
         mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f6</span>
         mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xa0</span>
         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al
     }
     byTemp = WaitHardDiskIdle(); <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//若直接在Ring3级运行等待命令,会进入死循环</span>
     <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ((byTemp&<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x50</span>)!=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x50</span>) 
     {
        _asm  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 恢复中断现场并退出中断服务程序</span>
        {
            pop esi
            pop edx
            pop ecx
            pop ebx
            pop eax
            iretd
        }
     }

     _asm
     {
         mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f6</span> <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//命令端口1f6,选择驱动器0</span>
         mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xa0</span>
         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al
         inc dx
         mov al, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xec</span>
         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">out</span> dx, al <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//发送读驱动器參数命令</span>
     }  
     byTemp = WaitHardDiskIdle(); 
     <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ((byTemp&<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x58</span>)!=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x58</span>) 
     {
        _asm  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 恢复中断现场并退出中断服务程序</span>
        {
             pop esi
             pop edx
             pop ecx
             pop ebx
             pop eax
             iretd
        }
     }
     <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//读取硬盘控制器的所有信息</span>
     <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++) 
     {
         _asm
         {
             mov dx, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x1f0</span>
             <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">in</span> ax, dx
             mov temp, ax
         }
         m_serial[i] = temp; 
     }                                
     _asm
     {
         pop esi
         pop edx
         pop ecx
         pop ebx
         pop eax
         iretd
     }  
}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Construction/Destruction</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>

CGetHDSerial::CGetHDSerial()
{

}

CGetHDSerial::~CGetHDSerial()
{

}
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取硬盘序列号函数</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* CGetHDSerial::GetHDSerial()
{   
  m_buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>]=<span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\n'</span>;
  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到当前操作系统版本号</span>
  OSVERSIONINFO OSVersionInfo;
  OSVersionInfo.dwOSVersionInfoSize = <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(OSVERSIONINFO);
  GetVersionEx( &OSVersionInfo);
  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (OSVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
  {   
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows 9x/ME下读取硬盘序列号</span>
      WORD m_wWin9xHDSerial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
      Win9xReadHDSerial(m_wWin9xHDSerial);  
      strcpy (m_buffer, WORDToChar (m_wWin9xHDSerial, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">19</span>));
  }
  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
  {
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取硬盘序列号</span>
      DWORD m_wWinNTHDSerial[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];  
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 推断是否有SCSI硬盘</span>
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ( ! WinNTReadIDEHDSerial(m_wWinNTHDSerial)) 
           WinNTReadSCSIHDSerial(m_wWinNTHDSerial);  
      strcpy (m_buffer, DWORDToChar (m_wWinNTHDSerial, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">19</span>));
  } 
  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> m_buffer;
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows9X/ME系统下读取硬盘序列号</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span> _stdcall CGetHDSerial::Win9xReadHDSerial(WORD * buffer)
{   
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i;      
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++) 
        buffer[i]=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
    _asm
    {
        push eax        
        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//获取改动的中断的中断描写叙述符(中断门)地址</span>
        sidt m_IDTR 
        mov eax,dword ptr [m_IDTR+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h]        
        add eax,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">08</span>h+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h
        cli
        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//保存原先的中断入口地址</span>
        push ecx
        mov ecx,dword ptr [eax]
        mov cx,word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h]
        mov dword ptr m_OldInterruptAddress,ecx
        pop ecx
        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//设置改动的中断入口地址为新的中断处理程序入口地址</span>
        push ebx
        lea ebx,InterruptProcess    
        mov word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h],bx
        shr ebx,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>h
        mov word ptr [eax+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h],bx
        pop ebx
        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//运行中断,转到Ring 0(相似CIH病毒原理)</span>
        <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>h
        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//恢复原先的中断入口地址</span>
        push ecx
        mov ecx,dword ptr m_OldInterruptAddress
        mov word ptr [eax-<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">04</span>h],cx
        shr ecx,<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10</span>h
        mov word ptr [eax+<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">02</span>h],cx
        pop ecx
        sti
        pop eax
    } 
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>;i++)      
        buffer[i]=m_serial[i];
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows 9x/ME系统下,将字类型(WORD)的硬盘信息转换为字符类型(char)</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> * CGetHDSerial::WORDToChar (WORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex)
{
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>];
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> index = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> position = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 依照高字节在前。低字节在后的顺序将字数组diskdata 中内容存入到字符串string中 </span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = firstIndex; index <= lastIndex; index++)
   {
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入字中的高字节</span>
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] / <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
      position++;
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入字中的低字节</span>
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] % <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
      position++;
   }
   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  加入字符串结束标志</span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  删除字符串中空格</span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = position - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; index > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span> && <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">' '</span> == <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index]; index--)
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>;

   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span>;
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP系统下,将双字类型(DWORD)的硬盘信息转换为字符类型(char)</span>
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* CGetHDSerial::DWORDToChar (DWORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex)
{
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>];
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> index = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> position = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 依照高字节在前。低字节在后的顺序将双字中的低字存入到字符串string中 </span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = firstIndex; index <= lastIndex; index++)
   {
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入低字中的高字节</span>
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] / <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
      position++;
      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 存入低字中的低字节</span>
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = (<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>) (diskdata [index] % <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>);
      position++;
   }
   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  加入字符串结束标志</span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [position] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  删除字符串中空格</span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (index = position - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; index > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span> && <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">' '</span> == <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index]; index--)
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span> [index] = <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\0'</span>;

   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">string</span>;
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取IDE硬盘序列号</span>
BOOL CGetHDSerial::WinNTReadIDEHDSerial(DWORD * buffer)
{
   BYTE IdOutCmd [<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];
   BOOL bFlag = FALSE;
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span>  drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> driveName [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
   HANDLE hPhysicalDriveIOCTL = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;    

   sprintf (driveName, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"\\\\.\\PhysicalDrive%d"</span>, drive);
   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Windows NT/2000/XP下创建文件须要管理员权限</span>
   hPhysicalDriveIOCTL = CreateFileA (driveName,
                            GENERIC_READ | GENERIC_WRITE, 
                            FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                            OPEN_EXISTING, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, NULL);

   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
   {
       GETVERSIONOUTPARAMS VersionParams;
       DWORD               cbBytesReturned = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;

       <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到驱动器的IO控制器版本号</span>
       memset ((<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>*) &VersionParams, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(VersionParams));
       <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_VERSION,
                               NULL, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, &VersionParams,
                               <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(VersionParams),
                               &cbBytesReturned, NULL) )
       {        
          <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (VersionParams.bIDEDeviceMap > <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)
          {
              BYTE             bIDCmd = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE或者ATAPI识别命令</span>
              SENDCMDINPARAMS  scip;

              <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 假设驱动器是光驱,採用命令IDE_ATAPI_IDENTIFY。 command,</span>
              <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 否则採用命令IDE_ATA_IDENTIFY读取驱动器信息</span>
              bIDCmd = (VersionParams.bIDEDeviceMap >> drive & <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0x10</span>)?
                      IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY;

              memset (&scip, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(scip));
              memset (IdOutCmd, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(IdOutCmd));
              <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 获取驱动器信息</span>
              <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (WinNTGetIDEHDInfo (hPhysicalDriveIOCTL, 
                                      &scip, 
                                      (PSENDCMDOUTPARAMS)&IdOutCmd, 
                                      (BYTE) bIDCmd,
                                      (BYTE) drive,
                                      &cbBytesReturned))
              {
                  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> m = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
                  USHORT *pIdSector = (USHORT *)
                             ((PSENDCMDOUTPARAMS) IdOutCmd) -> bBuffer;

                  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (m = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; m < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>; m++)
                       buffer[m] = pIdSector [m];
                  bFlag = TRUE;  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取硬盘信息成功</span>
              }
          }
       }
       CloseHandle (hPhysicalDriveIOCTL);  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭句柄</span>
   }
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> bFlag;
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// WindowsNT/2000/XP系统下读取SCSI硬盘序列号</span>
BOOL CGetHDSerial::WinNTReadSCSIHDSerial (DWORD * buffer)
{   
      buffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>]=<span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">'\n'</span>;
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> controller = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
      HANDLE hScsiDriveIOCTL = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>   driveName [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>];
      sprintf (driveName, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"\\\\.\\Scsi%d:"</span>, controller);
     <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Windows NT/2000/XP下不论什么权限都能够进行</span>
      hScsiDriveIOCTL = CreateFileA (driveName,
                               GENERIC_READ | GENERIC_WRITE, 
                               FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                               OPEN_EXISTING, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, NULL);

      <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (hScsiDriveIOCTL != INVALID_HANDLE_VALUE)
      {
         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
         DWORD dummy;
         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (drive = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; drive < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>; drive++)
         {
            <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> buffer [<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) + SENDIDLENGTH];
            SRB_IO_CONTROL *p = (SRB_IO_CONTROL *) buffer;
            SENDCMDINPARAMS *pin =
                   (SENDCMDINPARAMS *) (buffer + <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL));           
            <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 准备參数</span>
            memset (buffer, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (buffer));
            p -> HeaderLength = <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL);
            p -> Timeout = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">10000</span>;
            p -> Length = SENDIDLENGTH;
            p -> ControlCode = IOCTL_SCSI_MINIPORT_IDENTIFY;
            strncpy ((<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *) p -> Signature, <span class="hljs-string" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 136, 0); box-sizing: border-box;">"SCSIDISK"</span>, <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>);  
            pin -> irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY;
            pin -> bDriveNumber = drive;
            <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 得到SCSI硬盘信息</span>
            <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (DeviceIoControl (hScsiDriveIOCTL, IOCTL_SCSI_MINIPORT, 
                                 buffer,
                                 <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) +
                                         <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SENDCMDINPARAMS) - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
                                 buffer,
                                 <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL) + SENDIDLENGTH,
                                 &dummy, NULL))
            {
               SENDCMDOUTPARAMS *pOut =
                    (SENDCMDOUTPARAMS *) (buffer + <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span> (SRB_IO_CONTROL));
               IDSECTOR *pId = (IDSECTOR *) (pOut -> bBuffer);
               <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (pId -> sModelNumber [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>])
               {
                  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> n = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
                  USHORT *pIdSector = (USHORT *) pId;

                  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (n = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; n < <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>; n++)
                      buffer[n] =pIdSector [n];
                  <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> TRUE;  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取成功                               </span>
               }
            }
         }
         CloseHandle (hScsiDriveIOCTL);  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭句柄</span>
      }
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> FALSE;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取失败</span>
}

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Windows NT/2000/XP下读取IDE设备信息</span>
BOOL CGetHDSerial::WinNTGetIDEHDInfo (HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP,
                 PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum,
                 PDWORD lpcbBytesReturned)
{
   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 为读取设备信息准备參数</span>
   pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;
   pSCIP -> irDriveRegs.bFeaturesReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
   pSCIP -> irDriveRegs.bSectorCountReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;
   pSCIP -> irDriveRegs.bSectorNumberReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;
   pSCIP -> irDriveRegs.bCylLowReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
   pSCIP -> irDriveRegs.bCylHighReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 计算驱动器位置</span>
   pSCIP -> irDriveRegs.bDriveHeadReg = <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">0xA0</span> | ((bDriveNum & <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) << <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>);

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 设置读取命令</span>
   pSCIP -> irDriveRegs.bCommandReg = bIDCmd;
   pSCIP -> bDriveNumber = bDriveNum;
   pSCIP -> cBufferSize = IDENTIFY_BUFFER_SIZE;

   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 读取驱动器信息</span>
   <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">return</span> ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_GET_DRIVE_INFO,
               (LPVOID) pSCIP,
               <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(SENDCMDINPARAMS) - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
               (LPVOID) pSCOP,
               <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - <span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,
               lpcbBytesReturned, NULL) );
}</code><ul class="pre-numbering" style="font-family: 宋体 !important; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">2</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">3</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">4</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">5</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">6</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">7</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">8</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">9</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">10</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">11</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">12</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">13</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">14</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">15</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">16</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">17</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">18</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">19</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">20</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">21</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">22</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">23</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">24</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">25</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">26</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">27</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">28</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">29</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">30</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">31</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">32</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">33</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">34</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">35</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">36</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">37</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">38</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">39</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">40</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">41</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">42</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">43</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">44</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">45</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">46</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">47</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">48</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">49</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">50</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">51</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">52</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">53</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">54</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">55</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">56</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">57</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">58</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">59</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">60</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">61</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">62</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">63</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">64</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">65</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">66</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">67</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">68</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">69</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">70</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">71</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">72</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">73</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">74</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">75</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">76</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">77</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">78</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">79</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">80</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">81</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">82</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">83</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">84</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">85</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">86</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">87</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">88</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">89</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">90</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">91</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">92</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">93</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">94</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">95</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">96</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">97</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">98</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">99</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">100</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">101</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">102</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">103</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">104</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">105</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">106</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">107</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">108</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">109</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">110</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">111</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">112</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">113</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">114</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">115</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">116</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">117</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">118</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">119</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">120</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">121</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">122</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">123</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">124</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">125</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">126</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">127</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">128</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">129</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">130</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">131</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">132</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">133</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">134</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">135</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">136</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">137</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">138</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">139</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">140</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">141</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">142</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">143</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">144</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">145</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">146</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">147</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">148</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">149</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">150</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">151</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">152</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">153</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">154</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">155</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">156</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">157</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">158</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">159</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">160</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">161</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">162</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">163</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">164</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">165</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">166</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">167</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">168</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">169</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">170</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">171</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">172</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">173</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">174</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">175</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">176</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">177</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">178</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">179</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">180</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">181</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">182</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">183</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">184</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">185</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">186</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">187</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">188</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">189</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">190</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">191</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">192</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">193</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">194</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">195</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">196</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">197</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">198</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">199</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">200</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">201</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">202</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">203</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">204</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">205</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">206</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">207</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">208</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">209</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">210</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">211</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">212</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">213</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">214</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">215</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">216</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">217</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">218</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">219</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">220</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">221</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">222</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">223</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">224</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">225</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">226</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">227</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">228</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">229</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">230</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">231</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">232</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">233</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">234</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">235</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">236</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">237</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">238</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">239</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">240</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">241</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">242</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">243</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">244</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">245</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">246</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">247</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">248</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">249</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">250</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">251</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">252</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">253</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">254</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">255</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">256</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">257</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">258</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">259</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">260</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">261</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">262</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">263</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">264</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">265</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">266</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">267</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">268</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">269</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">270</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">271</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">272</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">273</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">274</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">275</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">276</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">277</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">278</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">279</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">280</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">281</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">282</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">283</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">284</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">285</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">286</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">287</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">288</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">289</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">290</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">291</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">292</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">293</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">294</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">295</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">296</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">297</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">298</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">299</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">300</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">301</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">302</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">303</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">304</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">305</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">306</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">307</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">308</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">309</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">310</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">311</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">312</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">313</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">314</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">315</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">316</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">317</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">318</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">319</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">320</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">321</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">322</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">323</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">324</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">325</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">326</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">327</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">328</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">329</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">330</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">331</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">332</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">333</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">334</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">335</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">336</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">337</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">338</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">339</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">340</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">341</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">342</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">343</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">344</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">345</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">346</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">347</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">348</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">349</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">350</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">351</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">352</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">353</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">354</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">355</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">356</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">357</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">358</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">359</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">360</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">361</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">362</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">363</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">364</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">365</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">366</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">367</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">368</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">369</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">370</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">371</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">372</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">373</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">374</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">375</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">376</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">377</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">378</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">379</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">380</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">381</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">382</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">383</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">384</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">385</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">386</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">387</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">388</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">389</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">390</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">391</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">392</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">393</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">394</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">395</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">396</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">397</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">398</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">399</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">400</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">401</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">402</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">403</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">404</li></ul>

GetHDSerial.h

<code class="hljs cs has-numbering" style="font-family: 'Source Code Pro', monospace; display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// GetHDSerial.h: interface for the CGetHDSerial class.</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Download by http://www.newxing.com/</span>
<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;"><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span><span class="hljs-xmlDocTag" style="margin: 0px; padding: 0px; box-sizing: border-box;">///</span>/</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include <windows.h></span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#include <stdio.h></span>

<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  SENDIDLENGTH  sizeof (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IDENTIFY_BUFFER_SIZE  512</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  FILE_DEVICE_SCSI              0x0000001b</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IOCTL_SCSI_MINIPORT_IDENTIFY  ((FILE_DEVICE_SCSI << 16) + 0x0501)</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IOCTL_SCSI_MINIPORT 0x0004D008  //  see NTDDSCSI.H for definition</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IDE_ATAPI_IDENTIFY  0xA1  //  Returns ID sector for ATAPI.</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IDE_ATA_IDENTIFY    0xEC  //  Returns ID sector for ATA.</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IOCTL_GET_DRIVE_INFO   0x0007c088</span>
<span class="hljs-preprocessor" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(68, 68, 68); box-sizing: border-box;">#<span class="hljs-keyword" style="margin: 0px; padding: 0px; box-sizing: border-box;">define</span>  IOCTL_GET_VERSION          0x00074080</span>
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _IDSECTOR
{
   USHORT  wGenConfig;
   USHORT  wNumCyls;
   USHORT  wReserved;
   USHORT  wNumHeads;
   USHORT  wBytesPerTrack;
   USHORT  wBytesPerSector;
   USHORT  wSectorsPerTrack;
   USHORT  wVendorUnique[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>];
   CHAR    sSerialNumber[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">20</span>];
   USHORT  wBufferType;
   USHORT  wBufferSize;
   USHORT  wECCSize;
   CHAR    sFirmwareRev[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>];
   CHAR    sModelNumber[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">40</span>];
   USHORT  wMoreVendorUnique;
   USHORT  wDoubleWordIO;
   USHORT  wCapabilities;
   USHORT  wReserved1;
   USHORT  wPIOTiming;
   USHORT  wDMATiming;
   USHORT  wBS;
   USHORT  wNumCurrentCyls;
   USHORT  wNumCurrentHeads;
   USHORT  wNumCurrentSectorsPerTrack;
   ULONG   ulCurrentSectorCapacity;
   USHORT  wMultSectorStuff;
   ULONG   ulTotalAddressableSectors;
   USHORT  wSingleWordDMA;
   USHORT  wMultiWordDMA;
   BYTE    bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">128</span>];
} IDSECTOR, *PIDSECTOR;

typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _DRIVERSTATUS
{
   BYTE  bDriverError;  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Error code from driver, or 0 if no error.</span>
   BYTE  bIDEStatus;    <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Contents of IDE Error register.</span>
                        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Only valid when bDriverError is SMART_IDE_ERROR.</span>
   BYTE  bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>];  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Reserved for future expansion.</span>
   DWORD  dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">2</span>];  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Reserved for future expansion.</span>
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;

typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SENDCMDOUTPARAMS
{
   DWORD         cBufferSize;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Size of bBuffer in bytes</span>
   DRIVERSTATUS  DriverStatus;  <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Driver status structure.</span>
   BYTE          bBuffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];    <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Buffer of arbitrary length in which to store the data read from the                                                       // drive.</span>
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SRB_IO_CONTROL
{
   ULONG HeaderLength;
   UCHAR Signature[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">8</span>];
   ULONG Timeout;
   ULONG ControlCode;
   ULONG ReturnCode;
   ULONG Length;
} SRB_IO_CONTROL, *PSRB_IO_CONTROL;

typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _IDEREGS
{
   BYTE bFeaturesReg;       <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Used for specifying SMART "commands".</span>
   BYTE bSectorCountReg;    <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE sector count register</span>
   BYTE bSectorNumberReg;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE sector number register</span>
   BYTE bCylLowReg;         <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE low order cylinder value</span>
   BYTE bCylHighReg;        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE high order cylinder value</span>
   BYTE bDriveHeadReg;      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// IDE drive/head register</span>
   BYTE bCommandReg;        <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Actual IDE command.</span>
   BYTE bReserved;          <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// reserved for future use.  Must be zero.</span>
} IDEREGS, *PIDEREGS, *LPIDEREGS;

typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _SENDCMDINPARAMS
{
   DWORD     cBufferSize;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Buffer size in bytes</span>
   IDEREGS   irDriveRegs;   <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Structure with drive register values.</span>
   BYTE bDriveNumber;       <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Physical drive number to send </span>
                            <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  command to (0,1,2,3).</span>
   BYTE bReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">3</span>];       <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Reserved for future expansion.</span>
   DWORD     dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  For future use.</span>
   BYTE      bBuffer[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];    <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">//  Input buffer.</span>
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
typedef <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> _GETVERSIONOUTPARAMS
{
   BYTE bVersion;      <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Binary driver version.</span>
   BYTE bRevision;     <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Binary driver revision.</span>
   BYTE bReserved;     <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Not used.</span>
   BYTE bIDEDeviceMap; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Bit map of IDE devices.</span>
   DWORD fCapabilities; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// Bit mask of driver capabilities.</span>
   DWORD dwReserved[<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">4</span>]; <span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// For future use.</span>
} GETVERSIONOUTPARAMS, *PGETVERSIONOUTPARAMS, *LPGETVERSIONOUTPARAMS;

<span class="hljs-comment" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(136, 0, 0); box-sizing: border-box;">// 获取硬盘序列号的类</span>
class CGetHDSerial  
{
<span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">public</span>:
    <span class="hljs-title" style="font-family: 宋体 !important; margin: 0px; padding: 0px; box-sizing: border-box;">CGetHDSerial</span>();
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">virtual</span> ~CGetHDSerial();
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">void</span>  _stdcall Win9xReadHDSerial(WORD * buffer);
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* GetHDSerial();
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* WORDToChar (WORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex);
    <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">char</span>* DWORDToChar (DWORD diskdata [<span class="hljs-number" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 102, 102); box-sizing: border-box;">256</span>], <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> firstIndex, <span class="hljs-keyword" style="font-family: 宋体 !important; margin: 0px; padding: 0px; color: rgb(0, 0, 136); box-sizing: border-box;">int</span> lastIndex);
    BOOL  WinNTReadSCSIHDSerial(DWORD * buffer);
    BOOL  WinNTReadIDEHDSerial (DWORD * buffer);
    BOOL  WinNTGetIDEHDInfo (HANDLE hPhysicalDriveIOCTL, PSENDCMDINPARAMS pSCIP,
                      PSENDCMDOUTPARAMS pSCOP, BYTE bIDCmd, BYTE bDriveNum,
                      PDWORD lpcbBytesReturned);
};</code><ul class="pre-numbering" style="font-family: 宋体 !important; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">1</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">2</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">3</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">4</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">5</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">6</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">7</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">8</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">9</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">10</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">11</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">12</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">13</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">14</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">15</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">16</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">17</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">18</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">19</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">20</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">21</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">22</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">23</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">24</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">25</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">26</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">27</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">28</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">29</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">30</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">31</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">32</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">33</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">34</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">35</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">36</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">37</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">38</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">39</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">40</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">41</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">42</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">43</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">44</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">45</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">46</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">47</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">48</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">49</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">50</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">51</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">52</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">53</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">54</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">55</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">56</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">57</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">58</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">59</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">60</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">61</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">62</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">63</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">64</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">65</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">66</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">67</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">68</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">69</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">70</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">71</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">72</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">73</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">74</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">75</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">76</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">77</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">78</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">79</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">80</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">81</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">82</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">83</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">84</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">85</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">86</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">87</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">88</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">89</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">90</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">91</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">92</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">93</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">94</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">95</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">96</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">97</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">98</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">99</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">100</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">101</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">102</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">103</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">104</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">105</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">106</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">107</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">108</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">109</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">110</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">111</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">112</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">113</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">114</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">115</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">116</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">117</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">118</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">119</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">120</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">121</li><li style="margin: 0px; padding: 0px 5px; box-sizing: border-box;">122</li></ul>

源代码下载

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!