WMI 驱动程序 API¶
WMI 驱动程序核心支持用于与 WMI 设备交互的更现代的基于总线的接口,以及更旧的基于 GUID 的接口。后一种接口被认为是已弃用的,因此新的 WMI 驱动程序通常应避免使用它,因为它在多个 WMI 设备共享同一 GUID 时存在一些问题。现代的基于总线的接口将每个 WMI 设备映射到一个 struct wmi_device
,因此它支持共享同一 GUID 的 WMI 设备。然后,驱动程序可以注册一个 struct wmi_driver
,该驱动程序将由驱动程序核心绑定到兼容的 WMI 设备。
-
struct wmi_device¶
WMI 设备结构
定义:
struct wmi_device {
struct device dev;
bool setable;
const char *driver_override;
};
成员
dev
与此 WMI 设备关联的设备
setable
对于实现“设置控制方法”的设备为 True
driver_override
强制匹配的驱动程序名称;不要直接设置,因为核心会释放它;使用
driver_set_override()
设置或清除它。
描述
这表示由 WMI 驱动程序核心发现的 WMI 设备。
-
to_wmi_device¶
to_wmi_device (device)
将设备强制转换为 wmi_device 的辅助宏
-
struct wmi_driver¶
WMI 驱动程序结构
定义:
struct wmi_driver {
struct device_driver driver;
const struct wmi_device_id *id_table;
bool no_notify_data;
bool no_singleton;
int (*probe)(struct wmi_device *wdev, const void *context);
void (*remove)(struct wmi_device *wdev);
void (*shutdown)(struct wmi_device *wdev);
void (*notify)(struct wmi_device *device, union acpi_object *data);
};
成员
driver
驱动程序模型结构
id_table
此驱动程序支持的 WMI GUID 列表
no_notify_data
驱动程序支持不提供事件数据的 WMI 事件
no_singleton
驱动程序可以多次实例化
probe
用于设备绑定的回调
remove
用于设备取消绑定的回调
shutdown
用于设备关机的回调
notify
用于接收 WMI 事件的回调
描述
这表示处理 WMI 设备的 WMI 驱动程序。
-
to_wmi_driver¶
to_wmi_driver (drv)
将驱动程序强制转换为 wmi_driver 的辅助宏
-
wmi_driver_register¶
wmi_driver_register (driver)
注册 WMI 驱动程序的辅助宏
参数
driver
wmi_driver 结构
描述
用于注册 WMI 驱动程序的辅助宏。它会自动将 THIS_MODULE 传递给底层函数。
-
module_wmi_driver¶
module_wmi_driver (__wmi_driver)
用于注册/取消注册 WMI 驱动程序的辅助宏
参数
__wmi_driver
wmi_driver 结构
描述
适用于在模块 init/exit 中不做任何特殊处理的 WMI 驱动程序的辅助宏。这消除了大量样板代码。每个模块只能使用此宏一次,调用它会替换 module_init()
和 module_exit()
。
-
int wmi_instance_count(const char *guid_string)¶
获取 WMI 对象实例数
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
描述
获取 WMI 对象实例数。
返回
WMI 对象实例数或负错误代码。
-
u8 wmidev_instance_count(struct wmi_device *wdev)¶
获取 WMI 对象实例数
参数
struct wmi_device *wdev
来自驱动程序的 WMI 总线设备
描述
获取 WMI 对象实例数。
返回
WMI 对象实例数。
-
acpi_status wmi_evaluate_method(const char *guid_string, u8 instance, u32 method_id, const struct acpi_buffer *in, struct acpi_buffer *out)¶
评估 WMI 方法(已弃用)
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
u8 instance
实例索引
u32 method_id
要调用的方法 ID
const struct acpi_buffer *in
包含方法调用输入的必要缓冲区
struct acpi_buffer *out
用于返回方法结果的空缓冲区
描述
调用 ACPI-WMI 方法,调用者必须释放 out。
返回
表示成功或错误的 acpi_status。
-
acpi_status wmidev_evaluate_method(struct wmi_device *wdev, u8 instance, u32 method_id, const struct acpi_buffer *in, struct acpi_buffer *out)¶
评估 WMI 方法
参数
struct wmi_device *wdev
来自驱动程序的 WMI 总线设备
u8 instance
实例索引
u32 method_id
要调用的方法 ID
const struct acpi_buffer *in
包含方法调用输入的必要缓冲区
struct acpi_buffer *out
用于返回方法结果的空缓冲区
描述
调用 ACPI-WMI 方法,调用者必须释放 out。
返回
表示成功或错误的 acpi_status。
-
acpi_status wmi_query_block(const char *guid_string, u8 instance, struct acpi_buffer *out)¶
返回 WMI 块的内容(已弃用)
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
u8 instance
实例索引
struct acpi_buffer *out
用于返回数据块内容的空缓冲区
描述
查询 ACPI-WMI 块,调用者必须释放 out。
返回
包含 WMI 块内容的 ACPI 对象。
-
union acpi_object *wmidev_block_query(struct wmi_device *wdev, u8 instance)¶
返回 WMI 块的内容
参数
struct wmi_device *wdev
来自驱动程序的 WMI 总线设备
u8 instance
实例索引
描述
查询 ACPI-WMI 块,调用者必须释放结果。
返回
包含 WMI 块内容的 ACPI 对象。
-
acpi_status wmi_set_block(const char *guid_string, u8 instance, const struct acpi_buffer *in)¶
写入 WMI 块(已弃用)
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
u8 instance
实例索引
const struct acpi_buffer *in
包含数据块新值的缓冲区
描述
将输入缓冲区的内容写入 ACPI-WMI 数据块。
返回
表示成功或错误的 acpi_status。
-
acpi_status wmidev_block_set(struct wmi_device *wdev, u8 instance, const struct acpi_buffer *in)¶
写入 WMI 块
参数
struct wmi_device *wdev
来自驱动程序的 WMI 总线设备
u8 instance
实例索引
const struct acpi_buffer *in
包含数据块新值的缓冲区
描述
将输入缓冲区的内容写入 ACPI-WMI 数据块。
返回
表示成功或错误的 acpi_status。
-
acpi_status wmi_install_notify_handler(const char *guid, wmi_notify_handler handler, void *data)¶
注册 WMI 事件的处理程序(已弃用)
参数
const char *guid
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
wmi_notify_handler handler
用于处理通知的函数
void *data
事件触发时返回给处理程序的数据
描述
为发送到 ACPI-WMI 映射器设备的事件注册处理程序。
返回
表示成功或错误的 acpi_status。
-
acpi_status wmi_remove_notify_handler(const char *guid)¶
取消注册 WMI 事件的处理程序(已弃用)
参数
const char *guid
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
描述
取消注册发送到 ACPI-WMI 映射器设备的事件的处理程序。
返回
表示成功或错误的 acpi_status。
-
bool wmi_has_guid(const char *guid_string)¶
检查 GUID 是否可用
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
描述
检查给定的 GUID 是否由 _WDG 定义。
返回
如果 GUID 可用,则为 True,否则为 False。
-
char *wmi_get_acpi_device_uid(const char *guid_string)¶
获取定义 GUID 的 ACPI 设备的 _UID 名称(已弃用)
参数
const char *guid_string
36 个字符的字符串,格式为 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
描述
查找与此 WMI GUID 关联的 ACPI 设备的 _UID。
返回
ACPI _UID 字段值;如果未找到 WMI GUID,则为 NULL。
-
void wmi_driver_unregister(struct wmi_driver *driver)¶
取消注册 WMI 驱动程序
参数
struct wmi_driver *driver
要取消注册的 WMI 驱动程序
描述
从 WMI 总线取消注册 WMI 驱动程序。