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

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

📁 DeviceIOControl实战演示及源代码
💻 MHT
📖 第 1 页 / 共 5 页
字号:
=D6=BB=C4=DC=B5=C3=B5=BD=D7=EE=BB=F9=B1=BE=B5=C4=B4=C5=C5=CC=B2=CE=CA=FD=A1=
=A3=BB=F1=C8=A1=B4=C5=C5=CC=B3=F6=B3=A7=D0=C5=CF=A2=B5=C4I/O=BF=D8=D6=C6=C2=
=EB=A3=AC=CE=A2=C8=ED=D4=DAVC/MFC=BB=B7=BE=B3=D6=D0=C3=BB=D3=D0=BF=AA=B7=C5=
=A3=AC=D4=DADDK=D6=D0=BF=C9=D2=D4=B7=A2=CF=D6=D2=BB=D0=A9=CF=DF=CB=F7=A1=A3=
=D4=E7=CF=C8=A3=ACLynn=20
            =
McGuire=D0=B4=C1=CB=D2=BB=B8=F6=BA=DC=B3=F6=C3=FB=B5=C4=BB=F1=C8=A1IDE=D3=
=B2=C5=CC=CF=EA=CF=B8=D0=C5=CF=A2=B5=C4=B3=CC=D0=F2DiskID32=A3=AC=CF=C2=C3=
=E6=B5=C4=C0=FD=D7=D3=CA=C7=D4=DA=C6=E4=BB=F9=B4=A1=C9=CF=BE=AD=B9=FD=D4=F6=
=C9=BE=BA=CD=B8=C4=BD=F8=B6=F8=B3=C9=B5=C4=A1=A3=20
            <P =
class=3Dbhw98>=B1=BE=C0=FD=D6=D0=A3=AC=CE=D2=C3=C7=D2=AA=D3=C3=B5=BDATA/A=
PAPI=B5=C4IDENTIFY=20
            =
DEVICE=D6=B8=C1=EE=A1=A3ATA/APAPI=CA=C7=B9=FA=BC=CA=D7=E9=D6=AFT13=C6=F0=B2=
=DD=BA=CD=B7=A2=B2=BC=B5=C4IDE/EIDE/UDMA=D3=B2=C5=CC=BC=B0=C6=E4=CB=FC=BF=
=C9=D2=C6=B6=AF=B4=E6=B4=A2=C9=E8=B1=B8=D3=EB=D6=F7=BB=FA=BD=D3=BF=DA=B5=C4=
=B1=EA=D7=BC=A3=AC=D6=C1=BD=F1=D2=D1=BE=AD=B5=BD=C1=CBATA/APAPI-7=B0=E6=B1=
=BE=A1=A3=B8=C3=BD=D3=BF=DA=B1=EA=D7=BC=B9=E6=B6=A8=C1=CBATA/ATAPI=C9=E8=B1=
=B8=B5=C4=CA=E4=C8=EB=CA=E4=B3=F6=BC=C4=B4=E6=C6=F7=BA=CD=D6=B8=C1=EE=BC=AF=
=A1=A3=D3=FB=C1=CB=BD=E2=B8=FC=CF=EA=CF=B8=B5=C4ATA/ATAPI=BC=BC=CA=F5=D7=CA=
=C1=CF=A3=AC=BF=C9=B7=C3=CE=CAT13=B5=C4=D5=BE=B5=E3=A1=A3=20

            <P =
class=3Dbhw98>=D3=C3=B5=BD=B5=C4=B3=A3=C1=BF=BC=B0=CA=FD=BE=DD=BD=E1=B9=B9=
=D3=D0=D2=D4=CF=C2=D2=BB=D0=A9=A3=BA <PRE class=3Dbhw98><CODE =
class=3Dbhw98><SPAN class=3Drem>// IOCTL=BF=D8=D6=C6=C2=EB</SPAN>
<SPAN class=3Drem>// #define  DFP_SEND_DRIVE_COMMAND   0x0007c084</SPAN>
<SPAN class=3Dkey>#define</SPAN>  DFP_SEND_DRIVE_COMMAND   =
CTL_CODE(IOCTL_DISK_BASE, <SPAN class=3Dnum>0x0021</SPAN>, =
METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
<SPAN class=3Drem>// #define  DFP_RECEIVE_DRIVE_DATA   0x0007c088</SPAN>
<SPAN class=3Dkey>#define</SPAN>  DFP_RECEIVE_DRIVE_DATA   =
CTL_CODE(IOCTL_DISK_BASE, <SPAN class=3Dnum>0x0022</SPAN>, =
METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
<SPAN class=3Dkey>#define</SPAN>  FILE_DEVICE_SCSI           <SPAN =
class=3Dnum>0x0000001B</SPAN>
<SPAN class=3Dkey>#define</SPAN>  IOCTL_SCSI_MINIPORT_IDENTIFY      =
((FILE_DEVICE_SCSI &lt;&lt; <SPAN class=3Dnum>16</SPAN>) + <SPAN =
class=3Dnum>0x0501</SPAN>)
<SPAN class=3Dkey>#define</SPAN>  IOCTL_SCSI_MINIPORT        <SPAN =
class=3Dnum>0x0004D008</SPAN>          <SPAN class=3Drem>//  see =
NTDDSCSI.H for definition</SPAN>
 =20
<SPAN class=3Drem>// ATA/ATAPI=D6=B8=C1=EE</SPAN>
<SPAN class=3Dkey>#define</SPAN>  IDE_ATA_IDENTIFY           <SPAN =
class=3Dnum>0xEC</SPAN>     <SPAN class=3Drem>// =
ATA=B5=C4ID=D6=B8=C1=EE(IDENTIFY DEVICE)</SPAN>
 =20
<SPAN class=3Drem>// IDE=C3=FC=C1=EE=BC=C4=B4=E6=C6=F7</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_IDEREGS
{
    BYTE bFeaturesReg;       <SPAN class=3Drem>// =
=CC=D8=D5=F7=BC=C4=B4=E6=C6=F7(=D3=C3=D3=DASMART=C3=FC=C1=EE)</SPAN>
    BYTE bSectorCountReg;    <SPAN class=3Drem>// =
=C9=C8=C7=F8=CA=FD=C4=BF=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bSectorNumberReg;   <SPAN class=3Drem>// =
=BF=AA=CA=BC=C9=C8=C7=F8=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bCylLowReg;         <SPAN class=3Drem>// =
=BF=AA=CA=BC=D6=F9=C3=E6=B5=CD=D7=D6=BD=DA=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bCylHighReg;        <SPAN class=3Drem>// =
=BF=AA=CA=BC=D6=F9=C3=E6=B8=DF=D7=D6=BD=DA=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bDriveHeadReg;      <SPAN class=3Drem>// =
=C7=FD=B6=AF=C6=F7/=B4=C5=CD=B7=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bCommandReg;        <SPAN class=3Drem>// =
=D6=B8=C1=EE=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bReserved;          <SPAN class=3Drem>// =B1=A3=C1=F4</SPAN>
} IDEREGS, *PIDEREGS, *LPIDEREGS;
 =20
<SPAN class=3Drem>// =
=B4=D3=C7=FD=B6=AF=B3=CC=D0=F2=B7=B5=BB=D8=B5=C4=D7=B4=CC=AC</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_DRIVERSTATUS
{
    BYTE bDriverError;      <SPAN class=3Drem>// =
=B4=ED=CE=F3=C2=EB</SPAN>
    BYTE bIDEStatus;        <SPAN class=3Drem>// =
IDE=D7=B4=CC=AC=BC=C4=B4=E6=C6=F7</SPAN>
    BYTE bReserved[<SPAN class=3Dnum>2</SPAN>];      <SPAN =
class=3Drem>// =B1=A3=C1=F4</SPAN>
    DWORD dwReserved[<SPAN class=3Dnum>2</SPAN>];    <SPAN =
class=3Drem>// =B1=A3=C1=F4</SPAN>
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;
 =20
<SPAN class=3Drem>// =
IDE=C9=E8=B1=B8IOCTL=CA=E4=C8=EB=CA=FD=BE=DD=BD=E1=B9=B9</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_SENDCMDINPARAMS
{
    DWORD cBufferSize;      <SPAN class=3Drem>// =
=BB=BA=B3=E5=C7=F8=D7=D6=BD=DA=CA=FD</SPAN>
    IDEREGS irDriveRegs;    <SPAN class=3Drem>// =
IDE=BC=C4=B4=E6=C6=F7=D7=E9</SPAN>
    BYTE bDriveNumber;      <SPAN class=3Drem>// =
=C7=FD=B6=AF=C6=F7=BA=C5</SPAN>
    BYTE bReserved[<SPAN class=3Dnum>3</SPAN>];      <SPAN =
class=3Drem>// =B1=A3=C1=F4</SPAN>
    DWORD dwReserved[<SPAN class=3Dnum>4</SPAN>];    <SPAN =
class=3Drem>// =B1=A3=C1=F4</SPAN>
    BYTE bBuffer[<SPAN class=3Dnum>1</SPAN>];        <SPAN =
class=3Drem>// =
=CA=E4=C8=EB=BB=BA=B3=E5=C7=F8(=B4=CB=B4=A6=CF=F3=D5=F7=D0=D4=B5=D8=B0=FC=
=BA=AC1=D7=D6=BD=DA)</SPAN>
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
 =20
<SPAN class=3Drem>// =
IDE=C9=E8=B1=B8IOCTL=CA=E4=B3=F6=CA=FD=BE=DD=BD=E1=B9=B9</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> =
_SENDCMDOUTPARAMS
{
    DWORD cBufferSize;          <SPAN class=3Drem>// =
=BB=BA=B3=E5=C7=F8=D7=D6=BD=DA=CA=FD</SPAN>
    DRIVERSTATUS DriverStatus;  <SPAN class=3Drem>// =
=C7=FD=B6=AF=B3=CC=D0=F2=B7=B5=BB=D8=D7=B4=CC=AC</SPAN>
    BYTE bBuffer[<SPAN class=3Dnum>1</SPAN>];            <SPAN =
class=3Drem>// =
=CA=E4=C8=EB=BB=BA=B3=E5=C7=F8(=B4=CB=B4=A6=CF=F3=D5=F7=D0=D4=B5=D8=B0=FC=
=BA=AC1=D7=D6=BD=DA)</SPAN>
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
 =20
<SPAN class=3Drem>// =
IDE=B5=C4ID=C3=FC=C1=EE=B7=B5=BB=D8=B5=C4=CA=FD=BE=DD</SPAN>
<SPAN class=3Drem>// =
=B9=B2512=D7=D6=BD=DA(256=B8=F6WORD)=A3=AC=D5=E2=C0=EF=BD=F6=B6=A8=D2=E5=C1=
=CB=D2=BB=D0=A9=B8=D0=D0=CB=C8=A4=B5=C4=CF=EE(=BB=F9=B1=BE=C9=CF=D2=C0=BE=
=DDATA/ATAPI-4)</SPAN>
<SPAN class=3Dkey>typedef</SPAN> <SPAN class=3Dkey>struct</SPAN> _IDINFO
{
    USHORT  wGenConfig;                 <SPAN class=3Drem>// WORD 0: =
=BB=F9=B1=BE=D0=C5=CF=A2=D7=D6</SPAN>
    USHORT  wNumCyls;                   <SPAN class=3Drem>// WORD 1: =
=D6=F9=C3=E6=CA=FD</SPAN>
    USHORT  wReserved2;                 <SPAN class=3Drem>// WORD 2: =
=B1=A3=C1=F4</SPAN>
    USHORT  wNumHeads;                  <SPAN class=3Drem>// WORD 3: =
=B4=C5=CD=B7=CA=FD</SPAN>
    USHORT  wReserved4;                 <SPAN class=3Drem>// WORD 4: =
=B1=A3=C1=F4</SPAN>
    USHORT  wReserved5;                 <SPAN class=3Drem>// WORD 5: =
=B1=A3=C1=F4</SPAN>
    USHORT  wNumSectorsPerTrack;        <SPAN class=3Drem>// WORD 6: =
=C3=BF=B4=C5=B5=C0=C9=C8=C7=F8=CA=FD</SPAN>
    USHORT  wVendorUnique[<SPAN class=3Dnum>3</SPAN>];           <SPAN =
class=3Drem>// WORD 7-9: =B3=A7=BC=D2=C9=E8=B6=A8=D6=B5</SPAN>
    CHAR    sSerialNumber[<SPAN class=3Dnum>20</SPAN>];          <SPAN =
class=3Drem>// WORD 10-19:=D0=F2=C1=D0=BA=C5</SPAN>
    USHORT  wBufferType;                <SPAN class=3Drem>// WORD 20: =
=BB=BA=B3=E5=C0=E0=D0=CD</SPAN>
    USHORT  wBufferSize;                <SPAN class=3Drem>// WORD 21: =
=BB=BA=B3=E5=B4=F3=D0=A1</SPAN>
    USHORT  wECCSize;                   <SPAN class=3Drem>// WORD 22: =
ECC=D0=A3=D1=E9=B4=F3=D0=A1</SPAN>
    CHAR    sFirmwareRev[<SPAN class=3Dnum>8</SPAN>];            <SPAN =
class=3Drem>// WORD 23-26: =B9=CC=BC=FE=B0=E6=B1=BE</SPAN>
    CHAR    sModelNumber[<SPAN class=3Dnum>40</SPAN>];           <SPAN =
class=3Drem>// WORD 27-46: =C4=DA=B2=BF=D0=CD=BA=C5</SPAN>
    USHORT  wMoreVendorUnique;          <SPAN class=3Drem>// WORD 47: =
=B3=A7=BC=D2=C9=E8=B6=A8=D6=B5</SPAN>
    USHORT  wReserved48;                <SPAN class=3Drem>// WORD 48: =
=B1=A3=C1=F4</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  reserved1:<SPAN class=3Dnum>8</SPAN>;
        USHORT  DMA:<SPAN class=3Dnum>1</SPAN>;                  <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6DMA</SPAN>
        USHORT  LBA:<SPAN class=3Dnum>1</SPAN>;                  <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6LBA</SPAN>
        USHORT  DisIORDY:<SPAN class=3Dnum>1</SPAN>;             <SPAN =
class=3Drem>// 1=3D=BF=C9=B2=BB=CA=B9=D3=C3IORDY</SPAN>
        USHORT  IORDY:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6IORDY</SPAN>
        USHORT  SoftReset:<SPAN class=3Dnum>1</SPAN>;            <SPAN =
class=3Drem>// 1=3D=D0=E8=D2=AAATA=C8=ED=C6=F4=B6=AF</SPAN>
        USHORT  Overlap:<SPAN class=3Dnum>1</SPAN>;              <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=D6=D8=B5=FE=B2=D9=D7=F7</SPAN>
        USHORT  Queue:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=C3=FC=C1=EE=B6=D3=C1=D0</SPAN>
        USHORT  InlDMA:<SPAN class=3Dnum>1</SPAN>;               <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=BD=BB=B2=E6=B4=E6=C8=A1DMA</SPAN>
    } wCapabilities;                    <SPAN class=3Drem>// WORD 49: =
=D2=BB=B0=E3=C4=DC=C1=A6</SPAN>
    USHORT  wReserved1;                 <SPAN class=3Drem>// WORD 50: =
=B1=A3=C1=F4</SPAN>
    USHORT  wPIOTiming;                 <SPAN class=3Drem>// WORD 51: =
PIO=CA=B1=D0=F2</SPAN>
    USHORT  wDMATiming;                 <SPAN class=3Drem>// WORD 52: =
DMA=CA=B1=D0=F2</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  CHSNumber:<SPAN class=3Dnum>1</SPAN>;            <SPAN =
class=3Drem>// 1=3DWORD 54-58=D3=D0=D0=A7</SPAN>
        USHORT  CycleNumber:<SPAN class=3Dnum>1</SPAN>;          <SPAN =
class=3Drem>// 1=3DWORD 64-70=D3=D0=D0=A7</SPAN>
        USHORT  UnltraDMA:<SPAN class=3Dnum>1</SPAN>;            <SPAN =
class=3Drem>// 1=3DWORD 88=D3=D0=D0=A7</SPAN>
        USHORT  reserved:<SPAN class=3Dnum>13</SPAN>;
    } wFieldValidity;                   <SPAN class=3Drem>// WORD 53: =
=BA=F3=D0=F8=D7=D6=B6=CE=D3=D0=D0=A7=D0=D4=B1=EA=D6=BE</SPAN>
    USHORT  wNumCurCyls;                <SPAN class=3Drem>// WORD 54: =
CHS=BF=C9=D1=B0=D6=B7=B5=C4=D6=F9=C3=E6=CA=FD</SPAN>
    USHORT  wNumCurHeads;               <SPAN class=3Drem>// WORD 55: =
CHS=BF=C9=D1=B0=D6=B7=B5=C4=B4=C5=CD=B7=CA=FD</SPAN>
    USHORT  wNumCurSectorsPerTrack;     <SPAN class=3Drem>// WORD 56: =
CHS=BF=C9=D1=B0=D6=B7=C3=BF=B4=C5=B5=C0=C9=C8=C7=F8=CA=FD</SPAN>
    USHORT  wCurSectorsLow;             <SPAN class=3Drem>// WORD 57: =
CHS=BF=C9=D1=B0=D6=B7=B5=C4=C9=C8=C7=F8=CA=FD=B5=CD=CE=BB=D7=D6</SPAN>
    USHORT  wCurSectorsHigh;            <SPAN class=3Drem>// WORD 58: =
CHS=BF=C9=D1=B0=D6=B7=B5=C4=C9=C8=C7=F8=CA=FD=B8=DF=CE=BB=D7=D6</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  CurNumber:<SPAN class=3Dnum>8</SPAN>;            <SPAN =
class=3Drem>// =
=B5=B1=C7=B0=D2=BB=B4=CE=D0=D4=BF=C9=B6=C1=D0=B4=C9=C8=C7=F8=CA=FD</SPAN>=

        USHORT  Multi:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// =
1=3D=D2=D1=D1=A1=D4=F1=B6=E0=C9=C8=C7=F8=B6=C1=D0=B4</SPAN>
        USHORT  reserved1:<SPAN class=3Dnum>7</SPAN>;
    } wMultSectorStuff;                 <SPAN class=3Drem>// WORD 59: =
=B6=E0=C9=C8=C7=F8=B6=C1=D0=B4=C9=E8=B6=A8</SPAN>
    ULONG  dwTotalSectors;              <SPAN class=3Drem>// WORD 60-61: =
LBA=BF=C9=D1=B0=D6=B7=B5=C4=C9=C8=C7=F8=CA=FD</SPAN>
    USHORT  wSingleWordDMA;             <SPAN class=3Drem>// WORD 62: =
=B5=A5=D7=D6=BD=DADMA=D6=A7=B3=D6=C4=DC=C1=A6</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  Mode0:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=C4=A3=CA=BD0 (4.17Mb/s)</SPAN>
        USHORT  Mode1:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=C4=A3=CA=BD1 (13.3Mb/s)</SPAN>
        USHORT  Mode2:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6=C4=A3=CA=BD2 (16.7Mb/s)</SPAN>
        USHORT  Reserved1:<SPAN class=3Dnum>5</SPAN>;
        USHORT  Mode0Sel:<SPAN class=3Dnum>1</SPAN>;             <SPAN =
class=3Drem>// 1=3D=D2=D1=D1=A1=D4=F1=C4=A3=CA=BD0</SPAN>
        USHORT  Mode1Sel:<SPAN class=3Dnum>1</SPAN>;             <SPAN =
class=3Drem>// 1=3D=D2=D1=D1=A1=D4=F1=C4=A3=CA=BD1</SPAN>
        USHORT  Mode2Sel:<SPAN class=3Dnum>1</SPAN>;             <SPAN =
class=3Drem>// 1=3D=D2=D1=D1=A1=D4=F1=C4=A3=CA=BD2</SPAN>
        USHORT  Reserved2:<SPAN class=3Dnum>5</SPAN>;
    } wMultiWordDMA;                    <SPAN class=3Drem>// WORD 63: =
=B6=E0=D7=D6=BD=DADMA=D6=A7=B3=D6=C4=DC=C1=A6</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  AdvPOIModes:<SPAN class=3Dnum>8</SPAN>;          <SPAN =
class=3Drem>// =D6=A7=B3=D6=B8=DF=BC=B6POI=C4=A3=CA=BD=CA=FD</SPAN>
        USHORT  reserved:<SPAN class=3Dnum>8</SPAN>;
    } wPIOCapacity;                     <SPAN class=3Drem>// WORD 64: =
=B8=DF=BC=B6PIO=D6=A7=B3=D6=C4=DC=C1=A6</SPAN>
    USHORT  wMinMultiWordDMACycle;      <SPAN class=3Drem>// WORD 65: =
=B6=E0=D7=D6=BD=DADMA=B4=AB=CA=E4=D6=DC=C6=DA=B5=C4=D7=EE=D0=A1=D6=B5</SP=
AN>
    USHORT  wRecMultiWordDMACycle;      <SPAN class=3Drem>// WORD 66: =
=B6=E0=D7=D6=BD=DADMA=B4=AB=CA=E4=D6=DC=C6=DA=B5=C4=BD=A8=D2=E9=D6=B5</SP=
AN>
    USHORT  wMinPIONoFlowCycle;         <SPAN class=3Drem>// WORD 67: =
=CE=DE=C1=F7=BF=D8=D6=C6=CA=B1PIO=B4=AB=CA=E4=D6=DC=C6=DA=B5=C4=D7=EE=D0=A1=
=D6=B5</SPAN>
    USHORT  wMinPOIFlowCycle;           <SPAN class=3Drem>// WORD 68: =
=D3=D0=C1=F7=BF=D8=D6=C6=CA=B1PIO=B4=AB=CA=E4=D6=DC=C6=DA=B5=C4=D7=EE=D0=A1=
=D6=B5</SPAN>
    USHORT  wReserved69[<SPAN class=3Dnum>11</SPAN>];            <SPAN =
class=3Drem>// WORD 69-79: =B1=A3=C1=F4</SPAN>
    <SPAN class=3Dkey>struct</SPAN> {
        USHORT  Reserved1:<SPAN class=3Dnum>1</SPAN>;
        USHORT  ATA1:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA-1</SPAN>
        USHORT  ATA2:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA-2</SPAN>
        USHORT  ATA3:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA-3</SPAN>
        USHORT  ATA4:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-4</SPAN>
        USHORT  ATA5:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-5</SPAN>
        USHORT  ATA6:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-6</SPAN>
        USHORT  ATA7:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-7</SPAN>
        USHORT  ATA8:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-8</SPAN>
        USHORT  ATA9:<SPAN class=3Dnum>1</SPAN>;                 <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-9</SPAN>
        USHORT  ATA10:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-10</SPAN>
        USHORT  ATA11:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-11</SPAN>
        USHORT  ATA12:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-12</SPAN>
        USHORT  ATA13:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-13</SPAN>
        USHORT  ATA14:<SPAN class=3Dnum>1</SPAN>;                <SPAN =
class=3Drem>// 1=3D=D6=A7=B3=D6ATA/ATAPI-14</SPAN>
        USHORT  Reserved2:<SPAN class=3Dnum>1</SPAN>;
    } wMajorVersion;                    <SPAN class=3Drem>// WORD 80: =
=D6=F7=B0=E6=B1=BE</SPAN>
    USHORT  wMinorVersion;              <SPAN class=3Drem>// WORD 81: =
=B8=B1=B0=E6=B1=BE</SPAN>

⌨️ 快捷键说明

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