⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn技术中心 实战deviceiocontrol 之四:获取硬盘的详细信息.mht

📁 DeviceIOControl实战演示及源代码
💻 MHT
📖 第 1 页 / 共 5 页
字号:
    <SPAN class=3Dkey>while</SPAN> ((i &lt; len) &amp;&amp; (str[i] =
=3D=3D <SPAN class=3Dstr>' '</SPAN>)) i++;
 =20
    ::memmove(str, &amp;str[i], len - i);
 =20
    <SPAN class=3Drem>// =
=C8=A5=B5=F4=D3=D2=B1=DF=B5=C4=BF=D5=B8=F1</SPAN>
    i =3D len - <SPAN class=3Dnum>1</SPAN>;
    <SPAN class=3Dkey>while</SPAN> ((i &gt;=3D <SPAN =
class=3Dnum>0</SPAN>) &amp;&amp; (str[i] =3D=3D <SPAN class=3Dstr>' =
'</SPAN>))
    {
        str[i] =3D <SPAN class=3Dstr>'\0'</SPAN>;
        i--;
    }
}
 =20
<SPAN class=3Drem>// =
=B6=C1=C8=A1IDE=D3=B2=C5=CC=B5=C4=C9=E8=B1=B8=D0=C5=CF=A2=A3=AC=B1=D8=D0=EB=
=D3=D0=D7=E3=B9=BB=C8=A8=CF=DE</SPAN>
<SPAN class=3Drem>// nDrive: =
=C7=FD=B6=AF=C6=F7=BA=C5(0=3D=B5=DA=D2=BB=B8=F6=D3=B2=C5=CC=A3=AC1=3D0=3D=
=B5=DA=B6=FE=B8=F6=D3=B2=C5=CC=A3=AC......)</SPAN>
<SPAN class=3Drem>// pIdInfo: =
=C9=E8=B1=B8=D0=C5=CF=A2=BD=E1=B9=B9=D6=B8=D5=EB</SPAN>
BOOL GetPhysicalDriveInfoInNT(<SPAN class=3Dkey>int</SPAN> nDrive, =
PIDINFO pIdInfo)
{
    HANDLE hDevice;         <SPAN class=3Drem>// =
=C9=E8=B1=B8=BE=E4=B1=FA</SPAN>
    BOOL bResult;           <SPAN class=3Drem>// =
=B7=B5=BB=D8=BD=E1=B9=FB</SPAN>
    <SPAN class=3Dkey>char</SPAN> szFileName[<SPAN =
class=3Dnum>20</SPAN>];    <SPAN class=3Drem>// =
=CE=C4=BC=FE=C3=FB</SPAN>
 =20
    ::sprintf(szFileName,<SPAN =
class=3Dstr>"\\\\.\\PhysicalDrive%d"</SPAN>, nDrive);
 =20
    hDevice =3D ::OpenDevice(szFileName);
 =20
    <SPAN class=3Dkey>if</SPAN> (hDevice =3D=3D INVALID_HANDLE_VALUE)
    {
        <SPAN class=3Dkey>return</SPAN> FALSE;
    }
 =20
    <SPAN class=3Drem>// IDENTIFY DEVICE</SPAN>
    bResult =3D ::IdentifyDevice(hDevice, pIdInfo);
 =20
    <SPAN class=3Dkey>if</SPAN> (bResult)
    {
        <SPAN class=3Drem>// =B5=F7=D5=FB=D7=D6=B7=FB=B4=AE</SPAN>
        ::AdjustString(pIdInfo-&gt;sSerialNumber, <SPAN =
class=3Dnum>20</SPAN>);
        ::AdjustString(pIdInfo-&gt;sModelNumber, <SPAN =
class=3Dnum>40</SPAN>);
        ::AdjustString(pIdInfo-&gt;sFirmwareRev, <SPAN =
class=3Dnum>8</SPAN>);
    }
 =20
    ::CloseHandle (hDevice);
 =20
    <SPAN class=3Dkey>return</SPAN> bResult;
}
 =20
<SPAN class=3Drem>// =
=D3=C3SCSI=C7=FD=B6=AF=B6=C1=C8=A1IDE=D3=B2=C5=CC=B5=C4=C9=E8=B1=B8=D0=C5=
=CF=A2=A3=AC=B2=BB=CA=DC=C8=A8=CF=DE=D6=C6=D4=BC</SPAN>
<SPAN class=3Drem>// nDrive: =C7=FD=B6=AF=C6=F7=BA=C5(0=3DPrimary =
Master, 1=3DPromary Slave, 2=3DSecondary master, 3=3DSecondary =
slave)</SPAN>
<SPAN class=3Drem>// pIdInfo: =
=C9=E8=B1=B8=D0=C5=CF=A2=BD=E1=B9=B9=D6=B8=D5=EB</SPAN>
BOOL GetIdeDriveAsScsiInfoInNT(<SPAN class=3Dkey>int</SPAN> nDrive, =
PIDINFO pIdInfo)
{
    HANDLE hDevice;         <SPAN class=3Drem>// =
=C9=E8=B1=B8=BE=E4=B1=FA</SPAN>
    BOOL bResult;           <SPAN class=3Drem>// =
=B7=B5=BB=D8=BD=E1=B9=FB</SPAN>
    <SPAN class=3Dkey>char</SPAN> szFileName[<SPAN =
class=3Dnum>20</SPAN>];    <SPAN class=3Drem>// =
=CE=C4=BC=FE=C3=FB</SPAN>
 =20
    ::sprintf(szFileName,<SPAN class=3Dstr>"\\\\.\\Scsi%d:"</SPAN>, =
nDrive/<SPAN class=3Dnum>2</SPAN>);
 =20
    hDevice =3D ::OpenDevice(szFileName);
 =20
    <SPAN class=3Dkey>if</SPAN> (hDevice =3D=3D INVALID_HANDLE_VALUE)
    {
        <SPAN class=3Dkey>return</SPAN> FALSE;
    }
 =20
    <SPAN class=3Drem>// IDENTIFY DEVICE</SPAN>
    bResult =3D ::IdentifyDeviceAsScsi(hDevice, nDrive%<SPAN =
class=3Dnum>2</SPAN>, pIdInfo);
 =20
    <SPAN class=3Drem>// =
=BC=EC=B2=E9=CA=C7=B2=BB=CA=C7=BF=D5=B4=AE</SPAN>
    <SPAN class=3Dkey>if</SPAN> (pIdInfo-&gt;sModelNumber[<SPAN =
class=3Dnum>0</SPAN>] =3D=3D <SPAN class=3Dstr>'\0'</SPAN>)
    {
        bResult =3D FALSE;
    }
 =20
    <SPAN class=3Dkey>if</SPAN> (bResult)
    {
        <SPAN class=3Drem>// =B5=F7=D5=FB=D7=D6=B7=FB=B4=AE</SPAN>
        ::AdjustString(pIdInfo-&gt;sSerialNumber, <SPAN =
class=3Dnum>20</SPAN>);
        ::AdjustString(pIdInfo-&gt;sModelNumber, <SPAN =
class=3Dnum>40</SPAN>);
        ::AdjustString(pIdInfo-&gt;sFirmwareRev, <SPAN =
class=3Dnum>8</SPAN>);
    }
 =20
    <SPAN class=3Dkey>return</SPAN> bResult;
}
</CODE></PRE>
            <P class=3Dbhw98><STRONG class=3Dbhw98>Q</STRONG>=20
            =
=CE=D2=D7=A2=D2=E2=B5=BDATA/ATAPI=C0=EF=A3=AC=D2=D4=BC=B0DiskID32=C0=EF=A3=
=AC=D3=D0=D2=BB=B8=F6=A1=B0IDENTIFY PACKET =
DEVICE=A1=B1=D6=B8=C1=EE=A3=AC=D3=EB=A1=B0IDENTIFY=20
            DEVICE=A1=B1=D3=D0=CA=B2=C3=B4=C7=F8=B1=F0=A3=BF=20
            <P class=3Dbhw98><STRONG class=3Dbhw98>A</STRONG> IDENTIFY=20
            =
DEVICE=D7=A8=C3=C5=D3=C3=D3=DA=B9=CC=B6=A8=D3=B2=C5=CC=A3=AC=B6=F8IDENTIF=
Y PACKET=20
            =
DEVICE=D3=C3=D3=DA=BF=C9=D2=C6=B6=AF=B4=E6=B4=A2=C9=E8=B1=B8=C8=E7CDROM=A1=
=A2CF=A1=A2MO=A1=A2ZIP=A1=A2TAPE=B5=C8=A1=A3=D2=F2=CE=AA=C7=FD=B6=AF=B3=CC=
=D0=F2=B5=C4=D4=AD=D2=F2=A3=AC=CA=B5=BC=CA=C9=CF=D3=C3=B1=BE=C0=FD=B5=C4=B7=
=BD=B7=A8=A3=AC=B2=BB=B9=DC=CA=C7IDENTIFY=20
            DEVICE=D2=B2=BA=C3=A3=ACIDENTIFY PACKET=20
            =
DEVICE=D2=B2=BA=C3=A3=AC=BB=F1=C8=A1=BF=C9=D2=C6=B6=AF=B4=E6=B4=A2=C9=E8=B1=
=B8=B5=C4=CF=EA=CF=B8=D0=C5=CF=A2=A3=AC=D2=BB=B0=E3=CA=C7=D7=F6=B2=BB=B5=BD=
=B5=C4=A1=A3=B6=F8=C7=D2=B3=FD=C1=CBIDE=D3=B2=C5=CC=A3=AC=B6=D4SCSI=A1=A2=
USB=B5=C8=BD=D3=BF=DA=B5=C4=D3=B2=C5=CC=D2=B2=B2=BB=C6=F0=D7=F7=D3=C3=A1=A3=
=B3=FD=B7=C7=B3=A7=C9=CC=CC=E1=B9=A9=B5=C4=C7=FD=B6=AF=D6=A7=B3=D6=D5=E2=D1=
=F9=B5=C4=B9=A6=C4=DC=A1=A3=20

            <P class=3Dbhw98><STRONG class=3Dbhw98>Q</STRONG> =
ATA/ATAPI=D3=D0=BA=DC=B6=E0=D6=B8=C1=EE=A3=AC=C8=E7READ=20
            SECTORS, WRITE SECTORS, SECURITY, SLEEP, =
STANDBY=B5=C8=A3=AC=C0=FB=D3=C3=C9=CF=CA=F6=B7=BD=B7=A8=A3=AC=CA=C7=B7=F1=
=BF=C9=BD=F8=D0=D0=CF=E0=D3=A6=B2=D9=D7=F7=A3=BF=20
            <P class=3Dbhw98><STRONG class=3Dbhw98>A</STRONG> =
=D3=A6=B8=C3=C3=BB=CE=CA=CC=E2=A1=A3=B5=AB=C7=D0=BC=C7=A3=AC=D2=AA=C9=F7=D6=
=D8=C9=F7=D6=D8=D4=D9=C9=F7=D6=D8=A3=A1=20
            <P class=3Dbhw98><STRONG class=3Dbhw98>Q</STRONG> =
=B9=D8=D3=DA=C8=A8=CF=DE=CE=CA=CC=E2=A3=AC=C7=EB=BD=E2=CA=CD=D2=BB=CF=C2=BA=
=C3=C2=F0=A3=BF=20
            <P class=3Dbhw98><STRONG class=3Dbhw98>A</STRONG>=20
            =
=D4=DANT/2000/XP=CF=C2=A3=ACadministrator=BF=C9=D2=D4=B9=DC=C0=ED=C9=E8=B1=
=B8=A3=AC=C9=CF=CA=F6=C1=BD=D6=D6=B7=C3=CE=CA=C7=FD=B6=AF=B5=C4=B7=BD=B7=A8=
=B6=BC=D0=D0=A1=A3=B5=AB=D4=DAuser=C9=ED=B7=DD=CF=C2=A3=AC=BB=F2=D5=DF=B5=
=C7=C2=BC=B5=BD=D3=F2=BA=F3=A3=AC=D3=C3=BB=A7=CE=DE=B7=A8=B7=C3=CE=CAPhys=
icalDrive=C7=FD=B6=AF=B5=C4=BA=CB=D0=C4=B2=E3=A3=AC=B5=ABSCSI=20
            =
MINI-PORT=C7=FD=B6=AF=C8=B4=BF=C9=D2=D4=A1=A3=C4=BF=C7=B0=CA=C7=BF=C9=D2=D4=
=A3=AC=B2=BB=D6=AA=B5=C0Windows=D2=D4=BA=F3=B5=C4=B0=E6=B1=BE=CA=C7=B7=F1=
=D6=A7=B3=D6=A1=A3=D2=F2=CE=AA=D5=E2=BF=CF=B6=A8=CA=C7=D2=BB=B8=F6=B0=B2=C8=
=AB=D2=FE=BB=BC=A1=A3
            <P=20
            =
class=3Dbhw98>=C1=ED=CD=E2=A3=AC=CE=D2=C3=C7=D7=C5=D6=D8=CC=D6=C2=DBNT/20=
00/XP=D6=D0DeviceIoControl=B5=C4=D3=A6=D3=C3=A3=AC=C8=E7=B9=FB=D0=E8=D2=AA=
=D4=DA98/ME=D6=D0=B5=C3=B5=BD=B0=FC=C0=A8=D3=B2=C5=CC=D0=F2=C1=D0=BA=C5=D4=
=DA=C4=DA=B5=C4=B8=FC=BC=D3=CF=EA=CF=B8=B5=C4=D0=C5=CF=A2=A3=AC=C7=EB=B2=CE=
=BF=BCDiskID32=A1=A3=20

            <H2 class=3Dbhw98>[=CF=E0=B9=D8=D7=CA=D4=B4]</H2>
            <LI class=3Dbhw98>=B1=BE=CE=C4Demo=D4=B4=C2=EB=A3=BA<A=20
            =
href=3D"http://www.csdn.net/develop/author/bhw98/IdeDiskInfo.zip">IdeDisk=
Info.zip</A>=20
            (25KB)=20
            <LI class=3Dbhw98>Lynn McGuire=B5=C4 <A=20
            =
href=3D"http://www.codeguru.com/system/DiskId32.zip">DiskID32.zip</A>=20
            (30KB)=20
            <LI class=3Dbhw98>T13=B9=D9=B7=BD=CD=F8=D5=BE=A3=BA<A=20
            href=3D"http://www.t13.org/">http://www.t13.org/</A>=20
            <LI class=3Dbhw98>bhw98=B5=C4=D7=A8=C0=B8=A3=BA<A=20
            =
href=3D"http://www.csdn.net/develop/author/netauthor/bhw98/">http://www.c=
sdn.net/develop/author/netauthor/bhw98/</A>=20

            <HR>

            <P class=3Dbhw98 =
align=3Dright>=CA=D7=B4=CE=B7=A2=B2=BC=A3=BA2003-02-24<BR>=D7=EE=BA=F3=D0=
=DE=B6=A9=A3=BA2003-05-20=20
            <P class=3Dbhw98>&nbsp;</P></SPAN><BR>
            <DIV=20
            style=3D"FONT-SIZE: 14px; LINE-HEIGHT: =
25px"><STRONG>=D7=F7=D5=DFBlog=A3=BA</STRONG><A=20
            id=3DArticleContent1_ArticleContent1_AuthorBlogLink=20
            href=3D"http://blog.csdn.net/bhw98/"=20
            target=3D_blank>http://blog.csdn.net/bhw98/</A></DIV>
            <DIV=20
            style=3D"FONT-SIZE: 14px; COLOR: #900; LINE-HEIGHT: =
25px"><STRONG>=CF=E0=B9=D8=CE=C4=D5=C2</STRONG></DIV>
            <TABLE id=3DArticleContent1_ArticleContent1_RelatedArticles=20
            style=3D"BORDER-COLLAPSE: collapse" cellSpacing=3D0 =
border=3D0>
              <TBODY>
              <TR>
                <TD><A=20
                  =
href=3D"http://dev.csdn.net/article/17/article/27/27281.shtm">=B8=F8=D3=A6=
=D3=C3=B3=CC=D0=F2=BC=D3=D7=B0=A1=B0=BF=B4=C3=C5=B9=B7=A1=B1</A>=20
                </TD></TR>
              <TR>
                <TD><A=20
                  =
href=3D"http://dev.csdn.net/article/17/article/25/25700.shtm">=A1=B0=CD=A8=
=B9=FD=B4=AE=BF=DA=CA=D5=B7=A2=B6=CC=CF=FB=CF=A2=A1=B1=B5=C4Q&amp;A=BB=E3=
=B1=E0</A>=20
                </TD></TR>
              <TR>
                <TD><A=20
                  =
href=3D"http://dev.csdn.net/article/17/article/25/25263.shtm">=D3=C3JScri=
pt=CA=B5=CF=D6=B9=AB=C0=FA=B5=BD=C5=A9=C0=FA=B5=C4=C8=D5=C6=DA=D7=AA=BB=BB=
</A>=20
                </TD></TR>
              <TR>
                <TD><A=20
                  =
href=3D"http://dev.csdn.net/article/17/article/24/24861.shtm">=CD=A8=B9=FD=
=B4=AE=BF=DA=CA=B5=CA=B1=BD=D3=CA=D5=B6=CC=CF=FB=CF=A2</A>=20
                </TD></TR>
              <TR>
                <TD><A=20
                  =
href=3D"http://dev.csdn.net/article/17/article/23/23452.shtm">MSN=20
                  Messenger=D0=AD=D2=E9=B8=C5=BF=F6</A>=20
      </TD></TR></TBODY></TABLE></LI></TD></TR></TBODY></TABLE><A=20
      name=3D#Comment></A>
      <TABLE cellPadding=3D0 width=3D"100%" border=3D0>
        <TBODY>
        <TR>
          <TD>
            <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" =
align=3Dcenter=20
            bgColor=3D#006699 border=3D0>
              <TBODY>
              <TR bgColor=3D#006699>
                <TD id=3Dwhite align=3Dmiddle width=3D556 =
bgColor=3D#006699><FONT=20
                  =
color=3D#ffffff>=B6=D4=B8=C3=CE=C4=B5=C4=C6=C0=C2=DB</FONT> =
</TD></TR></TBODY></TABLE>
            <TABLE cellSpacing=3D1 cellPadding=3D2 width=3D"100%" =
align=3Dcenter=20
            bgColor=3D#666666 border=3D0>
              <TBODY>
              <TR>
                <TD bgColor=3D#cccccc colSpan=3D3><SPAN=20
                  style=3D"COLOR: #990000"><IMG height=3D16 hspace=3D1=20
                  src=3D"http://dev.csdn.net/images/ico_pencil.gif" =
width=3D16>=20
                  </SPAN><SPAN=20
                  =
id=3DCommnetList1_CommnetList1_rpCommentList__ctl0_lblUserName>CSDN=20
                  =CD=F8=D3=D1</SPAN> <I>( <SPAN=20
                  =
id=3DCommnetList1_CommnetList1_rpCommentList__ctl0_lblPostTime>2004-08-27=
</SPAN>)</I>=20
                </TD></TR>
              <TR>
                <TD width=3D532 bgColor=3D#ffffff colSpan=3D3><SPAN=20
                  =
id=3DCommnetList1_CommnetList1_rpCommentList__ctl0_lblContent>=BB=F1=C8=A1=
=B4=C5=C5=CCID=CA=B1,=D6=B4=D0=D0::AdjustString(pIdInfo-&gt;sSerialNumber=
,&nbsp;20);<BR>=BA=AF=CA=FD=D3=D0=B4=ED=CE=F3,=D7=D6=B4=AE=D7=F3=D2=C6=BA=
=F3=C3=BB=D3=D0=BD=E1=CE=B2,=CA=B9=B5=C3=D3=D2=B2=E0=BC=B8=B8=F6=D7=D6=B7=
=FB=D6=D8=B8=B4.=CC=ED=BC=D3<BR>len[len-i]&nbsp;=3D&nbsp;'\0'</SPAN>=20
                </TD></TR></TBODY></TABLE>
            <TABLE cellSpacing=3D1 cellPadding=3D2 width=3D"100%" =
align=3Dcenter=20
            bgColor=3D#666666 border=3D0>
              <TBODY>
              <TR>
                <TD bgColor=3D#cccccc col

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -