1/* 2 * Copyright 2020, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _WMI_H_ 6#define _WMI_H_ 7 8 9#include <ACPI.h> 10#include <device_manager.h> 11#include <KernelExport.h> 12 13 14 15// Device node 16 17// guid (string) 18#define WMI_GUID_STRING_ITEM "wmi/guid_string" 19 20// node type 21#define WMI_DEVICE_TYPE_NAME "wmi/device/v1" 22 23// device cookie, issued by wmi bus manager 24typedef void* wmi_device; 25 26 27// bus manager device interface for peripheral driver 28typedef struct { 29 driver_module_info info; 30 31 status_t (*evaluate_method)(wmi_device device, uint8 instance, 32 uint32 methodId, const acpi_data* in, acpi_data* out); 33 status_t (*install_event_handler)(wmi_device device, 34 const char* guidString, acpi_notify_handler handler, void* context); 35 status_t (*remove_event_handler)(wmi_device device, 36 const char* guidString); 37 status_t (*get_event_data)(wmi_device device, uint32 notify, 38 acpi_data* out); 39 const char* (*get_uid)(wmi_device device); 40} wmi_device_interface; 41 42 43#endif /* _WMI_H_ */ 44