csdn技术中心 实战deviceiocontrol 之二:获取软盘-硬盘-光盘的参数.mht

来自「DeviceIOControl实战演示及源代码」· MHT 代码 · 共 1,381 行 · 第 1/5 页

MHT
1,381
字号
<SPAN class=3Drem>// =B2=BB=D0=E8=D2=AA=CA=E4=C8=EB=CA=FD=BE=DD</SPAN>
            pmt, MEDIA_INFO_SIZE,               <SPAN class=3Drem>// =
=CA=E4=B3=F6=CA=FD=BE=DD=BB=BA=B3=E5=C7=F8</SPAN>
            &amp;dwOutBytes,                        <SPAN class=3Drem>// =
=CA=E4=B3=F6=CA=FD=BE=DD=B3=A4=B6=C8</SPAN>
            (LPOVERLAPPED)NULL);                <SPAN class=3Drem>// =
=D3=C3=CD=AC=B2=BDI/O</SPAN>
 =20
        <SPAN class=3Dkey>if</SPAN> (bResult)
        {
            <SPAN class=3Drem>// =
=D7=A2=D2=E2=B5=BD=BD=E1=B9=B9DEVICE_MEDIA_INFO=CA=C7=D4=DA=BD=E1=B9=B9DI=
SK_GEOMETRY=B5=C4=BB=F9=B4=A1=C9=CF=C0=A9=B3=E4=B5=C4
            // =
=CE=AA=BC=F2=BB=AF=B3=CC=D0=F2=A3=AC=D3=C3memcpy=B4=FA=CC=E6=C8=E7=CF=C2=B6=
=E0=CC=F5=B8=B3=D6=B5=D3=EF=BE=E4=A3=BA
            // pdg-&gt;MediaType =3D =
(MEDIA_TYPE)pmt-&gt;MediaInfo[0].DeviceSpecific.DiskInfo.MediaType;
            // pdg-&gt;Cylinders =3D =
pmt-&gt;MediaInfo[0].DeviceSpecific.DiskInfo.Cylinders;
            // pdg-&gt;TracksPerCylinder =3D =
pmt-&gt;MediaInfo[0].DeviceSpecific.DiskInfo.TracksPerCylinder;
            // ... ...</SPAN>
            ::memcpy(pdg, pmt-&gt;MediaInfo, <SPAN =
class=3Dkey>sizeof</SPAN>(DISK_GEOMETRY));
        }
 =20
        <SPAN class=3Dkey>delete</SPAN> pmt;
    }
 =20
    <SPAN class=3Drem>// =B9=D8=B1=D5=C9=E8=B1=B8=BE=E4=B1=FA</SPAN>
    ::CloseHandle(hDevice);
 =20
    <SPAN class=3Dkey>return</SPAN> (bResult);
}
</CODE></PRE>
            <P=20
            =
class=3Dbhw98>=C8=BB=BA=F3=A3=AC=D4=DAToolbar=B5=C4IDR_MAINFRAME=C9=CF=CC=
=ED=BC=D3=D2=BB=B8=F6=B0=B4=C5=A5=A3=ACID=CE=AAID_GET_DISK_GEOMETRY=A1=A3=
=B4=F2=BF=AAClassWizard=A3=AC=D4=DADiskGeometryView=D6=D0=20

            <P=20
            =
class=3Dbhw98>=CC=ED=BC=D3ID_GET_DISK_GEOMETRY=B5=C4=D3=B3=C9=E4=BA=AF=CA=
=FDOnGetDiskGeometry=A1=A3=B4=F2=BF=AADiskGeometryView.cpp=A3=AC=B0=FC=BA=
=AC=CD=B7=CE=C4=BC=FEGetDiskGeometry.h=A1=A3=20

            <P =
class=3Dbhw98>=D4=DAOnGetDiskGeometry=D6=D0=A3=AC=CC=ED=BC=D3=D2=D4=CF=C2=
=B4=FA=C2=EB <PRE class=3Dbhw98><CODE class=3Dbhw98>    <SPAN =
class=3Dkey>const char</SPAN> *szDevName[]=3D
    {
        <SPAN class=3Dstr>"\\\\.\\A:"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\B:"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\PhysicalDrive0"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\PhysicalDrive1"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\PhysicalDrive2"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\PhysicalDrive3"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\Cdrom0"</SPAN>,
        <SPAN class=3Dstr>"\\\\.\\Cdrom1"</SPAN>,
    };
    DISK_GEOMETRY dg;
    ULONGLONG DiskSize;
    BOOL bResult;
    CString strMsg;
    CString strTmp;
 =20
    <SPAN class=3Dkey>for</SPAN> (<SPAN class=3Dkey>int</SPAN> i =3D =
<SPAN class=3Dnum>0</SPAN>; i &lt; <SPAN =
class=3Dkey>sizeof</SPAN>(szDevName)/<SPAN =
class=3Dkey>sizeof</SPAN>(<SPAN class=3Dkey>char</SPAN>*); i++)
    {
        bResult =3D GetDriveGeometry(szDevName[i], &amp;dg);
 =20
        strTmp.Format(<SPAN class=3Dstr>"\r\n%s  result =3D =
%s\r\n"</SPAN>, szDevName[i], bResult ? <SPAN =
class=3Dstr>"success"</SPAN> : <SPAN class=3Dstr>"failure"</SPAN>);
        strMsg+=3DstrTmp;
 =20
        <SPAN class=3Dkey>if</SPAN> (!bResult) <SPAN =
class=3Dkey>continue</SPAN>;
 =20
        strTmp.Format(<SPAN class=3Dstr>"    Media Type =3D =
%d\r\n"</SPAN>, dg.MediaType);
        strMsg+=3DstrTmp;
 =20
        strTmp.Format(<SPAN class=3Dstr>"    Cylinders =3D =
%I64d\r\n"</SPAN>, dg.Cylinders);
        strMsg+=3DstrTmp;
 =20
        strTmp.Format(<SPAN class=3Dstr>"    Tracks per cylinder =3D =
%ld\r\n"</SPAN>, (ULONG) dg.TracksPerCylinder);
        strMsg+=3DstrTmp;
 =20
        strTmp.Format(<SPAN class=3Dstr>"    Sectors per track =3D =
%ld\r\n"</SPAN>, (ULONG) dg.SectorsPerTrack);
        strMsg+=3DstrTmp;
 =20
        strTmp.Format(<SPAN class=3Dstr>"    Bytes per sector =3D =
%ld\r\n"</SPAN>, (ULONG) dg.BytesPerSector);
        strMsg+=3DstrTmp;
 =20
        DiskSize =3D dg.Cylinders.QuadPart * (ULONG)dg.TracksPerCylinder =
*
            (ULONG)dg.SectorsPerTrack * (ULONG)dg.BytesPerSector;
        strTmp.Format(<SPAN class=3Dstr>"    Disk size =3D %I64d (Bytes) =
=3D %I64d (Mb)\r\n"</SPAN>, DiskSize, DiskSize / (<SPAN =
class=3Dnum>1024</SPAN> * <SPAN class=3Dnum>1024</SPAN>));
        strMsg+=3DstrTmp;
    }
 =20
    CEdit&amp; Edit =3D GetEditCtrl();
 =20
    Edit.SetWindowText(strMsg);
</CODE></PRE>
            <P =
class=3Dbhw98>=D7=EE=BA=F3=A3=AC=D7=EE=BA=F3=B8=C9=CA=B2=C3=B4=C4=D8=A3=BF=
=B1=E0=D2=EB=A3=AC=D4=CB=D0=D0......=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/DiskGeometry.zip">DiskGe=
ometry.zip</A>=20
            (21KB)=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-18<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>
            <DIV align=3Dright><A =
id=3DCommnetList1_CommnetList1_Morelink=20
            =
href=3D"http://comment.csdn.net/Comment.aspx?c=3D2&amp;s=3D17025">=A1=BE=C6=
=C0=C2=DB=A1=BF</A>=20
            <A id=3DCommnetList1_CommnetList1_Hyperlink1=20
            =
href=3D"javascript:window.close();">=A1=BE=B9=D8=B1=D5=A1=BF</A>=20
      =
</DIV><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM><!--=
 =B0=E6=C8=A8 -->
<HR align=3Dcenter width=3D770 noShade SIZE=3D1>

<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D500 align=3Dcenter =
border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dbottom align=3Dmiddle height=3D10><A=20
      =
href=3D"http://www.csdn.net/intro/intro.asp?id=3D2">=CD=F8=D5=BE=BC=F2=BD=
=E9</A> - <A=20
      =
href=3D"http://www.csdn.net/intro/intro.asp?id=3D5">=B9=E3=B8=E6=B7=FE=CE=
=F1</A> - <A=20
      =
href=3D"http://www.csdn.net/map/map.shtm">=CD=F8=D5=BE=B5=D8=CD=BC</A> - =
<A=20
      =
href=3D"http://www.csdn.net/help/help.asp">=B0=EF=D6=FA=D0=C5=CF=A2</A> =
- <A=20
      =
href=3D"http://www.csdn.net/intro/intro.asp?id=3D2">=C1=AA=CF=B5=B7=BD=CA=
=BD</A> - <A=20
      href=3D"http://www.csdn.net/english">English</A> </TD>
    <TD align=3Dmiddle rowSpan=3D3><A=20
      =
href=3D"http://www.hd315.gov.cn/beian/view.asp?bianhao=3D0102020010321000=
10"><IMG=20
      height=3D48 src=3D"http://dev.csdn.net/images/biaoshi.gif" =
width=3D40=20
      border=3D0></A></TD></TR>
  <TR>
    <TD vAlign=3Dtop =
align=3Dmiddle>=B1=B1=BE=A9=B0=D9=C1=AA=C3=C0=B4=EF=C3=C0=CA=FD=C2=EB=BF=C6=
=BC=BC=D3=D0=CF=DE=B9=AB=CB=BE =B0=E6=C8=A8=CB=F9=D3=D0 =
=BE=A9ICP=D6=A4020026=BA=C5</TD></TR>
  <TR align=3Dmiddle>
    <TD vAlign=3Dtop><FONT face=3DVerdana>Copyright &copy; CSDN.NET, =
Inc. All Rights=20
      Reserved</FONT></TD></TR>
  <TR>
    <TD height=3D15></TD></TR></TBODY></TABLE><!-- /=B0=E6=C8=A8 -->
<SCRIPT>
      document.write("<img =
src=3Dhttp://count.csdn.net/count/pageview1.asp?columnid=3D4&itemid=3D11 =
border=3D0 width=3D0 height=3D0>");
    </SCRIPT>
</BODY></HTML>

------=_NextPart_000_001D_01C3E4F5.79D6DA30
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://dev.csdn.net/images/CSDN_Logo.gif

R0lGODlhwABLANUAAHZ2dlNSUqOioufW9CEgIJKRkW7X79jJ+MLB9aXd9dbw+Pzd25G7w/aio6/r
99PH37q30vFiYqG98vSEg+3s7u9AQqCoxIqhuqrl3O/5/N+y95LI8dpikRdyhC2AkE/S7B/G50WP
nWCfq9LS0rS0tDTN6uDg4PX09cHCwn6wuobg8fHl+P7u7frCv0S55/31hvnw/f/+8fzxTv75tf77
2cSq0qrM0r6M1w3B5SSq4vv6+vztHescIQpqff///wC/5CH5BAAAAAAALAAAAADAAEsAAAb/wJ9w
SCwaj8ikcslsOp/QqHQq7Fmv2Kx2y+16v+CweEwum89WqnrNbrvfcCJ6Tq/b7/g8Ns7v+/+ASXqD
hIWGh12BiouMjUyIkJGSk2COlpeYSjhTlJ1zHT2gY6Adpaaik6eqY5mtSziwIDiysJqxILi5tJuK
tyAlJbi1TYaqxp5hpR7LHiHLpVumyyEhItbUzh6mV8bdpGLK1NfU2qhefbCzuMDAuemuRbElH/T0
we9C6b/zBv0q//0+3EvnS5fBXUY2EYQF7IM/FQYElhimRI80bNYyYntmDhm3ZtZSMEiRQoQzaNJA
prAAAcKDlw8gWCiZTVmzajixbeTILWUH/2bVUtgYgWGEDZraKr2Rx++fCgdOAwajBY+hQwdYsaqg
t2udQwkIDqzwQbbsgAMSIgab59BA1H5wI34Qlk8dO3ZfDww4QSGDAgdqKSLBE07ESpcPBgwwMSAm
hAvWOJI6BulnNQsPKJw40diCSWYgWT4Y60MHhdOnfVB44NmkNZaIW8puOfMzymkhS5JkOXZEgRE6
FNiw/cWNPIcIBsAoq0MHWR0rDiDo126WOoOC+cxyeACGbxLQ0dqjp0KC2OcUBABYD6AACh8wpDsN
O/aEc+gr8q8YAFXgLmBugYXAgPSRJQABAZigQ3+yLHHHTx6IcAEEA5S2QAMYNtDCAs75MP+ATDQ5
o9NO2xDykwiY+YACAQRQ4MMKIBo24QAdmlBAAAGwFwCC753gWGKlkQCAAB2SZQIJI3yYwkmWoZjY
ChTkR0GRBxJggg8KMCBCOeewEQtyY7HQQAQV8GBmBRE0sMBz0qUVUVwQyTVVdmvIYwACvbEI3ovS
DXieaiTgCMAImlFgAgAIugjfCh2OsGOCZZ2AaAEnHLDVRL98oIJYJ4ygYFll3UjACKoBFoyDdTRp
QYUsTGDmq7BG0AILZK3gGGyxxUhOOcd05MVFhj3g3Ah6MrdfhaqhAECOJJwAqg8m7EjqsxQUwCIB

⌨️ 快捷键说明

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