---
name: "kdk_get_diskinfo"
section: "3"
platform: "linux"
package: "libkysdk-system"
version: "3.0.1.4-1"
release: "Arch Linux 2026-11-07"
platforms: ["linux"]
url: "https://carta.tech/man/kdk_get_diskinfo"
---

# kdk\_get\_diskinfo(3)

获取指定磁盘的磁盘信息

## NAME

kdk\_get\_diskinfo - 获取指定磁盘的磁盘信息

## SYNOPSIS

```
#include <libkydiskinfo.h>

extern kdk_diskinfo *kdk_get_diskinfo(const char *diskname);

Link with -lkydiskinfo.
```

## Detailed Description

Based on the specified disk name  *diskname,* such as absolute path such as  */dev/sda,* or  **kdk\_get\_disklist()** function returns an element from a value to obtain disk information.

## RETURN VALUE

kdk\_diskinfo is a structure that stores disk information, as follows:

typedef struct \_kdk\_diskinfo{\
     char \*name;     // 绝对路径\
     char \*vendor;   // 制造商\
     char \*model;    // 型号\
     char \*serial;   // 序列号

    kdk\_disk\_type disk\_type;  // 磁盘类型，固态 or 机械 or 混合\
     kdk\_disk\_interface\_type inter\_type;   // 接口类型\
     unsigned int rpm;  // 转速，注意固态是没有转速概念的

    unsigned long long sectors\_num;   // 扇区数量\
     unsigned int sector\_size;   // 每个扇区的字节数\
     float total\_size\_MiB;  // 磁盘容量，MiB为单位

    unsigned int partition\_nums; // 该磁盘/分区下的子分区数量\
     char \*uuid;     // UUID\
     short mounted;   // 是否已挂载\
     char \*mount\_path;   // 挂载路径\
     kdk\_disk\_format format; // 格式化类型\
     kdk\_disk\_partition\_type part\_type;  // 分区类型\
     char \*fwrev;    //固件版本信息

}kdk\_diskinfo;

## EXAMPLES

```
#include "libkydiskinfo.h"
#include <stdio.h>
#include <stdlib.h>
static void display_disk_info(kdk_diskinfo *di)
{
    printf("---------------%s------------------0, di->name);
    printf("Disk Sectors: %llu0, di->sectors_num);
    printf("Disk Sector Size: %u0, di->sector_size);
    printf("Disk Size: %f MiB0, di->total_size_MiB);
    printf("Disk Model: %s0, di->model ? di->model : "None");
    printf("Disk Serial: %s0, di->serial ? di->serial : "None");
    printf("Disk Partition Number: %u0, di->partition_nums);
    printf("Disk Type: %d0, di->disk_type);
    printf("Disk fwrev: %s0, di->fwrev);
}
static void display_disk_list(char **disklist)
{
    int count = 0;
    while (disklist[count])
    {
        printf("No. %d  %s0, count + 1, disklist[count]);
        count ++;
    }
}
int main()
{
    char **disklist = kdk_get_disklist();
    // display_disk_list(disklist);
    for (int i = 0; disklist[i]; i++)
    {
        kdk_diskinfo *sdainfo = kdk_get_diskinfo(disklist[i]);
        if (!sdainfo)
        {
            printf("[%s]Get disk info error.0, disklist[i]);
            continue;
        }
        display_disk_info(sdainfo);
        kdk_free_diskinfo(sdainfo);
    }
    kdk_free_disklist(disklist);
    char **di = kdk_get_hard_disk();
    size_t num = 0;
    while (di[num])
    {
        printf("No. %ld  %s0, num + 1, di[num]);
        char *res = kdk_get_hard_disk_size(di[num]);
        printf("容量 = %s0, res);
        free(res);
        res = kdk_get_hard_fwrev(di[num]);
        printf("固态版本 = %s0, res);
        free(res);
        res = kdk_get_hard_vendor(di[num]);
        printf("厂商 = %s0, res);
        free(res);
        res = kdk_get_hard_type(di[num]);
        printf("类型 = %s0, res);
        free(res);
        res = kdk_get_hard_model(di[num]);
        printf("型号 = %s0, res);
        free(res);
        res =kdk_get_hard_serial(di[num]);
        printf("序列号 = %s0, res);
        free(res);
        num ++;
    }
    kdk_free_disklist(di);
    return 0;
}
```

## CONFORMING TO

These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: **kdk\_get\_disklist**(), **kdk\_get\_hard\_disk**(), and **kdk\_get\_hard\_disk\_size**().

## SEE ALSO

[**kdk\_get\_disklist**(3)](/man/kdk_get_disklist/3.md), [**kdk\_free\_disklist**(3)](/man/kdk_free_disklist/3.md), **kdk\_free\_diskinfo**(3)
