sphinx.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)}(h(0x1: Data block is expensive to collect.h]h)}(hj2h]h(0x1: Data block is expensive to collect.}(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&]uh1hhhhKPhj2hhubh)}(hThose ACPI methods are always called even for WMI events not registered as being expensive to collect to match the behavior of the Windows driver.h]hThose ACPI methods are always called even for WMI events not registered as being expensive to collect to match the behavior of the Windows driver.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhj2hhubeh}(h]wexx-acpi-methodsah ]h"]wexx acpi methodsah$]h&]uh1hhhhhhhhKNubh)}(hhh](h)}(hWCxx ACPI methodsh]hWCxx ACPI methods}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghhhhhKZubh)}(hXSimilar to the ``WExx`` ACPI methods, except that instead of WMI events it controls data collection of data blocks registered as being expensive to collect. 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 }(hjxhhhNhNubh)}(h``WExx``h]hWExx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxubh ACPI methods, except that instead of WMI events it controls data collection of data blocks registered as being expensive to collect. Thus the last two characters of the ACPI method name are the method ID of the data block to enable/disable.}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK[hjghhubh)}(hjThose ACPI methods are also called before setting data blocks to match the behavior of the Windows driver.h]hjThose ACPI methods are also called before setting data blocks to match the behavior of the Windows driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK`hjghhubeh}(h]wcxx-acpi-methodsah ]h"]wcxx acpi methodsah$]h&]uh1hhhhhhhhKZubh)}(hhh](h)}(h_WED ACPI methodh]h_WED ACPI method}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKdubh)}(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&]uh1hhhhKfhjhhubeh}(h]wed-acpi-methodah ]h"]_wed acpi methodah$]h&]uh1hhhhhhhhKdubh)}(hhh](h)}(h$Conversion rules for ACPI data typesh]h$Conversion rules for ACPI data types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKmubh)}(hXConsumers of the ACPI-WMI interface use binary buffers to exchange data with the WMI driver core, with the internal structure of the buffer being only know to the consumers. The WMI driver core is thus responsible for converting the data inside the buffer into an appropriate ACPI data type for consumption by the ACPI firmware. Additionally, any data returned by the various ACPI methods needs to be converted back into a binary buffer.h]hXConsumers of the ACPI-WMI interface use binary buffers to exchange data with the WMI driver core, with the internal structure of the buffer being only know to the consumers. The WMI driver core is thus responsible for converting the data inside the buffer into an appropriate ACPI data type for consumption by the ACPI firmware. Additionally, any data returned by the various ACPI methods needs to be converted back into a binary buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjhhubh)}(hnThe layout of said buffers is defined by the MOF description of the WMI method or data block in question [1]_:h](hiThe layout of said buffers is defined by the MOF description of the WMI method or data block in question }(hjhhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjhhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docnamewmi/acpi-interfaceuh1jhjresolvedKubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKuhjhhubjF)}(hhh]jK)}(hhh](jP)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jOhjubjP)}(hhh]h}(h]h ]h"]h$]h&]colwidthKGuh1jOhjubjP)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jOhjubjp)}(hhh]ju)}(hhh](jz)}(hhh]h)}(h Data Typeh]h Data Type}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjFubah}(h]h ]h"]h$]h&]uh1jyhjCubjz)}(hhh]h)}(hLayouth]hLayout}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj]ubah}(h]h ]h"]h$]h&]uh1jyhjCubjz)}(hhh]h)}(h Alignmenth]h Alignment}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjtubah}(h]h ]h"]h$]h&]uh1jyhjCubeh}(h]h ]h"]h$]h&]uh1jthj@ubah}(h]h ]h"]h$]h&]uh1johjubj)}(hhh](ju)}(hhh](jz)}(hhh]h)}(h ``string``h]h)}(hjh]hstring}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(hXwStarts with an unsigned 16-bit little endian integer specifying the length of the string data in bytes, followed by the string data encoded as UTF-16LE with **optional** NULL termination and padding. Keep in mind that some firmware implementations might depend on the terminating NULL character to be present. Also the padding should always be performed with NULL characters.h](hStarts with an unsigned 16-bit little endian integer specifying the length of the string data in bytes, followed by the string data encoded as UTF-16LE with }(hjhhhNhNubhstrong)}(h **optional**h]hoptional}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh NULL termination and padding. Keep in mind that some firmware implementations might depend on the terminating NULL character to be present. Also the padding should always be performed with NULL characters.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h2 bytesh]h2 bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``boolean``h]h)}(hj h]hboolean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h?Single byte where 0 means ``false`` and nonzero means ``true``.h](hSingle byte where 0 means }(hj+hhhNhNubh)}(h ``false``h]hfalse}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ubh and nonzero means }(hj+hhhNhNubh)}(h``true``h]htrue}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ubh.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj(ubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h1 byteh]h1 byte}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjcubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``sint8``h]h)}(hjh]hsint8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(hSigned 8-bit integer.h]hSigned 8-bit integer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h1 byteh]h1 byte}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``uint8``h]h)}(hjh]huint8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(hUnsigned 8-bit integer.h]hUnsigned 8-bit integer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h1 byteh]h1 byte}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``sint16``h]h)}(hj6h]hsint16}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4ubah}(h]h ]h"]h$]h&]uh1hhhhKhj1ubah}(h]h ]h"]h$]h&]uh1jyhj.ubjz)}(hhh]h)}(h$Signed 16-bit little endian integer.h]h$Signed 16-bit little endian integer.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjQubah}(h]h ]h"]h$]h&]uh1jyhj.ubjz)}(hhh]h)}(h2 bytesh]h2 bytes}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhubah}(h]h ]h"]h$]h&]uh1jyhj.ubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``uint16``h]h)}(hjh]huint16}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h&Unsigned 16-bit little endian integer.h]h&Unsigned 16-bit little endian integer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h2 bytesh]h2 bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``sint32``h]h)}(hjh]hsint32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h$Signed 32-bit little endian integer.h]h$Signed 32-bit little endian integer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h4 bytesh]h4 bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``uint32``h]h)}(hj;h]huint32}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubah}(h]h ]h"]h$]h&]uh1hhhhKhj6ubah}(h]h ]h"]h$]h&]uh1jyhj3ubjz)}(hhh]h)}(h&Unsigned 32-bit little endian integer.h]h&Unsigned 32-bit little endian integer.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjVubah}(h]h ]h"]h$]h&]uh1jyhj3ubjz)}(hhh]h)}(h4 bytesh]h4 bytes}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjmubah}(h]h ]h"]h$]h&]uh1jyhj3ubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``sint64``h]h)}(hjh]hsint64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h$Signed 64-bit little endian integer.h]h$Signed 64-bit little endian integer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h8 bytesh]h8 bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``uint64``h]h)}(hjh]huint64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h&Unsigned 64-bit little endian integer.h]h&Unsigned 64-bit little endian integer.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jyhjubjz)}(hhh]h)}(h8 bytesh]h8 bytes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jyhjubeh}(h]h ]h"]h$]h&]uh1jthjubju)}(hhh](jz)}(hhh]h)}(h ``datetime``h]h)}(hj@ h]hdatetime}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj> ubah}(h]h ]h"]h$]h&]uh1hhhhKhj; ubah}(h]h ]h"]h$]h&]uh1jyhj8 ubjz)}(hhh]h)}(hXA fixed-length 25-character UTF-16LE string with the format *yyyymmddhhmmss.mmmmmmsutc* where *yyyy* is the 4-digit year, *mm* is the 2-digit month, *dd* is the 2-digit day, *hh* is the 2-digit hour based on a 24-hour clock, *mm* is the 2-digit minute, *ss* is the 2-digit second, *mmmmmm* is the 6-digit microsecond, *s* is a plus or minus character depending on whether *utc* is a positive or negative offset from UTC (or a colon if the date is an interval). Unpopulated fields should be filled with asterisks.h](h