如何获取硬盘的基本信息?

mickyo 2009-08-05 04:31:41

最好能贴些代码,实在忙啊,都没空找了,先谢谢了.
...全文
168 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wallerobot 2009-08-05
直接粘贴吧

#pragma once

#include "targetver.h"

#include <stdio.h>

#include <tchar.h>

#include <windows.h>

#include <winioctl.h>





BOOL GetDriveGeometry(DISK_GEOMETRY *pdg)

{

HANDLE hDevice; // handle to the drive to be examined

BOOL bResult; // results flag

DWORD junk; // discard results



hDevice = CreateFile(TEXT("\\\\.\\PhysicalDrive0"), // drive

0, // no access to the drive

FILE_SHARE_READ | // share mode

FILE_SHARE_WRITE,

NULL, // default security attributes

OPEN_EXISTING, // disposition

0, // file attributes

NULL); // do not copy file attributes



if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive

{

return (FALSE);

}



bResult = DeviceIoControl(hDevice, // device to be queried

IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform

NULL, 0, // no input buffer

pdg, sizeof(*pdg), // output buffer

&junk, // # bytes returned

(LPOVERLAPPED) NULL); // synchronous I/O



CloseHandle(hDevice);



return (bResult);

}







int _tmain(int argc, _TCHAR* argv[])

{

DISK_GEOMETRY pdg; // disk drive geometry structure

BOOL bResult; // generic results flag

ULONGLONG DiskSize; // size of the drive, in bytes



bResult = GetDriveGeometry (&pdg);



if (bResult)

{

printf("Cylinders = %I64d\n", pdg.Cylinders); //柱面

printf("Tracks/cylinder = %ld\n", (ULONG) pdg.TracksPerCylinder); //族

printf("Sectors/track = %ld\n", (ULONG) pdg.SectorsPerTrack); //扇区

printf("Bytes/sector = %ld\n", (ULONG) pdg.BytesPerSector); //字节



DiskSize = pdg.Cylinders.QuadPart * (ULONG)pdg.TracksPerCylinder *

(ULONG)pdg.SectorsPerTrack * (ULONG)pdg.BytesPerSector;

printf("Disk size = %I64d (Bytes) = %I64d (Gb)\n", DiskSize,

DiskSize / (1024 * 1024 * 1024));

}

else

{

printf ("GetDriveGeometry failed. Error %ld.\n", GetLastError ());

}



return ((int)bResult);

}

这里有各种代码
回复
雪影 2009-08-05
现成的代码,希望对你有帮助
http://d.download.csdn.net/source/260722
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2590

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告