65,211
社区成员
发帖
与我相关
我的任务
分享
DWORD dwDrive;
INT nDrive;
dwDrive = GetLogicalDrives();
char dName[4];
CString d;
/*取得硬盘空间*/
PULARGE_INTEGER _lpFreeBytesAvailable = 0, _lpTotalNumberOfBytes = 0, _lpTotalNumberOfFreeBytes = 0;
for ( nDrive = 0 ; nDrive < 26 ; nDrive++ ){
if ( dwDrive & (1 < < nDrive) ){
sprintf(dName, "%c: ",(nDrive + 'A '));
d = CString(dName);
if(GetDiskFreeSpaceEx(d,(PULARGE_INTEGER)&_lpFreeBytesAvailable,(PULARGE_INTEGER)&_lpTotalNumberOfBytes,
(PULARGE_INTEGER)&_lpTotalNumberOfFreeBytes))
{
printf( "%2s %I64i %I64d %I64d\n ",d, lpFreeBytesAvailable,_lpTotalNumberOfBytes ,_lpTotalNumberOfFreeBytes);
}
}
}
}
/*取得IDE/EIDE接口硬盘的参数信息*/
void ide_para(unsigned char *buff)
{
unsigned char *p;
int i;
unsigned int flag2;
unsigned char flag;
p=buff;
outportb(0x1f6,0xa0);
outportb(0x1f7,0xec);
while(flag!=0x58)
flag=inportb(0x1f7);
for(i=0;i<256;i++) /*读出256字节的信息*/
{
flag2=inport(0x1f0);
*p++=(flag2<<8)>>8; /*把且出的字分割成两个字节*/
*p++=(flag2>>8);
}
printf("\n\r柱面数=%d",(int)(buff[3]*256+buff[2]));
printf("\n\r磁头数=%d",(int)(buff[7]*256+buff[6]));
printf("\n\r扇区数=%d",(int)(buff[0x0d]*256+buff[0x0c]));
printf("\n\r硬盘出厂编号=");
/*读出的信息中的两个字节位置颠倒,显示时反转*/
for(i=20;i<40;i++)
if(i%2==0)
printf("%c",buff[i+1]);
else
printf("%c",buff[i-1]);
printf("\n\r硬盘类型=");
for(i=54;i<94;i++)
if(i%2==0)
printf("%c",buff[i+1]);
else
printf("%c",buff[i-1]);
return;
}