KDK_GET_HARD_TYPE(3)
💖 KDK_GET_HARD_TYPE 💖
okay bestie, welcome to the KDK_GET_HARD_TYPE(3) page — it lives in the Library Functions Manual section and it's literally just here to tell you what kind of disk you're looking at. no cap. 🦋
✨ NAME ✨
kdk_get_hard_type — 获取硬盘类型 👑
🌸 SYNOPSIS 🌸
#include <libkydiskinfo.h>
extern char* kdk_get_hard_type(const char *diskname);
Link with -lkydiskinfo. that's it, that's the whole ritual 💅
🎀 Detailed Description 🎀
so here's the tea, bestie: you hand it a disk name — diskname — and it goes and finds out what kind of hard drive that is. 🍓
the name can be an absolute path, like /dev/sda, OR it can be one of the elements that the kdk_get_hard_disk() function hands you back. either way it pulls the hard disk type info out for you. slay. ✨
⭐ RETURN VALUE ⭐
- on success — it returns the type of hard drive, like
机械or固态. 🫶 - on error — it returns
NULL. 😭
heads up bestie, the returned string is yours to release — you gotta free it yourself. no one else is gonna clean that up for you. 💀
🌈 EXAMPLES 🌈
here's the full main-character demo, copied exactly so you can just paste it and vibe:
#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;
}
see that kdk_get_hard_type(di[num]) in there? that's our girl. and yes, she gets free(res)'d right after, because we respect the rules. 👑
🧚 CONFORMING TO 🧚
these functions are as per the withdrawn POSIX.1e draft specification. (withdrawn, bestie — not our fault, we just live here.)
the following functions are Linux extensions:
kdk_get_hard_disk()kdk_free_disklist()kdk_get_hard_disk_size()kdk_get_hard_fwrev()kdk_get_hard_model()kdk_get_hard_serial()kdk_get_hard_vendor()
💜 SEE ALSO 💜
the whole friend group, go say hi:
kdk_free_disklist(3)kdk_get_hard_disk_size(3)kdk_get_hard_fwrev(3)kdk_get_hard_model(3)kdk_get_hard_serial(3)kdk_get_hard_vendor(3)kdk_get_hard_disk(3)
and that's the whole page, bestie!! Linux Programmer's Manual, dated Thu Aug 10 2023 — mwah, go free your strings, ily 🫶💖✨
📦 where this page comes from
- arch rolling: libkysdk-system 3.0.1.4-1 · LGPL-3.0-or-later AND LGPL-2.1-only OR LGPL-3.0-only AND LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR LGPL-3.0-only WITH Qt-LGPL-exception-1.1 AND MIT
- ubuntu resolute: libkysdk-system-dev 3.0.1.2-0ubuntu1 · LGPL-3.0-only
- ubuntu stonking: libkysdk-system-dev 3.0.1.3-0ubuntu1 · LGPL-3.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms