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>
&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->MediaType =3D =
(MEDIA_TYPE)pmt->MediaInfo[0].DeviceSpecific.DiskInfo.MediaType;
// pdg->Cylinders =3D =
pmt->MediaInfo[0].DeviceSpecific.DiskInfo.Cylinders;
// pdg->TracksPerCylinder =3D =
pmt->MediaInfo[0].DeviceSpecific.DiskInfo.TracksPerCylinder;
// ... ...</SPAN>
::memcpy(pdg, pmt->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 < <SPAN =
class=3Dkey>sizeof</SPAN>(szDevName)/<SPAN =
class=3Dkey>sizeof</SPAN>(<SPAN class=3Dkey>char</SPAN>*); i++)
{
bResult =3D GetDriveGeometry(szDevName[i], &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& 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> </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&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&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 © 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 + -
显示快捷键?