1、获取硬盘的详细信息Q IOCTL_DISK_GET_DRIVE_GEOMETRYIOCTL_STORAGE_GET_MEDIA_TYPES_EXA I/OI/OVC/MFCDDKLynn McGuireIDEDiskID32ATA/APAPIIDENTIFY DEVICEATA/APAPIT13IDE/EIDE/UDMAATA/APAPI-7ATA/ATAPIATA/ATAPIT13/ IOCTL/ #define DFP_SEND_DRIVE_COMMAND 0x0007c084#define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE,
2、0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)/ #define DFP_RECEIVE_DRIVE_DATA 0x0007c088#define DFP_RECEIVE_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)#define FILE_DEVICE_SCSI 0x0000001b#define IOCTL_SCSI_MINIPORT_IDENTIFY (FIL
3、E_DEVICE_SCSI irDriveRegs.bFeaturesReg = 0;/ pSCIP-irDriveRegs.bSectorCountReg = 0;/ pSCIP-irDriveRegs.bSectorNumberReg = 0;/ pSCIP-irDriveRegs.bCylLowReg = 0;/ pSCIP-irDriveRegs.bCylHighReg = 0;/ pSCIP-irDriveRegs.bDriveHeadReg = 0; pSCIP-irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY; / / pSCIP-cBuffe
4、rSize = 0; pSCOP-cBufferSize = sizeof(IDINFO); / IDENTIFY DEVICE bResult = :DeviceIoControl(hDevice, / DFP_RECEIVE_DRIVE_DATA, / IOCTL pSCIP, sizeof(SENDCMDINPARAMS) - 1, / pSCOP, sizeof(SENDCMDOUTPARAMS) + sizeof(IDINFO) - 1, / &dwOutBytes, / (LPOVERLAPPED)NULL); / I/O / :memcpy(pIdInfo, pSCOP-bBuf
5、fer, sizeof(IDINFO); / / :GlobalFree(pSCOP); :GlobalFree(pSCIP); return bResult;/ SCSI MINI-PORTIDENTIFY DEVICE/ hDevice: / pIdInfo: BOOL IdentifyDeviceAsScsi(HANDLE hDevice, int nDrive, PIDINFO pIdInfo) PSENDCMDINPARAMS pSCIP; / PSENDCMDOUTPARAMS pSCOP; / PSRB_IO_CONTROL pSRBIO; / SCSI DWORD dwOutBytes; / IOCTL BOOL bResult; / IOCTL / / pSRBIO = (PSRB_IO_CONTROL):GlobalAlloc(LMEM_ZEROINIT, sizeof(SRB_IO_CONTROL)+sizeof(SENDCMDOUTPARAMS)+sizeof(IDINFO)-1); pSCIP = (PSENDCMDINPARAMS)(char *)pSRBIO+sizeof(SRB_IO_CONTROL); pSCOP = (PSENDCMDOUTPARAMS)(char *)pSRBIO+sizeof(SRB_IO
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1