获取硬盘的详细信息文档格式.docx

上传人:b****5 文档编号:21472059 上传时间:2023-01-30 格式:DOCX 页数:13 大小:19.95KB
下载 相关 举报
获取硬盘的详细信息文档格式.docx_第1页
第1页 / 共13页
获取硬盘的详细信息文档格式.docx_第2页
第2页 / 共13页
获取硬盘的详细信息文档格式.docx_第3页
第3页 / 共13页
获取硬盘的详细信息文档格式.docx_第4页
第4页 / 共13页
获取硬盘的详细信息文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

获取硬盘的详细信息文档格式.docx

《获取硬盘的详细信息文档格式.docx》由会员分享,可在线阅读,更多相关《获取硬盘的详细信息文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

获取硬盘的详细信息文档格式.docx

Ë

ù

I/O¿

Ø

Ö

Æ

Â

×

î

±

¾

³

ö

§

í

VC/MFC»

ª

DDKÖ

©

ß

÷

ç

LynnMcGuireÐ

û

IDEÓ

DiskID32£

æ

Ç

ä

Í

ø

ATA/APAPIµ

IDENTIFYDEVICEÖ

ATA/APAPIÊ

¹

ú

é

¯

T13Æ

ð

Ý

IDE/EIDE/UDMAÓ

è

ATA/APAPI-7°

ATA/ATAPIÉ

â

ATA/ATAPI¼

õ

T13µ

Õ

á

//IOCTL¿

//#defineDFP_SEND_DRIVE_COMMAND0x0007c084

#defineDFP_SEND_DRIVE_COMMANDCTL_CODE(IOCTL_DISK_BASE,0x0021,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)

//#defineDFP_RECEIVE_DRIVE_DATA0x0007c088

#defineDFP_RECEIVE_DRIVE_DATACTL_CODE(IOCTL_DISK_BASE,0x0022,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)

#defineFILE_DEVICE_SCSI0x0000001b

#defineIOCTL_SCSI_MINIPORT_IDENTIFY((FILE_DEVICE_SCSI<

<

16)+0x0501)

#defineIOCTL_SCSI_MINIPORT0x0004D008//seeNTDDSCSI.Hfordefinition

//ATA/ATAPIÖ

#defineIDE_ATA_IDENTIFY0xEC//ATAµ

IDÖ

(IDENTIFYDEVICE)

//IDEÃ

typedefstruct_IDEREGS

{

BYTEbFeaturesReg;

//Ì

(Ó

SMARTÃ

BYTEbSectorCountReg;

//É

BYTEbSectorNumberReg;

//¿

BYTEbCylLowReg;

BYTEbCylHighReg;

BYTEbDriveHeadReg;

//Ç

BYTEbCommandReg;

//Ö

BYTEbReserved;

//±

ô

}IDEREGS,*PIDEREGS,*LPIDEREGS;

//´

typedefstruct_DRIVERSTATUS

BYTEbDriverError;

//´

ó

BYTEbIDEStatus;

//IDE×

BYTEbReserved[2];

DWORDdwReserved[2];

}DRIVERSTATUS,*PDRIVERSTATUS,*LPDRIVERSTATUS;

//IDEÉ

IOCTLÊ

typedefstruct_SENDCMDINPARAMS

DWORDcBufferSize;

//»

å

IDEREGSirDriveRegs;

//IDE¼

BYTEbDriveNumber;

BYTEbReserved[3];

DWORDdwReserved[4];

BYTEbBuffer[1];

//Ê

(´

¦

}SENDCMDINPARAMS,*PSENDCMDINPARAMS,*LPSENDCMDINPARAMS;

typedefstruct_SENDCMDOUTPARAMS

DRIVERSTATUSDriverStatus;

}SENDCMDOUTPARAMS,*PSENDCMDOUTPARAMS,*LPSENDCMDOUTPARAMS;

//IDEµ

IDÃ

//¹

512×

(256¸

WORD)£

ï

¤

(»

ATA/ATAPI-4)

typedefstruct_IDINFO

USHORTwGenConfig;

//WORD0:

»

USHORTwNumCyls;

//WORD1:

Ö

USHORTwReserved2;

//WORD2:

±

USHORTwNumHeads;

//WORD3:

´

USHORTwReserved4;

//WORD4:

USHORTwReserved5;

//WORD5:

USHORTwNumSectorsPerTrack;

//WORD6:

Ã

USHORTwVendorUnique[3];

//WORD7-9:

³

CHARsSerialNumber[20];

//WORD10-19:

USHORTwBufferType;

//WORD20:

à

USHORTwBufferSize;

//WORD21:

USHORTwECCSize;

//WORD22:

ECCÐ

CHARsFirmwareRev[8];

//WORD23-26:

¹

þ

CHARsModelNumber[40];

//WORD27-46:

Ä

USHORTwMoreVendorUnique;

//WORD47:

USHORTwReserved48;

//WORD48:

struct{

USHORTreserved1:

8;

USHORTDMA:

1;

//1=Ö

DMA

USHORTLBA:

LBA

USHORTDisIORDY:

//1=¿

IORDY

USHORTIORDY:

USHORTSoftReset:

//1=Ð

ATAÈ

USHORTOverlap:

USHORTQueue:

USHORTInlDMA:

}wCapabilities;

//WORD49:

Ò

USHORTwReserved1;

//WORD50:

USHORTwPIOTiming;

//WORD51:

PIOÊ

USHORTwDMATiming;

//WORD52:

DMAÊ

USHORTCHSNumber:

//1=WORD54-58Ó

USHORTCycleNumber:

//1=WORD64-70Ó

USHORTUnltraDMA:

//1=WORD88Ó

USHORTreserved:

13;

}wFieldValidity;

//WORD53:

º

USHORTwNumCurCyls;

//WORD54:

CHS¿

USHORTwNumCurHeads;

//WORD55:

USHORTwNumCurSectorsPerTrack;

//WORD56:

USHORTwCurSectorsLow;

//WORD57:

USHORTwCurSectorsHigh;

//WORD58:

USHORTCurNumber:

//µ

USHORTMulti:

//1=Ò

7;

}wMultSectorStuff;

//WORD59:

ULONGdwTotalSectors;

//WORD60-61:

LBA¿

USHORTwSingleWordDMA;

//WORD62:

µ

¥

DMAÖ

USHORTMode0:

0(4.17Mb/s)

USHORTMode1:

1(13.3Mb/s)

USHORTMode2:

2(16.7Mb/s)

USHORTReserved1:

5;

USHORTMode0Sel:

USHORTMode1Sel:

1

USHORTMode2Sel:

2

USHORTReserved2:

}wMultiWordDMA;

//WORD63:

USHORTAdvPOIModes:

POIÄ

}wPIOCapacity;

//WORD64:

¸

PIOÖ

USHORTwMinMultiWordDMACycle;

//WORD65:

DMA´

«

USHORTwRecMultiWordDMACycle;

//WORD66:

USHORTwMinPIONoFlowCycle;

//WORD67:

Î

Þ

PIO´

USHORTwMinPOIFlowCycle;

//WORD68:

Ó

USHORTwReserved69[11];

//WORD69-79:

USHORTATA1:

ATA-1

USHORTATA2:

ATA-2

USHORTATA3:

ATA-3

USHORTATA4:

ATA/ATAPI-4

USHORTATA5:

ATA/ATAPI-5

USHORTATA6:

ATA/ATAPI-6

USHORTATA7:

ATA/ATAPI-7

USHORTATA8:

ATA/ATAPI-8

USHORTATA9:

ATA/ATAPI-9

USHORTATA10:

ATA/ATAPI-10

USHORTATA11:

ATA/ATAPI-11

USHORTATA12:

ATA/ATAPI-12

USHORTATA13:

ATA/ATAPI-13

USHORTATA14:

ATA/ATAPI-14

}wMajorVersion;

//WORD80:

USHORTwMinorVersion;

//WORD81:

USHORTwReserved82[6];

//WORD82-87:

0(16.7Mb/s)

1(25Mb/s)

2(33Mb/s)

USHORTMode3:

3(44Mb/s)

USHORTMode4:

4(66Mb/s)

USHORTMode5:

5(100Mb/s)

USHORTMode6:

6(133Mb/s)

USHORTMode7:

7(166Mb/s)?

?

USHORTMode3Sel:

3

USHORTMode4Sel:

4

USHORTMode5Sel:

5

USHORTMode6Sel:

6

USHORTMode7Sel:

7

}wUltraDMA;

//WORD88:

UltraDMAÖ

USHORTwReserved89[167];

//WORD89-255

}IDINFO,*PIDINFO;

//SCSIÇ

typedefstruct_SRB_IO_CONTROL

ULONGHeaderLength;

//Í

UCHARSignature[8];

ULONGTimeout;

//³

ULONGControlCode;

ULONGReturnCode;

//·

ULONGLength;

}SRB_IO_CONTROL,*PSRB_IO_CONTROL;

IDINFOµ

57-58WORD(CHS¿

)£

32Î

ULONG×

LynnMcGuireµ

//filename:

É

HANDLEOpenDevice(LPCTSTRfilename)

HANDLEhDevice;

hDevice=:

:

CreateFile(filename,//Î

GENERIC_READ|GENERIC_WRITE,//¶

FILE_SHARE_READ|FILE_SHARE_WRITE,//¹

NULL,//Ä

OPEN_EXISTING,//´

0,//²

NULL);

//²

returnhDevice;

}

//Ï

IDENTIFYDEVICE¡

//hDevice:

//pIdInfo:

BOOLIdentifyDevice(HANDLEhDevice,PIDINFOpIdInfo)

PSENDCMDINPARAMSpSCIP;

PSENDCMDOUTPARAMSpSCOP;

DWORDdwOutBytes;

//IOCTLÊ

BOOLbResult;

//IOCTL·

pSCIP=(PSENDCMDINPARAMS):

GlobalAlloc(LMEM_ZEROINIT,sizeof(SENDCMDINPARAMS)-1);

pSCOP=(PSENDCMDOUTPARAMS):

GlobalAlloc(LMEM_ZEROINIT,sizeof(SENDCMDOUTPARAMS)+sizeof(IDINFO)-1);

ATA/ATAPIÃ

//pSCIP->

irDriveRegs.bFeaturesReg=0;

irDriveRegs.bSectorCountReg=0;

irDriveRegs.bSectorNumberReg=0;

irDriveRegs.bCylLowReg=0;

irDriveRegs.bCylHighReg=0;

irDriveRegs.bDriveHeadReg=0;

pSCIP->

irDriveRegs.bCommandReg=IDE_ATA_IDENTIFY;

cBufferSize=0;

pSCOP->

cBufferSize=sizeof(IDINFO);

//IDENTIFYDEVICE

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->

bBuffer,sizeof(IDINFO));

GlobalFree(pSCOP);

GlobalFree(pSCIP);

returnbResult;

SCSIMINI-PORTÇ

BOOLIdentifyDeviceAsScsi(HANDLEhDevice,intnDrive,PIDINFOpIdInfo)

PSRB_IO_CONTROLpSRBIO;

//SCSIÊ

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1