如何取得硬盘的分区信息

原创 2004年07月29日 16:56:00


下面的代码在Win2k SP4上测试通过,注意 nBufferSize 后面那个数字,我用的是11,因为我的硬盘分了三个区,这个数字一般需要设为: (硬盘的分区数 * 4 - 1)
我的系统上返回的 lpPartsInfo->PartitionCount 是 12,大一点没什么关系.




#include <windows.h>
#include <winioctl.h>

int main(int argc, char* argv[])
{
    HANDLE hDevice = NULL;
    DWORD nBytesRead = 0;
    DWORD nBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) + sizeof(PARTITION_INFORMATION) * 11;
    PDRIVE_LAYOUT_INFORMATION lpPartsInfo = (PDRIVE_LAYOUT_INFORMATION)malloc(nBufferSize);
    if (lpPartsInfo == NULL)
    {
        return 0;
    }
    memset(lpPartsInfo, 0, nBufferSize);
    //
    // Getting a handle to 1st Hard Disk via CreateFile() function.
    // Open the 1st HD using "////.//PhysicalDrive0"
    // Open drive C: using "////.//C:"
    //
    hDevice = CreateFile(
        "////.//PhysicalDrive0",
        GENERIC_READ,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        0,
        NULL
        );
    if(hDevice == NULL)
    {
        return 0;
    }
    DeviceIoControl(
        hDevice,
        IOCTL_DISK_GET_DRIVE_LAYOUT,
        NULL,
        0,
        lpPartsInfo,
        nBufferSize,
        &nBytesRead,
        NULL
        );
    CloseHandle(hDevice);
    free(lpPartsInfo);
    return 0;
}

Linux下获取硬盘相关信息

熟悉Linux的都知道,Linux下硬盘的命名规则是had、hdb…sda、sdb之类的。但是,如何才能知道机器上到底有多少块硬盘呢?     刚开始,我以为/dev目录下会有所体现结果我发现设备文件...
  • yuesichiu
  • yuesichiu
  • 2014年03月12日 10:12
  • 4307

C/C++ Windows API——获取磁盘信息

// LogicalDrive.cpp : Defines the entry point for the console application. //#include "stdafx.h" #in...
  • chy555chy
  • chy555chy
  • 2016年10月15日 00:07
  • 2218

Linux技巧-如何查看系统信息-硬盘、分区信息以及磁盘用量

使用 hdparm 获得硬盘的生产厂家,类型等基本信息,这里我们之提供简单的使用,以后 hdparm -i /dev/sda 通过 smartctl命令来获取硬盘的详细信息: smartct...
  • hs794502825
  • hs794502825
  • 2013年06月05日 11:30
  • 41938

VC 获取硬盘分区信息

  • 2010年08月08日 14:13
  • 31KB
  • 下载

精彩编程与编程技巧-VB6编程中如何获取硬盘分区信息...

  • 2009年10月10日 17:27
  • 3KB
  • 下载

VB 提取硬盘分区信息

  • 2009年09月29日 21:59
  • 2KB
  • 下载

获取硬盘大小分区大小和MBR GPT信息

#include "stdafx.h" #define MAX_IDE_DRIVES 16 //最大磁盘数目 int main (void) { ULONGL...
  • qq125096885
  • qq125096885
  • 2017年12月27日 15:15
  • 27

VB6编程中如何获取硬盘分区信息

  • 2011年03月31日 16:21
  • 3KB
  • 下载

精彩编程与编程技巧-VB6编程中如何获取硬盘分区信息...

  • 2009年10月08日 19:36
  • 3KB
  • 下载

编程方式读取硬盘信息 - MBR以及各个分区信息

MBR结构,在数据库恢复中,若要手工填写分区表的话,只注意四个重要的地方,其它的可随便填。 MBR结构,在数据库恢复中,若要手工填写分区表的话,只注意四个重要的地方,其它的可随便填。...
  • weinierbian
  • weinierbian
  • 2014年05月08日 22:35
  • 1169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何取得硬盘的分区信息
举报原因:
原因补充:

(最多只允许输入30个字)