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

📄 在win9x-nt下获取硬盘物理序列号.mht

📁 这是关于在VC中应用MFC的简明教程的一组完整网页集合。特点:简明--既简洁又明了
💻 MHT
📖 第 1 页 / 共 5 页
字号:
            =
InParams;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            Now, get the ID sector for all IDE devices in the=20
            =
system.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            If the device is ATAPI use the IDE_ATAPI_IDENTIFY=20
            =
command,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            otherwise use the IDE_ATA_IDENTIFY=20
            =
command<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=BE=DF=CC=E5=CB=F9=B5=C3=BD=E1=B9=FB=C7=EB=B2=CE=BF=BC=CD=B7=CE=C4=BC=FE=D6=
=D0=B5=C4=CB=B5=C3=F7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btIDCmd=20
            =3D (gvopVersionParams.bIDEDeviceMap &gt;&gt; nDrive &amp; =
0x10)=20
            =
?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;IDE_ATAPI_IDENTIFY=20
            :=20
            =
IDE_ATA_IDENTIFY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(&amp;InParams,=20
            =
sizeof(SENDCMDINPARAMS));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(btIDOutCmd=
,=20
            =
sizeof(btIDOutCmd));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(DoIdentify(hPhysica=
lDriveIOCTL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp=
;InParams,=20
            =
(PSENDCMDOUTPARAMS)btIDOutCmd,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;(BYTE)btIDCmd,=20
            (BYTE)nDrive,=20
            =
&amp;dwBytesReturned))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD=20
            =
dwDiskData[256];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USHORT=
=20
            *pIDSector; //=20
            =
=B6=D4=D3=A6=BD=E1=B9=B9IDSECTOR=A3=AC=BC=FB=CD=B7=CE=C4=BC=FE<BR>&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char=20
            =
szSerialNumber[21];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cha=
r=20
            =
szModelNumber[41];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
pIDSector=20
            =3D=20
            =
(USHORT*)((SENDCMDOUTPARAMS*)btIDOutCmd)-&gt;bBuffer;<BR>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int=20
            i=3D0; i &lt; 256;=20
            =
i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;dwDiskData[i]=20
            =3D=20
            =
pIDSector[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=C8=A1=CF=B5=C1=D0=BA=C5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;ZeroMemory(szSerialNumber,=20
            =
sizeof(szSerialNumber));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;strcpy(szSerialNumber,=20
            ConvertToString(dwDiskData, 10,=20
            =
19));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=C8=A1=C4=A3=D0=CD=BA=C5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;ZeroMemory(szModelNumber,=20
            =
sizeof(szModelNumber));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;strcpy(szModelNumber,=20
            ConvertToString(dwDiskData, 27,=20
            =
46));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSerList-&gt;=
Add(szSerialNumber);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pM=
odeList-&gt;Add(szModelNumber);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHa=
ndle=20
            =
(hPhysicalDriveIOCTL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>//-------------------------------=
--------------------------------------------<BR>//=20
            DoIdentify<BR>bool __fastcall DoIdentify(HANDLE =
hPhysicalDriveIOCTL,=20
            PSENDCMDINPARAMS=20
            =
pSCIP,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;PSENDCMDOUTPARAMS=20
            pSCOP, BYTE btIDCmd, BYTE=20
            =
btDriveNum,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;PDWORD=20
            pdwBytesReturned)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Set up =
data=20
            structures for IDENTIFY=20
            command.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;cBufferSize =
=3D=20
            =
IDENTIFY_BUFFER_SIZE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bF=
eaturesReg=20
            =3D=20
            =
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bSectorCountReg&nbsp;=
&nbsp;=3D=20
            =
1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bSectorNumberReg=20
            =3D=20
            =
1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bCylLowReg&nbsp;&nbsp=
;=3D=20
            =
0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bCylHighReg =3D=20
            0;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Compute the drive=20
            =
number.=A3=A8=D6=F7=C5=CC=BA=CD=B4=D3=C5=CC=CB=F9=B6=D4=D3=A6=B5=C4=D6=B5=
=CA=C7=B2=BB=D2=BB=D1=F9=B5=C4=A3=A9<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt=
;irDriveRegs.bDriveHeadReg=20
            =3D (btDriveNum &amp; 1) ? 0xB0 :=20
            0xA0;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// The command can =
either be=20
            IDE identify or ATAPI=20
            =
identify.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;irDriveRegs.bCommandReg=20
            =3D =
btIDCmd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;bDriveNumber =3D=20
            btDriveNum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSCIP-&gt;cBufferSize =
=3D=20
            IDENTIFY_BUFFER_SIZE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return=20
            DeviceIoControl(hPhysicalDriveIOCTL,=20
            =
DFP_RCV_DRIVE_DATA,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;(LPVOID)pSCIP,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(SENDCMDINPARAMS)=20
            -=20
            =
1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(=
LPVOID)pSCOP,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;sizeof(SENDCMDOUTPARAMS)=20
            + IDENTIFY_BUFFER_SIZE -=20
            =
1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=
dwBytesReturned,=20
            =
NULL);<BR>}<BR>//--------------------------------------------------------=
-------------------<BR>//=20
            Windows 95/98/ME=20
            =
=B4=FA=C2=EB<BR>//-------------------------------------------------------=
--------------------<BR>//=20
            ReadPhysicalDriveOnW9X<BR>void __fastcall=20
            ReadPhysicalDriveOnW9X(TStrings *pSerList, TStrings=20
            *pModeList)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD=20
            =
wOutData[256];<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetPriorityClass(GetCurrentProc=
ess(),=20
            REALTIME_PRIORITY_CLASS);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=BE=AD=B9=FD=B2=E2=CA=D4=A3=AC=B7=A2=CF=D6=B5=DA=D2=BB=B4=CE=B5=F7=D3=C3=B6=
=F8=C7=D2Drive &gt;=3D=20
            =
2=CA=B1=BB=E1=D4=DARing0=B4=FA=C2=EB=D6=D0=B3=F6=CF=D6=B4=ED=CE=F3=A3=AC=B5=
=BC=D6=C2=C0=B6=C6=C1=A1=A3<BR>&nbsp;&nbsp;&nbsp;&nbsp;// =
=BE=AD=B9=FDN=A3=A8N &gt;=20
            =
15=A3=A9=B4=CE=B5=C4=C0=B6=C6=C1=BA=F3=C8=D4=D5=D2=B2=BB=B5=BD=D4=AD=D2=F2=
=A3=BA=A3=A8=A3=AC=B2=BB=B5=C3=B2=BB=D4=DA=D5=E2=C0=EF=D4=F6=BC=D3=D2=BB=B6=
=CE=CE=DE=D3=C3=B4=FA=C2=EB=D2=D4<BR>&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=B1=DC=C3=E2=C0=B6=C6=C1=B5=C4=B3=F6=CF=D6=A1=A3=A3=A8=C6=DA=B4=FD=B8=DF=C8=
=CB=C4=DC=D6=B8=B3=F6=D4=AD=D2=F2=A3=A9<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(in=
t nDrive =3D 0;=20
            nDrive &lt; 8;=20
            =
nDrive++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;WORD=20
            =
dwBaseAddress;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE=20
            =
btMasterSlave;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            Master Or=20
            =
Slave<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool=20
            =
bIsIDEExist;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool=20
            =
IsDiskExist;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switc=
h(nDrive=20
            /=20
            =
2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case=20
            0: dwBaseAddress =3D 0x01F0;=20
            =
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;case=20
            1: dwBaseAddress =3D 0x0170;=20
            =
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;case=20
            2: dwBaseAddress =3D 0x01E8;=20
            =
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;case=20
            3: dwBaseAddress =3D 0x0168;=20
            =
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btMasterSlave=20
            =3D (BYTE)(((nDrive % 2) =3D=3D 0) ? 0xA0 :=20
            =
0xB0);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            =
=BD=F8=C8=EBRing0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read=
PhysicalDriveOnW9X_Ring0(true,=20
            dwBaseAddress,=20
            =
btMasterSlave,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bIsIDEExist,=20
            IsDiskExist,=20
            =
wOutData);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//=
=20
            =BF=AA=CA=BC=B6=C1=C8=A1<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int =
nDrive =3D 0; nDrive &lt; 8;=20
            =
nDrive++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;WORD=20
            =
dwBaseAddress;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE=20
            =
btMasterSlave;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//=20
            Master Or=20
            =
Slave<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool=20
            =
bIsIDEExist;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool=20

⌨️ 快捷键说明

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