KDK_HW_GET_HWINFO(3)

📦 version 3.0.1.4, in arch rolling, ubuntu resolute, ubuntu stonking

✨ KDK_HW_GET_HWINFO 💖

okay bestie, pull up a chair 🫶 you're reading a page from the Library Functions Manual, and the star of the show is kdk_hw_get_hwinfo(3). yes she's a 3, she's a library function, and she's literally about to tell you everything your machine's hardware is hiding. slay.


🌸 NAME 🌸

kdk_hw_get_hwinfo — 获取键盘,鼠标,声卡,光驱,usb硬件信息

(translation for the girlies who don't read Chinese: she gets you keyboard, mouse, sound card, optical drive, and usb hardware info. the whole squad 💅)


🎀 SYNOPSIS 🎀

#include <libkyhw.h>

extern struct HWInfo *kdk_hw_get_hwinfo(int type);

Link with -lkyhwinfo.

not me linking without -lkyhwinfo and being confused why nothing works 😭 do NOT be that girl.

🦋 Detailed Description 🦋

The main function of the interface is to obtain keyboard, mouse, sound card, optical drive, USB hardware information. like, that's her whole job and she EATS every time 👑

The argument type is the hardware type. here's the cheat sheet, memorize it iykyk:

  • 3 stands for keyboard ⌨️
  • 5 stands for mouse 🖱️
  • 15 stands for sound 🔊
  • 23 stands for cdrom 💿
  • 27 stands for usb 🔌

⭐ RETURN VALUE ⭐

On success, returns a pointer to a HWInfo structure containing keyboard, mouse, sound card, optical drive, USB hardware information. main character energy fr fr.

The HWInfo structure is defined in <libkyhw.h> as follows:

struct HWInfo
{
    char model[ATTRSIZE];
    char vendor[ATTRSIZE];
    char device[ATTRSIZE];
    char driver[ATTRSIZE];
    char revision[ATTRSIZE];
    char busid[ATTRSIZE];
    char devicenum[ATTRSIZE];
    char width[8];
    char clock[8];
    struct HWInfo *next;
};

On error, return NULL. and bestie, NULL means CHECK IT. always. 🙈


🌈 EXAMPLES 🌈

here's the full glow-up, copied exactly so you can run it:

#include "libkyhw.h"
#include <stdio.h>
#include <string.h>

static _print_hw(struct HWInfo *hw)
{
    struct HWInfo *tmp = hw;
    while (tmp)
    {
        printf("model : %s0, tmp->model);
        printf("vendor : %s0, tmp->vendor);
        printf("device : %s0, tmp->device);
        printf("driver : %s0, tmp->driver);
        printf("revision : %s0, tmp->revision);
        printf("devicenum : %s0, tmp->devicenum);
        printf("clock : %s0, tmp->clock);
        printf("width : %s0, tmp->width);
        tmp = tmp->next;
    }
}

static void Traverse_hardware()
{
    struct HWInfo *keyboard = kdk_hw_get_hwinfo(3);
    printf("KeyBoard Info:0);
    _print_hw(keyboard);
    kdk_hw_free_hw(keyboard);

    struct HWInfo *mouse = kdk_hw_get_hwinfo(5);
    printf("Mouse Info:0);
    _print_hw(mouse);
    kdk_hw_free_hw(mouse);

    struct HWInfo *bound = kdk_hw_get_hwinfo(15);
    printf("Bound Info:0);
    _print_hw(bound);
    kdk_hw_free_hw(bound);

    struct HWInfo *cdrom = kdk_hw_get_hwinfo(23);
    printf("CDRom Info:0);
    _print_hw(cdrom);
    kdk_hw_free_hw(cdrom);

    struct HWInfo *camera = kdk_hw_get_hwinfo(27);
    printf("Camera Info:0);
    _print_hw(camera);
    kdk_hw_free_hw(camera);
}

static void Traverse_power()
{
    struct Power * power = kdk_hw_get_powerinfo();
    printf("on_battery : %s0, power->on_battery ? "true" : "false");
    printf("lid_is_closed : %s0, power->lid_is_closed ? "true" : "false");
    printf("lid_is_present : %s0, power->lid_is_present ? "true" : "false");
    printf("daemon version : %s0, power->daemon_version);
    printf("critical action : %s0, power->critical_action);

    struct power_device *tmp = power->devices;
    while (tmp)
    {
        printf("name : %s0, tmp->name);
        printf("native path : %s0, tmp->native_path);
        printf("power supply : %s0, tmp->power_supply ? "true" : "false");
        printf("updated : %s0, tmp->updated);
        printf("has history : %s0, tmp->has_history ? "true" : "false");
        printf("has statistics : %s0, tmp->has_statistics ? "true" : "false");
        printf("is persent: %s0, tmp->is_persent ? "true" : "false");
        printf("is rechargeable : %s0, tmp->is_rechargeable ? "true" : "false");
        printf("state : %s0, tmp->state);
        printf("waring level : %s0, tmp->warning_level);
        printf("energy : %0.2f0, tmp->energy);
        printf("energy empty : %0.2f0, tmp->energy_empty);
        printf("energy full: %0.2f0, tmp->energy_full);
        printf("energy full design : %0.2f0, tmp->energy_full_design);
        printf("energy rate : %0.2f0, tmp->energy_rate);
        printf("voltage : %0.2f0, tmp->voltage);
        printf("time to empty : %ld0, tmp->time_to_empty);
        printf("time to full : %ld0, tmp->time_to_full);
        printf("percentage : %0.2f0, tmp->percentage);
        printf("temperature : %0.2f0, tmp->temperature);
        printf("capacity : %0.2f0, tmp->capacity);
        printf("technology : %s0, tmp->technology);
        printf("online : %s0, tmp->online ? "true" : "false");
        printf("icon name : %s0, tmp->icon_name);
        tmp = tmp->next;
    }
    kdk_hw_free_power_info(power);
}

int main(int argc, char *argv[])
{
    if (argc < 2)
    {
        printf("please use like >> kyhwinfo-test --[target]0);
        printf("hardware");
        printf("power");
        printf("0);
        return 0;
    }
    if (0 == strcmp(argv[1], "--hardware"))
        Traverse_hardware();
    if (0 == strcmp(argv[1], "--power"))
        Traverse_power();
}
note how she calls kdk_hw_free_hw() after every single kdk_hw_get_hwinfo() 👀 that's not optional bestie, that's self-care. free your pointers. 💅

🧚 CONFORMING TO 🧚

These functions are as per the withdrawn POSIX.1e draft specification. (withdrawn!! she's vintage, she's archival, she's still iconic 🎀)

The following functions are Linux extensions: kdk_hw_free_hw(), kdk_hw_get_powerinfo() and kdk_hw_free_power_info().


💜 SEE ALSO 💜

kdk_hw_free_hw(3), kdk_hw_get_powerinfo(3) and kdk_hw_free_power_info(3).

go read those too, they're the supporting cast and they understood the assignment 🫶


okay that's the whole page, no cap. this one came from the Linux Programmer's Manual, dated Fri Aug 25 2023, and it's filed under KDK_HW_GET_HWINFO(3). stay hydrated, free your structs, and go get that hardware info bestie 💖✨🌈

📦 where this page comes from