---
name: "kdk_hw_get_powerinfo"
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_hw_get_powerinfo"
---

# kdk\_hw\_get\_powerinfo(3)

获取电源信息

## NAME

kdk\_hw\_get\_powerinfo - 获取电源信息

## SYNOPSIS

```
#include <libkyhw.h>

extern struct Power *kdk_hw_get_powerinfo();

Link with -lkyhwinfo.
```

## Detailed Description

The main function of the interface is to obtain power supply information.

## RETURN VALUE

On success, returns a pointer to a  *Power* structure containing power supply information.

The  *Power* structure is defined in *\<libkyhw.h\>* as follows:

            struct Power\
             {\
                 char daemon\_version\[32\];\
                 bool on\_battery;\
                 bool lid\_is\_closed;\
                 bool lid\_is\_present;\
                 char critical\_action\[32\];\
                 struct power\_device \*devices;\
             };

            struct power\_device\
             {\
                 char name\[256\];\
                 char native\_path\[32\];\
                 bool power\_supply;\
                 char updated\[64\];\
                 bool has\_history;\
                 bool has\_statistics;\
                 bool is\_persent;\
                 bool is\_rechargeable;\
                 char state\[32\];\
                 char warning\_level\[32\];\
                 double energy;\
                 double energy\_empty;\
                 double energy\_full;\
                 double energy\_full\_design;\
                 double energy\_rate;\
                 double voltage;\
                 long time\_to\_empty;\
                 long time\_to\_full;\
                 double percentage;\
                 double temperature;\
                 double capacity;\
                 char technology\[32\];\
                 bool online;\
                 char icon\_name\[64\];\
                 struct power\_device \*next;\
             };

On error, return **NULL.**

## EXAMPLES

```
#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();
}
```

## CONFORMING TO

These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: **kdk\_hw\_free\_hw**(), **kdk\_hw\_get\_hwinfo**() and **kdk\_hw\_free\_power\_info**().

## SEE ALSO

[**kdk\_hw\_free\_hw**(3)](/man/kdk_hw_free_hw/3.md), [**kdk\_hw\_get\_hwinfo**(3)](/man/kdk_hw_get_hwinfo/3.md) and [**kdk\_hw\_free\_power\_info**(3)](/man/kdk_hw_free_power_info/3.md).
