日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

获取硬盘总容量,柱面数,磁道数,扇区数

發(fā)布時(shí)間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取硬盘总容量,柱面数,磁道数,扇区数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?下面的代碼來(lái)自MSDN

#include <stdio.h> #include <windows.h> #include <winioctl.h>BOOL GetDriveGeometry(DISK_GEOMETRY *pdg) {HANDLE hDevice; // handle to the drive to be examined BOOL bResult; // results flagDWORD junk; // discard resultshDevice = CreateFile("\\\\.\\PhysicalDrive0", // drive to open0, // don't need any access to the driveFILE_SHARE_READ | FILE_SHARE_WRITE, // share modeNULL, // default security attributesOPEN_EXISTING, // disposition0, // file attributesNULL); // don't copy any file's attributesif (hDevice == INVALID_HANDLE_VALUE) // we can't open the drive{return (FALSE);}bResult = DeviceIoControl(hDevice, // device we are queryingIOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to performNULL, 0, // no input buffer, so pass zeropdg, sizeof(*pdg), // output buffer&junk, // discard count of bytes returned(LPOVERLAPPED) NULL); // synchronous I/OCloseHandle(hDevice); // we're done with the handlereturn (bResult); }int main(int argc, char *argv[]) {DISK_GEOMETRY pdg; // disk drive geometry structureBOOL bResult; // generic results flagULONGLONG DiskSize; // size of the drive, in bytesbResult = GetDriveGeometry (&pdg);if (bResult) {printf("Cylinders = %I64d\n", pdg.Cylinders); // 柱面printf("Tracks per cylinder = %ld\n", (ULONG) pdg.TracksPerCylinder); // 磁道/柱面printf("Sectors per track = %ld\n", (ULONG) pdg.SectorsPerTrack); // 扇區(qū)/磁道printf("Bytes per sector = %ld\n", (ULONG) pdg.BytesPerSector); // Bytes/扇區(qū)DiskSize = pdg.Cylinders.QuadPart * (ULONG)pdg.TracksPerCylinder * (ULONG)pdg.SectorsPerTrack * (ULONG)pdg.BytesPerSector;printf("Disk size = %I64d (Bytes) = %I64d (MB)\n", DiskSize, DiskSize / (1024 * 1024));}else {printf ("Attempt to get drive geometry failed. Error %ld.\n", GetLastError ());}return ((int)bResult); }


運(yùn)行結(jié)果:

Cylinders = 60801 Tracks per cylinder = 255 Sectors per track = 63 Bytes per sector = 512 Disk size = 500105249280 (Bytes) = 476937 (MB) Press any key to continue

總結(jié)

以上是生活随笔為你收集整理的获取硬盘总容量,柱面数,磁道数,扇区数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。