WMI 驅動程式 API¶
WMI 驅動程式核心支援一個更現代的、基於匯流排的介面,用於與 WMI 裝置互動,以及一個較舊的、基於 GUID 的介面。 後者介面被認為是已棄用的,因此新的 WMI 驅動程式通常應避免使用它,因為它存在多個 WMI 裝置共享同一 GUID 的問題。 現代的基於匯流排的介面將每個 WMI 裝置對映到一個 struct wmi_device,因此它支援 WMI 裝置共享同一個 GUID。 然後,驅動程式可以註冊一個 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 驅動程式的幫助宏
引數
driverwmi_driver 結構
描述
用於註冊 WMI 驅動程式的幫助宏。 它自動將 THIS_MODULE 傳遞給底層函式。
-
module_wmi_driver¶
module_wmi_driver (__wmi_driver)
註冊/登出 WMI 驅動程式的幫助宏
引數
__wmi_driverwmi_driver 結構
描述
對於在模組初始化/退出中不做任何特殊處理的 WMI 驅動程式的幫助宏。 這消除了很多樣板程式碼。 每個模組只能使用此宏一次,呼叫它會替換 module_init() 和 module_exit()。
-
int wmi_instance_count(const char *guid_string)¶
獲取 WMI 物件例項的數量
引數
const char *guid_string36 個字元的字串,格式為 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_string36 個字元的字串,格式為 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_string36 個字元的字串,格式為 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_string36 個字元的字串,格式為 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 *guid36 個字元的字串,格式為 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 *guid36 個字元的字串,格式為 fa50ff2b-f2e8-45de-83fa-65417f2f49ba
描述
取消註冊傳送到 ACPI-WMI 對映器裝置的事件的處理程式。
返回
acpi_status,指示成功或錯誤。
-
bool wmi_has_guid(const char *guid_string)¶
檢查 GUID 是否可用
引數
const char *guid_string36 個字元的字串,格式為 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_string36 個字元的字串,格式為 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 驅動程式。