KDK_GET_DISKINFO(3) Library Functions Manual KDK_GET_DISKINFO(3) NAME kdk_get_diskinfo - SYNOPSIS #include 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 #include 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), kdk_free_disklist(3), kdk_free_diskinfo(3) Linux Programmer's Manual Thu Aug 10 2023 KDK_GET_DISKINFO(3)