Jsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/wmi/acpi-interfacemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/wmi/acpi-interfacemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/wmi/acpi-interfacemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/wmi/acpi-interfacemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/wmi/acpi-interfacemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/wmi/acpi-interfacemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/wmi/acpi-interface.rsthKubhsection)}(hhh](htitle)}(hACPI WMI interfaceh]hACPI WMI interface}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXBThe ACPI WMI interface is a proprietary extension of the ACPI specification made by Microsoft to allow hardware vendors to embed WMI (Windows Management Instrumentation) objects inside their ACPI firmware. Typical functions implemented over ACPI WMI are hotkey events on modern notebooks and configuration of BIOS options.h]hXBThe ACPI WMI interface is a proprietary extension of the ACPI specification made by Microsoft to allow hardware vendors to embed WMI (Windows Management Instrumentation) objects inside their ACPI firmware. Typical functions implemented over ACPI WMI are hotkey events on modern notebooks and configuration of BIOS options.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hPNP0C14 ACPI deviceh]hPNP0C14 ACPI device}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hX6Discovery of WMI objects is handled by defining ACPI devices with a PNP ID of ``PNP0C14``. These devices will contain a set of ACPI buffers and methods used for mapping and execution of WMI methods and/or queries. If there exist multiple of such devices, then each device is required to have a unique ACPI UID.h](hNDiscovery of WMI objects is handled by defining ACPI devices with a PNP ID of }(hhhhhNhNubhliteral)}(h ``PNP0C14``h]hPNP0C14}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh. These devices will contain a set of ACPI buffers and methods used for mapping and execution of WMI methods and/or queries. If there exist multiple of such devices, then each device is required to have a unique ACPI UID.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]pnp0c14-acpi-deviceah ]h"]pnp0c14 acpi deviceah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h _WDG bufferh]h _WDG buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThe ``_WDG`` buffer is used to discover WMI objects and is required to be static. Its internal structure consists of data blocks with a size of 20 bytes, containing the following data:h](hThe }(hj%hhhNhNubh)}(h``_WDG``h]h_WDG}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%ubh buffer is used to discover WMI objects and is required to be static. Its internal structure consists of data blocks with a size of 20 bytes, containing the following data:}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jOhjLubjP)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jOhjLubjP)}(hhh]h}(h]h ]h"]h$]h&]colwidthK5uh1jOhjLubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hOffseth]hOffset}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1jyhjvubjz)}(hhh]h)}(hSize (in bytes)h]hSize (in bytes)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjvubjz)}(hhh]h)}(hContenth]hContent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjvubeh}(h]h ]h"]h$]h&]uh1jthjqubah}(h]h ]h"]h$]h&]uh1johjLubhtbody)}(hhh](ju)}(hhh](jz)}(hhh]h)}(h0x00h]h0x00}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h16h]h16}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h128 bit Variant 2 object GUID.h]h128 bit Variant 2 object GUID.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h0x10h]h0x10}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj"ubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h2h]h2}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj9ubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h52 character method ID or single byte notification ID.h]h52 character method ID or single byte notification ID.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjPubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h0x12h]h0x12}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjpubah}(h]h ]h"]h$]h&]uh1jyhjmubjz)}(hhh]h)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jyhjmubjz)}(hhh]h)}(hObject instance count.h]hObject instance count.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jyhjmubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h0x13h]h0x13}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h Object flags.h]h Object flags.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]colsKuh1jJhjGubah}(h]h ]h"]h$]h&]uh1jEhjhhhhhNubh)}(hKThe WMI object flags control whether the method or notification ID is used:h]hKThe WMI object flags control whether the method or notification ID is used:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjhhubh bullet_list)}(hhh](h list_item)}(hK0x1: Data block usage is expensive and must be explicitly enabled/disabled.h]h)}(hj2h]hK0x1: Data block usage is expensive and must be explicitly enabled/disabled.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hj0ubah}(h]h ]h"]h$]h&]uh1j.hj+hhhhhNubj/)}(h%0x2: Data block contains WMI methods.h]h)}(hjIh]h%0x2: Data block contains WMI methods.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjGubah}(h]h ]h"]h$]h&]uh1j.hj+hhhhhNubj/)}(h&0x4: Data block contains ASCIZ string.h]h)}(hj`h]h&0x4: Data block contains ASCIZ string.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hj^ubah}(h]h ]h"]h$]h&]uh1j.hj+hhhhhNubj/)}(hQ0x8: Data block describes a WMI event, use notification ID instead of method ID. h]h)}(hP0x8: Data block describes a WMI event, use notification ID instead of method ID.h]hP0x8: Data block describes a WMI event, use notification ID instead of method ID.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjuubah}(h]h ]h"]h$]h&]uh1j.hj+hhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1j)hhhK'hjhhubh)}(hEach WMI object GUID can appear multiple times inside a system. The method/notification ID is used to construct the ACPI method names used for interacting with the WMI object.h]hEach WMI object GUID can appear multiple times inside a system. The method/notification ID is used to construct the ACPI method names used for interacting with the WMI object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjhhubeh}(h] wdg-bufferah ]h"] _wdg bufferah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hWQxx ACPI methodsh]hWQxx ACPI methods}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK2ubh)}(hXrIf a data block does not contain WMI methods, then its content can be retrieved by this required ACPI method. The last two characters of the ACPI method name are the method ID of the data block to query. Their single parameter is an integer describing the instance which should be queried. This parameter can be omitted if the data block contains only a single instance.h]hXrIf a data block does not contain WMI methods, then its content can be retrieved by this required ACPI method. The last two characters of the ACPI method name are the method ID of the data block to query. Their single parameter is an integer describing the instance which should be queried. This parameter can be omitted if the data block contains only a single instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubeh}(h]wqxx-acpi-methodsah ]h"]wqxx acpi methodsah$]h&]uh1hhhhhhhhK2ubh)}(hhh](h)}(hWSxx ACPI methodsh]hWSxx ACPI methods}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK;ubh)}(hSimilar to the ``WQxx`` ACPI methods, except that it is optional and takes an additional buffer as its second argument. The instance argument also cannot be omitted.h](hSimilar to the }(hjhhhNhNubh)}(h``WQxx``h]hWQxx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh ACPI methods, except that it is optional and takes an additional buffer as its second argument. The instance argument also cannot be omitted.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK=hjhhubeh}(h]wsxx-acpi-methodsah ]h"]wsxx acpi methodsah$]h&]uh1hhhhhhhhK;ubh)}(hhh](h)}(hWMxx ACPI methodsh]hWMxx ACPI methods}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKBubh)}(hXNUsed for executing WMI methods associated with a data block. The last two characters of the ACPI method name are the method ID of the data block containing the WMI methods. Their first parameter is a integer describing the instance which methods should be executed. The second parameter is an integer describing the WMI method ID to execute, and the third parameter is a buffer containing the WMI method parameters. If the data block is marked as containing an ASCIZ string, then this buffer should contain an ASCIZ string. The ACPI method will return the result of the executed WMI method.h]hXNUsed for executing WMI methods associated with a data block. The last two characters of the ACPI method name are the method ID of the data block containing the WMI methods. Their first parameter is a integer describing the instance which methods should be executed. The second parameter is an integer describing the WMI method ID to execute, and the third parameter is a buffer containing the WMI method parameters. If the data block is marked as containing an ASCIZ string, then this buffer should contain an ASCIZ string. The ACPI method will return the result of the executed WMI method.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhj hhubeh}(h]wmxx-acpi-methodsah ]h"]wmxx acpi methodsah$]h&]uh1hhhhhhhhKBubh)}(hhh](h)}(hWExx ACPI methodsh]hWExx ACPI methods}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhKNubh)}(hX9Used for optionally enabling/disabling WMI events, the last two characters of the ACPI method are the notification ID of the data block describing the WMI event as hexadecimal value. Their first parameter is an integer with a value of 0 if the WMI event should be disabled, other values will enable the WMI event.h]hX9Used for optionally enabling/disabling WMI events, the last two characters of the ACPI method are the notification ID of the data block describing the WMI event as hexadecimal value. Their first parameter is an integer with a value of 0 if the WMI event should be disabled, other values will enable the WMI event.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhj2hhubeh}(h]wexx-acpi-methodsah ]h"]wexx acpi methodsah$]h&]uh1hhhhhhhhKNubh)}(hhh](h)}(hWCxx ACPI methodsh]hWCxx ACPI methods}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhhhhhKWubh)}(hSimilar to the ``WExx`` ACPI methods, except that it controls data collection instead of events and thus the last two characters of the ACPI method name are the method ID of the data block to enable/disable.h](hSimilar to the }(hjjhhhNhNubh)}(h``WExx``h]hWExx}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjubh ACPI methods, except that it controls data collection instead of events and thus the last two characters of the ACPI method name are the method ID of the data block to enable/disable.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKXhjYhhubh)}(hkThose ACPI methods are also called before setting data blocks to match the behaviour of the Windows driver.h]hkThose ACPI methods are also called before setting data blocks to match the behaviour of the Windows driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjYhhubeh}(h]wcxx-acpi-methodsah ]h"]wcxx acpi methodsah$]h&]uh1hhhhhhhhKWubh)}(hhh](h)}(h_WED ACPI methodh]h_WED ACPI method}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK`ubh)}(hXUsed to retrieve additional WMI event data, its single parameter is a integer holding the notification ID of the event. This method should be evaluated every time an ACPI notification is received, since some ACPI implementations use a queue to store WMI event data items. This queue will overflow after a couple of WMI events are received without retrieving the associated WMI event data.h]hXUsed to retrieve additional WMI event data, its single parameter is a integer holding the notification ID of the event. This method should be evaluated every time an ACPI notification is received, since some ACPI implementations use a queue to store WMI event data items. This queue will overflow after a couple of WMI events are received without retrieving the associated WMI event data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubeh}(h]wed-acpi-methodah ]h"]_wed acpi methodah$]h&]uh1hhhhhhhhK`ubeh}(h]acpi-wmi-interfaceah ]h"]acpi wmi interfaceah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjyfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjjjjjjjjj/j,jVjSjjjju nametypes}(jjjjjj/jVjjuh}(jhjhjjjjjjj,j jSj2jjYjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.