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

📄 csdn技术中心 实战deviceiocontrol 之五:列举已安装的存储设备.mht

📁 DeviceIOControl实战演示及源代码
💻 MHT
📖 第 1 页 / 共 5 页
字号:
class=3Dbhw98>=D6=BB=B2=BB=B9=FD=A1=B0#=A1=B1=BB=BB=B3=C9=C1=CB=A1=B0\=A1=
=B1=A1=A3=B7=D6=CE=F6=D2=BB=CF=C2=D5=E2=D1=F9=B5=C4=C9=E8=B1=B8=C2=B7=BE=B6=
=A3=AC=C4=E3=BB=E1=B7=A2=CF=D6=BA=DC=D3=D0=C8=A4=B5=C4=B6=AB=CE=F7=A3=AC=CB=
=FC=C3=C7=CA=C7=D3=C9=BD=D3=BF=DA=C0=E0=D0=CD=A1=A2=B2=FA=C6=B7=D0=CD=BA=C5=
=A1=A2=B9=CC=BC=FE=B0=E6=B1=BE=A1=A2=D0=F2=C1=D0=BA=C5=A1=A2=BC=C6=CB=E3=BB=
=FA=C3=FB=A1=A2GUID=B5=C8=D0=C5=CF=A2=D7=E9=BA=CF=B6=F8=B3=C9=B5=C4=A1=A3=
=B5=B1=C8=BB=A3=AC=CB=FC=CA=C7=C3=BB=D3=D0=B9=E6=B7=B6=B5=C4=A3=AC=B2=BB=C4=
=DC=D6=B8=CD=FB=B4=D3=D5=E2=C0=EF=C3=E6=B5=C3=B5=BD=C4=E3=CF=A3=CD=FB=D6=AA=
=B5=C0=B5=C4=B6=AB=CE=F7=A1=A3=20

            <P=20
            =
class=3Dbhw98>=D3=C3CreateFile=B4=F2=BF=AA=C9=E8=B1=B8=BA=F3=A3=AC=B6=D4=D3=
=DA=B4=E6=B4=A2=C9=E8=B1=B8=A3=ACIOCTL_DISK_GET_DRIVE_GEOMETRY=A3=ACIOCTL=
_STORAGE_GET_MEDIA_TYPES_EX=B5=C8I/O=BF=D8=D6=C6=C2=EB=D5=D5=B3=A3=CA=B9=D3=
=C3=A1=A3
            <P=20
            =
class=3Dbhw98>=BD=F1=CC=EC=CE=D2=C3=C7=CC=D6=C2=DB=D2=BB=B8=F6=D0=C2=B5=C4=
=BF=D8=D6=C6=C2=EB=A3=BAIOCTL_STORAGE_QUERY_PROPERTY=A3=AC=BB=F1=C8=A1=C9=
=E8=B1=B8=CA=F4=D0=D4=D0=C5=CF=A2=A3=AC=CF=A3=CD=FB=B5=C3=B5=BD=CF=B5=CD=B3=
=D6=D0=CB=F9=B0=B2=D7=B0=B5=C4=B8=F7=D6=D6=B9=CC=B6=A8=B5=C4=BA=CD=BF=C9=D2=
=C6=B6=AF=B5=C4=D3=B2=C5=CC=A1=A2=D3=C5=C5=CC=BA=CDCD/DVD-ROM/R/W=B5=C4=BD=
=D3=BF=DA=C0=E0=D0=CD=A1=A2=D0=F2=C1=D0=BA=C5=A1=A2=B2=FA=C6=B7ID=B5=C8=D0=
=C5=CF=A2=A1=A3=20
<PRE class=3Dbhw98><CODE class=3Dbhw98><SPAN class=3Drem>// =
IOCTL=BF=D8=D6=C6=C2=EB</SPAN>
<SPAN class=3Dkey>#define</SPAN> IOCTL_STORAGE_QUERY_PROPERTY   =
CTL_CODE(IOCTL_STORAGE_BASE, <SPAN class=3Dnum>0x0500</SPAN>, =
METHOD_BUFFERED, FILE_ANY_ACCESS)
<SPAN class=3Drem>// =
=B4=E6=B4=A2=C9=E8=B1=B8=B5=C4=D7=DC=CF=DF=C0=E0=D0=CD</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>enum</SPAN> =
_STORAGE_BUS_TYPE {
    BusTypeUnknown =3D <SPAN class=3Dnum>0x00</SPAN>,
    BusTypeScsi,
    BusTypeAtapi,
    BusTypeAta,
    BusType1394,
    BusTypeSsa,
    BusTypeFibre,
    BusTypeUsb,
    BusTypeRAID,
    BusTypeMaxReserved =3D <SPAN class=3Dnum>0x7F</SPAN>
} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
 =20
<SPAN class=3Drem>// =
=B2=E9=D1=AF=B4=E6=B4=A2=C9=E8=B1=B8=CA=F4=D0=D4=B5=C4=C0=E0=D0=CD</SPAN>=

<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>enum</SPAN> =
_STORAGE_QUERY_TYPE {
    PropertyStandardQuery =3D <SPAN class=3Dnum>0</SPAN>,          <SPAN =
class=3Drem>// =B6=C1=C8=A1=C3=E8=CA=F6</SPAN>
    PropertyExistsQuery,                <SPAN class=3Drem>// =
=B2=E2=CA=D4=CA=C7=B7=F1=D6=A7=B3=D6</SPAN>
    PropertyMaskQuery,                  <SPAN class=3Drem>// =
=B6=C1=C8=A1=D6=B8=B6=A8=B5=C4=C3=E8=CA=F6</SPAN>
    PropertyQueryMaxDefined             <SPAN class=3Drem>// =
=D1=E9=D6=A4=CA=FD=BE=DD</SPAN>
} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
 =20
<SPAN class=3Drem>// =
=B2=E9=D1=AF=B4=E6=B4=A2=C9=E8=B1=B8=BB=B9=CA=C7=CA=CA=C5=E4=C6=F7=CA=F4=D0=
=D4</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>enum</SPAN> =
_STORAGE_PROPERTY_ID {
    StorageDeviceProperty =3D <SPAN class=3Dnum>0</SPAN>,          <SPAN =
class=3Drem>// =B2=E9=D1=AF=C9=E8=B1=B8=CA=F4=D0=D4</SPAN>
    StorageAdapterProperty              <SPAN class=3Drem>// =
=B2=E9=D1=AF=CA=CA=C5=E4=C6=F7=CA=F4=D0=D4</SPAN>
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
 =20
<SPAN class=3Drem>// =
=B2=E9=D1=AF=CA=F4=D0=D4=CA=E4=C8=EB=B5=C4=CA=FD=BE=DD=BD=E1=B9=B9</SPAN>=

<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_STORAGE_PROPERTY_QUERY {
    STORAGE_PROPERTY_ID PropertyId;     <SPAN class=3Drem>// =
=C9=E8=B1=B8/=CA=CA=C5=E4=C6=F7</SPAN>
    STORAGE_QUERY_TYPE QueryType;       <SPAN class=3Drem>// =
=B2=E9=D1=AF=C0=E0=D0=CD </SPAN>
    UCHAR AdditionalParameters[<SPAN class=3Dnum>1</SPAN>];      <SPAN =
class=3Drem>// =
=B6=EE=CD=E2=B5=C4=CA=FD=BE=DD(=BD=F6=B6=A8=D2=E5=C1=CB=CF=F3=D5=F7=D0=D4=
=B5=C41=B8=F6=D7=D6=BD=DA)</SPAN>
} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
 =20
<SPAN class=3Drem>// =
=B2=E9=D1=AF=CA=F4=D0=D4=CA=E4=B3=F6=B5=C4=CA=FD=BE=DD=BD=E1=B9=B9</SPAN>=

<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_STORAGE_DEVICE_DESCRIPTOR {
    ULONG Version;                    <SPAN class=3Drem>// =
=B0=E6=B1=BE</SPAN>
    ULONG Size;                       <SPAN class=3Drem>// =
=BD=E1=B9=B9=B4=F3=D0=A1</SPAN>
    UCHAR DeviceType;                 <SPAN class=3Drem>// =
=C9=E8=B1=B8=C0=E0=D0=CD</SPAN>
    UCHAR DeviceTypeModifier;         <SPAN class=3Drem>// =
SCSI-2=B6=EE=CD=E2=B5=C4=C9=E8=B1=B8=C0=E0=D0=CD</SPAN>
    BOOLEAN RemovableMedia;           <SPAN class=3Drem>// =
=CA=C7=B7=F1=BF=C9=D2=C6=B6=AF</SPAN>
    BOOLEAN CommandQueueing;          <SPAN class=3Drem>// =
=CA=C7=B7=F1=D6=A7=B3=D6=C3=FC=C1=EE=B6=D3=C1=D0</SPAN>
    ULONG VendorIdOffset;             <SPAN class=3Drem>// =
=B3=A7=BC=D2=C9=E8=B6=A8=D6=B5=B5=C4=C6=AB=D2=C6</SPAN>
    ULONG ProductIdOffset;            <SPAN class=3Drem>// =
=B2=FA=C6=B7ID=B5=C4=C6=AB=D2=C6</SPAN>
    ULONG ProductRevisionOffset;      <SPAN class=3Drem>// =
=B2=FA=C6=B7=B0=E6=B1=BE=B5=C4=C6=AB=D2=C6</SPAN>
    ULONG SerialNumberOffset;         <SPAN class=3Drem>// =
=D0=F2=C1=D0=BA=C5=B5=C4=C6=AB=D2=C6</SPAN>
    STORAGE_BUS_TYPE BusType;         <SPAN class=3Drem>// =
=D7=DC=CF=DF=C0=E0=D0=CD</SPAN>
    ULONG RawPropertiesLength;        <SPAN class=3Drem>// =
=B6=EE=CD=E2=B5=C4=CA=F4=D0=D4=CA=FD=BE=DD=B3=A4=B6=C8</SPAN>
    UCHAR RawDeviceProperties[<SPAN class=3Dnum>1</SPAN>];     <SPAN =
class=3Drem>// =
=B6=EE=CD=E2=B5=C4=CA=F4=D0=D4=CA=FD=BE=DD(=BD=F6=B6=A8=D2=E5=C1=CB=CF=F3=
=D5=F7=D0=D4=B5=C41=B8=F6=D7=D6=BD=DA)</SPAN>
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
 =20
<SPAN class=3Drem>// =C8=A1=C9=E8=B1=B8=CA=F4=D0=D4=D0=C5=CF=A2</SPAN>
<SPAN class=3Drem>// hDevice -- =C9=E8=B1=B8=BE=E4=B1=FA</SPAN>
<SPAN class=3Drem>// pDevDesc -- =
=CA=E4=B3=F6=B5=C4=C9=E8=B1=B8=C3=E8=CA=F6=BA=CD=CA=F4=D0=D4=D0=C5=CF=A2=BB=
=BA=B3=E5=C7=F8=D6=B8=D5=EB(=B0=FC=BA=AC=C1=AC=BD=D3=D4=DA=D2=BB=C6=F0=B5=
=C4=C1=BD=B2=BF=B7=D6)</SPAN>
BOOL GetDriveProperty(HANDLE hDevice, PSTORAGE_DEVICE_DESCRIPTOR =
pDevDesc)
{
    STORAGE_PROPERTY_QUERY Query;    <SPAN class=3Drem>// =
=B2=E9=D1=AF=CA=E4=C8=EB=B2=CE=CA=FD</SPAN>
    DWORD dwOutBytes;                <SPAN class=3Drem>// =
IOCTL=CA=E4=B3=F6=CA=FD=BE=DD=B3=A4=B6=C8</SPAN>
    BOOL bResult;                    <SPAN class=3Drem>// =
IOCTL=B7=B5=BB=D8=D6=B5</SPAN>
 =20
    <SPAN class=3Drem>// =D6=B8=B6=A8=B2=E9=D1=AF=B7=BD=CA=BD</SPAN>
    Query.PropertyId =3D StorageDeviceProperty;
    Query.QueryType =3D PropertyStandardQuery;
 =20
    <SPAN class=3Drem>// =
=D3=C3IOCTL_STORAGE_QUERY_PROPERTY=C8=A1=C9=E8=B1=B8=CA=F4=D0=D4=D0=C5=CF=
=A2</SPAN>
    bResult =3D ::DeviceIoControl(hDevice, <SPAN class=3Drem>// =
=C9=E8=B1=B8=BE=E4=B1=FA</SPAN>
        IOCTL_STORAGE_QUERY_PROPERTY,    <SPAN class=3Drem>// =
=C8=A1=C9=E8=B1=B8=CA=F4=D0=D4=D0=C5=CF=A2</SPAN>
        &amp;Query, <SPAN =
class=3Dkey>sizeof</SPAN>(STORAGE_PROPERTY_QUERY),    <SPAN =
class=3Drem>// =CA=E4=C8=EB=CA=FD=BE=DD=BB=BA=B3=E5=C7=F8</SPAN>
        pDevDesc, pDevDesc-&gt;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>return</SPAN> bResult;
}
</CODE></PRE>
            <P class=3Dbhw98><STRONG class=3Dbhw98>Q</STRONG>=20
            =
=CE=D2=D3=C3=D5=E2=B8=F6=B7=BD=B7=A8=B4=D3IOCTL_STORAGE_QUERY_PROPERTY=B7=
=B5=BB=D8=B5=C4=CA=FD=BE=DD=D6=D0=A3=AC=C3=BB=D3=D0=B5=C3=B5=BDCDROM=BA=CD=
USB=BD=D3=BF=DA=B5=C4=CD=E2=D6=C3=D3=B2=C5=CC=B5=C4=D0=F2=C1=D0=BA=C5=A1=A2=
=B2=FA=C6=B7ID=B5=C8=D0=C5=CF=A2=A1=A3=B5=AB=B4=D3=C9=E8=B1=B8=C2=B7=BE=B6=
=C9=CF=BF=B4=A3=AC=C3=F7=C3=F7=CA=C7=D3=D0=D5=E2=D0=A9=D0=C5=CF=A2=B5=C4=A3=
=AC=CE=AA=CA=B2=C3=B4=CB=FC=C3=BB=D3=D0=CC=EE=B3=E4=B5=BDSTORAGE_DEVICE_D=
ESCRIPTOR=D6=D0=C4=D8=A3=BF=D4=D9=BE=CD=CA=C7=CE=AA=CA=B2=C3=B4=D3=B2=C5=CC=
=D0=F2=C1=D0=BA=C5=B1=BE=CA=C7=A1=B0D22P7KHE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            =
=A1=B1=A3=AC=CE=AA=CA=B2=C3=B4=CB=FC=CC=EE=B3=E4=B5=C4=CA=C7=A1=B03146563=
447534558202020202020202020202020=A1=B1=D5=E2=D6=D6=D0=CE=CA=BD=C4=D8=A3=BF=
=20
            <P class=3Dbhw98><STRONG class=3Dbhw98>A</STRONG>=20
            =
=B6=D4=D5=E2=C1=BD=B8=F6=CE=CA=CC=E2=CE=D2=D2=B2=CA=C7=D0=C4=B4=E6=D2=C9=BB=
=F3=A3=AC=B5=AB=D3=D6=B2=BB=B8=D2=CD=FD=BC=D3=B2=C2=B2=E2=A3=AC=D5=FD=D7=C1=
=C4=A5=D7=C5=CF=F2=CE=A2=C8=ED=C7=EB=BD=CC=C4=D8=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/StorageEnum.zip">Storage=
Enum.zip</A>=20
            (23KB)=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-28<BR>=D7=EE=BA=F3=D0=
=DE=B6=A9=A3=BA2003-05-20=20
            <P class=3Dbhw98 align=3Dleft>&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>linfeng121=
6</SPAN>=20
                  <I>( <SPAN=20
                  =
id=3DCommnetList1_CommnetList1_rpCommentList__ctl0_lblPostTime>2004-01-31=
</SPAN>)</I>=20
                </TD></TR>
              <TR>
                <TD width=3D532 bgColor=3D#ffffff colSpan=3D3><SPAN=20
                  =
id=3DCommnetList1_CommnetList1_rpCommentList__ctl0_lblContent>=B7=C7=B3=A3=
=B8=D0=D0=BB=C4=FA=B5=C4=B3=CC=D0=F2=A3=AC=C9=CF=C3=E6=B5=C4=CE=CA=CC=E2=CE=
=D2=D2=D1=BE=AD=BD=E2=BE=F6=C1=CB=A3=AC=CA=C7=CD=B7=CE=C4=BC=FE=B5=C4=CE=CA=
=CC=E2=A3=AC=D3=B2=C5=CC=BA=CD=B9=E2=C7=FD=B6=BC=BF=C9=D2=D4=BC=EC=B2=E2=A3=

⌨️ 快捷键说明

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