📄 csdn技术中心 实战deviceiocontrol 之四:获取硬盘的详细信息.mht
字号:
=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 << <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 + -