<?xml version="1.0"?>
<doc>
    <assembly>
        <name>LibreHardwareMonitorLib</name>
    </assembly>
    <members>
        <member name="P:LibreHardwareMonitor.Hardware.Battery.BatteryGroup.Hardware">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Battery.BatteryGroup.Close">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Battery.BatteryGroup.GetReport">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Computer">
            <summary>
            Stores all hardware groups and decides which devices should be enabled and updated.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with basic initial <see cref="T:LibreHardwareMonitor.Hardware.Computer.Settings" />.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.ISettings)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with additional <see cref="T:LibreHardwareMonitor.Hardware.ISettings" />.
            </summary>
            <param name="settings">Computer settings that will be transferred to each <see cref="T:LibreHardwareMonitor.Hardware.IHardware" />.</param>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.Computer.HardwareAdded">
            <inheritdoc />
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.Computer.HardwareRemoved">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.Hardware">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsBatteryEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsControllerEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsCpuEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsGpuEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsPowerMonitorEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsMemoryEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsMotherboardEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsNetworkEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsPsuEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.IsStorageEnabled">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Computer.SMBios">
            <summary>
            Contains computer information table read in accordance with <see href="https://www.dmtf.org/standards/smbios">System Management BIOS (SMBIOS) Reference Specification</see>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
            <summary>
            Triggers the <see cref="M:LibreHardwareMonitor.Hardware.IVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)" /> method for the given observer.
            </summary>
            <param name="visitor">Observer who call to devices.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
            <summary>
            Triggers the <see cref="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)" /> method with the given visitor for each device in each group.
            </summary>
            <param name="visitor">Observer who call to devices.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.Open">
            <summary>
            If hasn't been opened before, opens <see cref="P:LibreHardwareMonitor.Hardware.Computer.SMBios" />, <see cref="T:LibreHardwareMonitor.Hardware.OpCode" /> and triggers the private <see cref="M:LibreHardwareMonitor.Hardware.Computer.AddGroups" /> method depending on which categories are
            enabled.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.Close">
            <summary>
            If opened before, removes all <see cref="T:LibreHardwareMonitor.Hardware.IGroup" /> and triggers <see cref="M:LibreHardwareMonitor.Hardware.OpCode.Close" />.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.Reset">
            <summary>
            If opened before, removes all <see cref="T:LibreHardwareMonitor.Hardware.IGroup" /> and recreates it.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Computer.Settings">
            <summary>
            <see cref="T:LibreHardwareMonitor.Hardware.Computer" /> specific additional settings passed to its <see cref="T:LibreHardwareMonitor.Hardware.IHardware" />.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFan.Speed">
            <summary>
            Speed of Fan in RPM.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFan.ConfigureDuty">
            <summary>
            Speed of Fan in percentage 0-100. This can e.g. be used to set fan curve when <see cref="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFanConfigure.Mode"/> is <see cref="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFanMode.Custom"/>.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFan.ConfigureTemp">
            <summary>
            Temperature of Fan in degrees Celsius. This can e.g. be used to set fan curve when <see cref="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFanConfigure.Mode"/> is <see cref="F:LibreHardwareMonitor.Hardware.Controller.MSI.MsiFanMode.Custom"/>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.GridV3">
            <summary>
            Support for the NZXT GRID+ V3 devices.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.KrakenV2">
            <summary>
            Support for the Kraken X (X42, X52, X62 or X72) devices.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.KrakenV3">
            <summary>
            Support for the KrakenZ devices.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.Amd0FCpu.Close">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.Amd17Cpu.Close">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.CpuId.#ctor(System.Int32,System.Int32,LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Cpu.CpuId" /> class.
            </summary>
            <param name="group">The group.</param>
            <param name="thread">The thread.</param>
            <param name="affinity">The affinity.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.CpuId.Get(System.Int32,System.Int32)">
            <summary>
            Gets the specified <see cref="T:LibreHardwareMonitor.Hardware.Cpu.CpuId" />.
            </summary>
            <param name="group">The group.</param>
            <param name="thread">The thread.</param>
            <returns><see cref="T:LibreHardwareMonitor.Hardware.Cpu.CpuId" />.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.CpuId">
            <summary>
            Gets the CPUID.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.Index">
            <summary>
            Gets the CPU index.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.IntelCpu.Close">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.DeviceId">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.SetDefaultFanSpeed">
            <summary>
            Sets the default fan speed.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetAdlSensor(LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogData,LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogDataOutput,LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogSensors,LibreHardwareMonitor.Hardware.Sensor,System.Single,System.Boolean)">
             <summary>
             Gets a sensor value.
             </summary>
            
             <param name="adlPMLogData">Current pmlog struct, used with pmlog-support/start.</param>
             <param name="od8Log">Legacy pmlogdataoutput struct, used with ADL2_New_QueryPMLogData_Get.</param>
             <param name="sensorType">Type of the sensor.</param>
             <param name="sensor">The sensor.</param>
             <param name="factor">The factor.</param>
             <param name="reset">If set to <c>true</c>, resets the sensor value to <c>null</c>.</param>
             <returns>true if sensor is supported, false otherwise</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetODNTemperature(LibreHardwareMonitor.Interop.AtiAdlxx.ADLODNTemperatureType,LibreHardwareMonitor.Hardware.Sensor,System.Double,System.Double,System.Boolean)">
            <summary>
            Gets the OverdriveN temperature.
            </summary>
            <param name="type">The type.</param>
            <param name="sensor">The sensor.</param>
            <param name="minTemperature">The minimum temperature.</param>
            <param name="scale">The scale.</param>
            <param name="reset">If set to <c>true</c>, resets the sensor value to <c>null</c>.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.GetOD6Power(LibreHardwareMonitor.Interop.AtiAdlxx.ADLODNCurrentPowerType,LibreHardwareMonitor.Hardware.Sensor)">
            <summary>
            Gets the Overdrive6 power.
            </summary>
            <param name="type">The type.</param>
            <param name="sensor">The sensor.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.#ctor(System.String,LibreHardwareMonitor.Hardware.Identifier,LibreHardwareMonitor.Hardware.ISettings)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Gpu.GenericGpu" /> class.
            </summary>
            <param name="name">Component name.</param>
            <param name="identifier">Identifier that will be assigned to the device. Based on <see cref="T:LibreHardwareMonitor.Hardware.Identifier" /></param>
            <param name="settings">Additional settings passed by the <see cref="T:LibreHardwareMonitor.Hardware.IComputer" />.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.DeviceId">
            <summary>
            Gets the device identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.IntelIntegratedGpu.DeviceId">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.IntelIntegratedGpu.Close">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.NvidiaGpu.DeviceId">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.GroupAffinity">
            <summary>
            This structure describes a group-specific affinity.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.#ctor(System.UInt16,System.UInt64)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.GroupAffinity" /> struct.
            </summary>
            <param name="group">The group.</param>
            <param name="mask">The mask.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.Single(System.UInt16,System.Int32)">
            <summary>
            Gets a single group affinity.
            </summary>
            <param name="group">The group.</param>
            <param name="index">The index.</param>
            <returns><see cref="T:LibreHardwareMonitor.Hardware.GroupAffinity" />.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GroupAffinity.Group">
            <summary>
            Gets the group.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GroupAffinity.Mask">
            <summary>
            Gets the mask.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object" /> is equal to this instance.
            </summary>
            <param name="o">The <see cref="T:System.Object" /> to compare with this instance.</param>
            <returns><c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.GetHashCode">
            <summary>
            Returns a hash code for this instance.
            </summary>
            <returns>A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.op_Equality(LibreHardwareMonitor.Hardware.GroupAffinity,LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Implements the == operator.
            </summary>
            <param name="a1">The a1.</param>
            <param name="a2">The a2.</param>
            <returns>The result of the operator.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GroupAffinity.op_Inequality(LibreHardwareMonitor.Hardware.GroupAffinity,LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Implements the != operator.
            </summary>
            <param name="a1">The a1.</param>
            <param name="a2">The a2.</param>
            <returns>The result of the operator.</returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Hardware">
            <summary>
            Object representing a component of the computer.
            <para>
            Individual information can be read from the <see cref="P:LibreHardwareMonitor.Hardware.Hardware.Sensors"/>.
            </para>
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.#ctor(System.String,LibreHardwareMonitor.Hardware.Identifier,LibreHardwareMonitor.Hardware.ISettings)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.Hardware"/> instance based on the data provided.
            </summary>
            <param name="name">Component name.</param>
            <param name="identifier">Identifier that will be assigned to the device. Based on <see cref="P:LibreHardwareMonitor.Hardware.Hardware.Identifier"/></param>
            <param name="settings">Additional settings passed by the <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>.</param>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.Hardware.Closing">
            <summary>
            Event triggered when <see cref="T:LibreHardwareMonitor.Hardware.Hardware"/> is closing.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.HardwareType">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.Identifier">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.Name">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.Parent">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.Properties">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.Sensors">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Hardware.SubHardware">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.GetReport">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.Update">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.ActivateSensor(LibreHardwareMonitor.Hardware.ISensor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.DeactivateSensor(LibreHardwareMonitor.Hardware.ISensor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Hardware.Close">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.HardwareType">
            <summary>
            Collection of identifiers representing the purpose of the hardware.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.HardwareEventHandler">
            <summary>
            Handler that will trigger the actions assigned to it when the event occurs.
            </summary>
            <param name="hardware">Component returned to the assigned action(s).</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IComputer">
            <summary>
            Basic abstract with methods for the class which can store all hardware and decides which devices are to be checked and updated.
            </summary>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.IComputer.HardwareAdded">
            <summary>
            Triggered when a new <see cref="T:LibreHardwareMonitor.Hardware.IHardware" /> is registered.
            </summary>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.IComputer.HardwareRemoved">
            <summary>
            Triggered when a <see cref="T:LibreHardwareMonitor.Hardware.IHardware" /> is removed.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.Hardware">
            <summary>
            Gets a list of all known <see cref="T:LibreHardwareMonitor.Hardware.IHardware" />.
            <para>Can be updated by <see cref="T:LibreHardwareMonitor.Hardware.IVisitor" />.</para>
            </summary>
            <returns>List of all enabled devices.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsBatteryEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Battery" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsControllerEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about:
            <list>
                <item>
                    <see cref="T:LibreHardwareMonitor.Hardware.Controller.TBalancer.TBalancerGroup" />
                </item>
                <item>
                    <see cref="T:LibreHardwareMonitor.Hardware.Controller.Heatmaster.HeatmasterGroup" />
                </item>
                <item>
                    <see cref="T:LibreHardwareMonitor.Hardware.Controller.AquaComputer.AquaComputerGroup" />
                </item>
                <item>
                    <see cref="T:LibreHardwareMonitor.Hardware.Controller.AeroCool.AeroCoolGroup" />
                </item>
                <item>
                    <see cref="T:LibreHardwareMonitor.Hardware.Controller.Nzxt.NzxtGroup" />
                </item>
            </list>
            devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsCpuEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Cpu" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsGpuEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.GpuAmd" /> or <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.GpuNvidia" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsPowerMonitorEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.PowerMonitor"/> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsMemoryEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Memory" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsMotherboardEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Motherboard" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsNetworkEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Network" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsPsuEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Psu" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IComputer.IsStorageEnabled">
            <summary>
            Gets or sets a value indicating whether collecting information about <see cref="F:LibreHardwareMonitor.Hardware.HardwareType.Storage" /> devices should be enabled and updated.
            </summary>
            <returns><see langword="true" /> if a given category of devices is already enabled.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IComputer.GetReport">
            <summary>
            Generates full LibreHardwareMonitor report for devices that have been enabled.
            </summary>
            <returns>A formatted text string with library, OS and hardware information.</returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Identifier">
            <summary>
            Represents a unique <see cref="T:LibreHardwareMonitor.Hardware.ISensor" />/<see cref="T:LibreHardwareMonitor.Hardware.IHardware" /> identifier in text format with a / separator.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.#ctor(LibreHardwareMonitor.Hardware.Identifier,System.String[])">
            <summary>
            Creates a new identifier instance based on the base <see cref="T:LibreHardwareMonitor.Hardware.Identifier" /> and additional elements.
            </summary>
            <param name="identifier">Base identifier being the beginning of the new one.</param>
            <param name="extensions">Additional parts by which the base <see cref="T:LibreHardwareMonitor.Hardware.Identifier" /> will be extended.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.#ctor(HidSharp.HidDevice)">
            <summary>
            Creates a new identifier instance based on the supplied <see cref="T:HidSharp.HidDevice" />.
            If available the identifier will consist of the vendor-id, product-id and serial number of the HidDevice.
            Alternatively a platform dependent identifier based on the usb device-path is generated.
            </summary>
            <param name="dev">The <see cref="T:HidSharp.HidDevice" /> this identifier will be created for.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.CompareTo(LibreHardwareMonitor.Hardware.Identifier)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.ToString">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.Equals(System.Object)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Identifier.GetHashCode">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IElement">
            <summary>
            Abstract parent with logic for the abstract class that stores data.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
            <summary>
            Accepts the observer for this instance.
            </summary>
            <param name="visitor">Computer observer making the calls.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
            <summary>
            Call the <see cref="M:LibreHardwareMonitor.Hardware.IElement.Accept(LibreHardwareMonitor.Hardware.IVisitor)"/> method for all child instances <c>(called only from visitors).</c>
            </summary>
            <param name="visitor">Computer observer making the calls.</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IGroup">
            <summary>
            A group of devices from one category in one list.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IGroup.Hardware">
            <summary>
            Gets a list that stores information about <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> in a given group.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IGroup.GetReport">
            <summary>
            Report containing most of the known information about all <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> in this <see cref="T:LibreHardwareMonitor.Hardware.IGroup"/>.
            </summary>
            <returns>A formatted text string with hardware information.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IGroup.Close">
            <summary>
            Stop updating this group in the future.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SensorEventHandler">
            <summary>
            Handler that will trigger the actions assigned to it when the event occurs.
            </summary>
            <param name="sensor">Component returned to the assigned action(s).</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IHardware">
            <summary>
            Abstract object that stores information about a device. All sensors are available as an array of <see cref="P:LibreHardwareMonitor.Hardware.IHardware.Sensors"/>.
            <para>
            Can contain <see cref="P:LibreHardwareMonitor.Hardware.IHardware.SubHardware"/>.
            Type specified in <see cref="P:LibreHardwareMonitor.Hardware.IHardware.HardwareType"/>.
            </para>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.HardwareType">
            <summary>
            <inheritdoc cref="T:LibreHardwareMonitor.Hardware.HardwareType"/>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.Identifier">
            <summary>
            Gets a unique hardware ID that represents its location.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.Name">
            <summary>
            Gets or sets device name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.Parent">
            <summary>
            Gets the device that is the parent of the current hardware. For example, the motherboard is the parent of SuperIO.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.Sensors">
            <summary>
            Gets an array of all sensors such as <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Temperature"/>, <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Clock"/>, <see cref="F:LibreHardwareMonitor.Hardware.SensorType.Load"/> etc.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.SubHardware">
            <summary>
            Gets child devices, e.g. <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO"/> of the <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Motherboard"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IHardware.GetReport">
            <summary>
            Report containing most of the known information about the current device.
            </summary>
            <returns>A formatted text string with hardware information.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IHardware.Update">
            <summary>
            Refreshes the information stored in <see cref="P:LibreHardwareMonitor.Hardware.IHardware.Sensors"/> array.
            </summary>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.IHardware.SensorAdded">
            <summary>
            An <see langword="event"/> that will be triggered when a new sensor appears.
            </summary>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.IHardware.SensorRemoved">
            <summary>
            An <see langword="event"/> that will be triggered when one of the sensors is removed.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IHardware.Properties">
            <summary>
            Gets rarely changed hardware properties that can't be represented as sensors.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IParameter">
            <summary>
            Abstract object that represents additional parameters included in <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.DefaultValue">
            <summary>
            Gets a parameter default value defined by library.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.Description">
            <summary>
            Gets a parameter description defined by library.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.Identifier">
            <summary>
            Gets a unique parameter ID that represents its location.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.IsDefault">
            <summary>
            Gets or sets information whether the given <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/> is the default for <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.Name">
            <summary>
            Gets a parameter name defined by library.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.Sensor">
            <summary>
            Gets the sensor that is the data container for the given parameter.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.IParameter.Value">
            <summary>
            Gets or sets the current value.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SensorType">
            <summary>
            Category of what type the selected sensor is.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SensorValue">
            <summary>
            Stores the readed value and the time in which it was recorded.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorValue.#ctor(System.Single,System.DateTime)">
            <param name="value"><see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> of the sensor.</param>
            <param name="time">The time code during which the <see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> was recorded.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SensorValue.Value">
            <summary>
            Gets the value of the sensor
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SensorValue.Time">
            <summary>
            Gets the time code during which the <see cref="P:LibreHardwareMonitor.Hardware.SensorValue.Value"/> was recorded.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ISensor">
            <summary>
            Stores information about the readed values and the time in which they were collected.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Hardware">
            <summary>
            <inheritdoc cref="T:LibreHardwareMonitor.Hardware.IHardware"/>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Index">
            <summary>
            Gets the unique identifier of this sensor for a given <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Max">
            <summary>
            Gets a maximum value recorded for the given sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Min">
            <summary>
            Gets a minimum value recorded for the given sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Name">
            <summary>
            Gets or sets a sensor name.
            <para>By default determined by the library.</para>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.SensorType">
            <summary>
            <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SensorType"/>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Value">
            <summary>
            Gets the last recorded value for the given sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Values">
            <summary>
            Gets a list of recorded values for the given sensor.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISensor.ResetMin">
            <summary>
            Resets a value stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Min"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISensor.ResetMax">
            <summary>
            Resets a value stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Max"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISensor.ClearValues">
            <summary>
            Clears the values stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Values"/>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ISensorLimits">
            <summary>
            Abstract object that stores information about the limits of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensorLimits.HighLimit">
            <summary>
            Upper limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensorLimits.LowLimit">
            <summary>
            Lower limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ICriticalSensorLimits">
            <summary>
            Abstract object that stores information about the critical limits of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ICriticalSensorLimits.CriticalHighLimit">
            <summary>
            Critical upper limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ICriticalSensorLimits.CriticalLowLimit">
            <summary>
            Critical lower limit of <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> value.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ISettings">
            <summary>
            Abstract object that stores settings passed to <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>, <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> and <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISettings.Contains(System.String)">
            <summary>
            Returns information whether the given collection of settings contains a value assigned to the given key.
            </summary>
            <param name="name">Key to which the setting value is assigned.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISettings.SetValue(System.String,System.String)">
            <summary>
            Assigns a setting option to a given key.
            </summary>
            <param name="name">Key to which the setting value is assigned.</param>
            <param name="value">Text setting value.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISettings.GetValue(System.String,System.String)">
            <summary>
            Gets a setting option assigned to the given key.
            </summary>
            <param name="name">Key to which the setting value is assigned.</param>
            <param name="value">Default value.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ISettings.Remove(System.String)">
            <summary>
            Removes a setting with the specified key from the settings collection.
            </summary>
            <param name="name">Key to which the setting value is assigned.</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.IVisitor">
            <summary>
            Base interface for creating observers who call to devices.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)">
            <summary>
            Refreshes the values of all <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> in all <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> on selected <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/>.
            </summary>
            <param name="computer">Instance of the computer to be revisited.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitHardware(LibreHardwareMonitor.Hardware.IHardware)">
            <summary>
            Refreshes the values of all <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> on selected <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/>.
            </summary>
            <param name="hardware">Instance of the hardware to be revisited.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitSensor(LibreHardwareMonitor.Hardware.ISensor)">
            <summary>
            Refreshes the values on selected <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
            <param name="sensor">Instance of the sensor to be revisited.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.IVisitor.VisitParameter(LibreHardwareMonitor.Hardware.IParameter)">
            <summary>
            Refreshes the values on selected <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/>.
            </summary>
            <param name="parameter">Instance of the parameter to be revisited.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EcioPortGigabyteController.Log(System.String)">
            <summary>
            Writes a debug message to the output window and appends it to the debug log file when
            ECIO_GIGABYTE_CONTROLLER_DEBUG is defined.
            </summary>
            <remarks>This method only performs logging when the ECIO_GIGABYTE_CONTROLLER_DEBUG compilation symbol
            is defined. The log file is named "EcioPortGigabyteController_DebugLog.txt" and is appended to with each call.
            Use this method for diagnostic purposes during development or troubleshooting.</remarks>
            <param name="message">The message to log. This text is written to both the debug output and the log file.</param>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempChipset">
            <summary>Chipset temperature [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempCPU">
            <summary>CPU temperature [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempCPUPackage">
            <summary>CPU Package temperature [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempMB">
            <summary>motherboard temperature [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempTSensor">
            <summary>"T_Sensor" temperature sensor reading [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempTSensor2">
            <summary>"T_Sensor 2" temperature sensor reading [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempVrm">
            <summary>VRM temperature [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.VoltageCPU">
            <summary>CPU Core voltage [mV]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.FanCPUOpt">
            <summary>CPU_Opt fan [RPM]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.FanVrmHS">
            <summary>VRM heat sink fan [RPM]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.FanChipset">
            <summary>Chipset fan [RPM]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.FanWaterPump">
            <summary>Water Pump [RPM]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.FanWaterFlow">
            <summary>Water flow sensor reading [RPM]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.CurrCPU">
            <summary>CPU current [A]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempWaterIn">
            <summary>"Water_In" temperature sensor reading [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempWaterOut">
            <summary>"Water_Out" temperature sensor reading [℃]</summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController.ECSensor.TempWaterBlockIn">
            <summary>Water block temperature sensor reading [℃]</summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.WindowsEmbeddedControllerIO">
            <summary>
            An unsafe but universal implementation for the ACPI Embedded Controller IO interface for Windows
            </summary>
            <remarks>
            It is unsafe because of possible race condition between this application and the PC firmware when
            writing to the EC registers. For a safe approach ACPI/WMI methods have to be used, but those are
            different for each motherboard model.
            </remarks>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.F718XX.Close">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.Ipmi.Close">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.IsaBridgeGigabyteController">
            <summary>
            This is a controller present on some Gigabyte motherboards for both Intel and AMD, that is in custom firmware
            loaded onto the 2nd ITE EC.
            It can be accessed by using memory mapped IO, mapping its internal RAM onto main RAM via the ISA Bridge.
            This class can disable it so that the regular IT87XX code can drive the fans.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.IsaBridgeGigabyteController.Enable(System.Boolean)">
            <summary>
            Enable/Disable Fan Control
            </summary>
            <param name="enabled"></param>
            <returns>true on success</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.IsaBridgeGigabyteController.Restore">
            <summary>
            Restore settings back to initial values
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.IT87XX.SelectBank(System.Byte)">
            <summary>
            Selects another bank. Memory from 0x10-0xAF swaps to data from new bank.
            Beware to select the default bank 0 after changing.
            Bank selection is reset after power cycle.
            </summary>
            <param name="bankIndex">New bank index. Can be a value of 0-3.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.Nct677X.Close">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.Nct677X.StartFanCfgUpdate(System.Int32)">
            <summary>
            Request the EC to enter fan configuration phase and wait until registers are unlocked.
            Based on the Linux nct6687d driver's start_fan_cfg_update() function.
            </summary>
            <returns>true if the EC entered config phase successfully; false on timeout.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.Nct677X.CompleteFanConfigUpdate(System.Int32)">
            <summary>
            Signal the EC that fan configuration is complete and wait for acknowledgment.
            Returns false if the EC set the INVALID bit (configuration rejected).
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.Nct677X.Set6687DRControl(System.Int32,System.Byte)">
            <summary>
            Write fan control value for NCT6687DR.  All fans use direct PWM command registers.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Lpc.W836XX.Close">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Motherboard.Model">
            <summary>
            Known motherboard models detected/recognized by LibreHardwareMonitor.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Motherboard.Motherboard">
            <summary>
            Represents the motherboard of a computer with its <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO" /> and <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController" /> as <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware" />.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.#ctor(LibreHardwareMonitor.Hardware.SMBios,LibreHardwareMonitor.Hardware.ISettings)">
            <summary>
            Creates motherboard instance by retrieving information from <see cref="T:LibreHardwareMonitor.Hardware.SMBios" /> and creates a new <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware" /> based on data from <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.LpcIO" />
            and <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Lpc.EC.EmbeddedController" />.
            </summary>
            <param name="smBios"><see cref="T:LibreHardwareMonitor.Hardware.SMBios" /> table containing motherboard data.</param>
            <param name="settings">Additional settings passed by <see cref="T:LibreHardwareMonitor.Hardware.IComputer" />.</param>
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SensorAdded">
            <inheritdoc />
        </member>
        <member name="E:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SensorRemoved">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.HardwareType">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Identifier">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Manufacturer">
            <summary>
            Gets the <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Manufacturer" />.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Model">
            <summary>
            Gets the <see cref="T:LibreHardwareMonitor.Hardware.Motherboard.Model" />.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Name">
            <summary>
            Gets the name obtained from <see cref="T:LibreHardwareMonitor.Hardware.SMBios" />.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Parent">
            <inheritdoc />
            <returns>Always <see langword="null" /></returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Properties">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Sensors">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SMBios">
            <summary>
            Gets the <see cref="T:LibreHardwareMonitor.Hardware.SMBios" /> information.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.GetReport">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Update">
            <summary>
            Motherboard itself cannot be updated. Update <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware" /> instead.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Accept(LibreHardwareMonitor.Hardware.IVisitor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Traverse(LibreHardwareMonitor.Hardware.IVisitor)">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.Close">
            <summary>
            Closes <see cref="P:LibreHardwareMonitor.Hardware.Motherboard.Motherboard.SubHardware" /> using <see cref="M:LibreHardwareMonitor.Hardware.Hardware.Close" />.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Mutexes.Open">
            <summary>
            Opens the mutexes.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Mutexes.Close">
            <summary>
            Closes the mutexes.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ParameterDescription">
            <summary>
            Composite class containing information about the selected <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ParameterDescription.#ctor(System.String,System.String,System.Single)">
            <summary>
            Creates a new instance and assigns values.
            </summary>
            <param name="name">Name of the selected component.</param>
            <param name="description">Description of the selected component.</param>
            <param name="defaultValue">Default value of the selected component.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.Name">
            <summary>
            Gets a name of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.Description">
            <summary>
            Gets a description of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ParameterDescription.DefaultValue">
            <summary>
            Gets a default value of the parent <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.PowerMonitor.WireViewPro2">
            <summary>
            Thermal Grizzly WireView Pro II power monitor.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.PowerMonitor.WireViewPro2.MaxFanRPM">
            <summary>
            Max RPM according to the8auer. This is a custom made fan.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.PowerMonitor.WireViewPro2.FanRampupTime">
            <summary>
            Time the fan needs to ramp up by 10%.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.PowerMonitor.WireViewPro2.CalculateFanSpeed(LibreHardwareMonitor.Interop.PowerMonitor.DeviceData)">
            <summary>
            Fan speed for this device is an approximation based on the curve configuration and current temperatures.<br/>
            The device itself does not report actual fan speed.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Psu.ProtocolError">
            <summary>
            Represents an error that occurs during communication with a PSU controller over USB.
            </summary>
            <param name="device">The HID device associated with the communication error. Cannot be null.</param>
            <param name="message">The error message that describes the nature of the communication failure.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Psu.ProtocolError.#ctor(HidSharp.HidDevice,System.String)">
            <summary>
            Represents an error that occurs during communication with a PSU controller over USB.
            </summary>
            <param name="device">The HID device associated with the communication error. Cannot be null.</param>
            <param name="message">The error message that describes the nature of the communication failure.</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SensorVisitor">
            <summary>
            Observer making calls to selected component <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>'s.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.#ctor(LibreHardwareMonitor.Hardware.SensorEventHandler)">
            <summary>
            Creates a new observer instance.
            </summary>
            <param name="handler">Instance of the <see cref="T:LibreHardwareMonitor.Hardware.SensorEventHandler"/> that triggers events during visiting the <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/>.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitComputer(LibreHardwareMonitor.Hardware.IComputer)">
            <summary>
            Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> with its <see cref="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)"/>.
            </summary>
            <param name="computer">Computer class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IComputer"/> interface.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitHardware(LibreHardwareMonitor.Hardware.IHardware)">
            <summary>
            Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> with its <see cref="M:LibreHardwareMonitor.Hardware.IElement.Traverse(LibreHardwareMonitor.Hardware.IVisitor)"/>.
            </summary>
            <param name="hardware">Hardware class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IHardware"/> interface.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitSensor(LibreHardwareMonitor.Hardware.ISensor)">
            <summary>
            Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> using <see cref="T:LibreHardwareMonitor.Hardware.SensorEventHandler"/>.
            </summary>
            <param name="sensor">Sensor class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.ISensor"/> interface.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SensorVisitor.VisitParameter(LibreHardwareMonitor.Hardware.IParameter)">
            <summary>
            Goes through all the components of the specified <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/>.
            <para>
            <see cref="T:System.NotImplementedException"/>
            </para>
            </summary>
            <param name="parameter">Parameter class instance that is derived from the <see cref="T:LibreHardwareMonitor.Hardware.IParameter"/> interface.</param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemEnclosureSecurityStatus">
            <summary>
            System enclosure security status based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.3</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemEnclosureState">
            <summary>
            System enclosure state based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.2</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemEnclosureType">
            <summary>
            System enclosure type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.1</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ProcessorFamily">
            <summary>
            Processor family based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.2</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ProcessorCharacteristics">
            <summary>
            Processor characteristics based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.9</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ProcessorType">
            <summary>
            Processor type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.1</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ProcessorSocket">
            <summary>
            Processor socket based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.5</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemWakeUp">
            <summary>
            System wake-up type based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.2.2</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.CacheAssociativity">
            <summary>
            Cache associativity based on <see href="https://www.dmtf.org/dsp/DSP0134">DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.8.5</see>.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.CacheDesignation">
            <summary>
            Processor cache level.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.MemoryType">
            <summary>
            Memory type.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.#ctor(System.Byte[],System.Collections.Generic.IList{System.String})">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.InformationBase" /> class.
            </summary>
            <param name="data">The data.</param>
            <param name="strings">The strings.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetByte(System.Int32)">
            <summary>
            Gets the byte.
            </summary>
            <param name="offset">The offset.</param>
            <returns><see cref="T:System.Byte" />.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetWord(System.Int32)">
            <summary>
            Gets the word.
            </summary>
            <param name="offset">The offset.</param>
            <returns><see cref="T:System.UInt16" />.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetDword(System.Int32)">
            <summary>
            Gets the dword.
            </summary>
            <param name="offset">The offset.</param>
            <returns><see cref="T:System.UInt16" />.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetQword(System.Int32)">
            <summary>
            Gets the qword.
            </summary>
            <param name="offset">The offset.</param>
            <returns><see cref="T:System.UInt64" />.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.InformationBase.GetString(System.Int32)">
            <summary>
            Gets the string.
            </summary>
            <param name="offset">The offset.</param>
            <returns><see cref="T:System.String" />.</returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.BiosInformation">
            <summary>
            Motherboard BIOS information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Date">
            <summary>
            Gets the BIOS release date.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Size">
            <summary>
            Gets the size of the physical device containing the BIOS.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Vendor">
            <summary>
            Gets the string number of the BIOS Vendor’s Name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BiosInformation.Version">
            <summary>
            Gets the string number of the BIOS Version. This value is a free-form string that may contain Core and OEM version information.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.BiosInformation.GetSize">
            <summary>
            Gets the size.
            </summary>
            <returns><see cref="T:System.Nullable`1" />.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.BiosInformation.GetDate(System.String)">
            <summary>
            Gets the date.
            </summary>
            <param name="date">The bios date.</param>
            <returns><see cref="T:System.Nullable`1" />.</returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemInformation">
            <summary>
            System information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.Family">
            <summary>
            Gets the family associated with system.
            <para>
            This text string identifies the family to which a particular computer belongs. A family refers to a set of computers that are similar but not identical from a hardware or software point of
            view. Typically, a family is composed of different computer models, which have different configurations and pricing points. Computers in the same family often have similar branding and cosmetic
            features.
            </para>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.ManufacturerName">
            <summary>
            Gets the manufacturer name associated with system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.ProductName">
            <summary>
            Gets the product name associated with system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.SerialNumber">
            <summary>
            Gets the serial number string associated with system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.Version">
            <summary>
            Gets the version string associated with system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemInformation.WakeUp">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemWakeUp" />
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SystemEnclosure">
            <summary>
            System enclosure obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.AssetTag">
            <summary>
            Gets the asset tag associated with the enclosure or chassis.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.BootUpState">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemEnclosureState" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.LockDetected">
            <summary>
            Gets or sets the system enclosure lock.
            </summary>
            <returns>System enclosure lock is present if <see langword="true" />. Otherwise, either a lock is not present or it is unknown if the enclosure has a lock.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.ManufacturerName">
            <summary>
            Gets the string describing the chassis or enclosure manufacturer name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.PowerCords">
            <summary>
            Gets the number of power cords associated with the enclosure or chassis.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.PowerSupplyState">
            <summary>
            Gets the state of the enclosure’s power supply (or supplies) when last booted.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.RackHeight">
            <summary>
            Gets the height of the enclosure, in 'U's. A U is a standard unit of measure for the height of a rack or rack-mountable component and is equal to 1.75 inches or 4.445 cm. A value of <c>0</c>
            indicates that the enclosure height is unspecified.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.SecurityStatus">
            <summary>
            Gets the physical security status of the enclosure when last booted.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.SerialNumber">
            <summary>
            Gets the string describing the chassis or enclosure serial number.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.SKU">
            <summary>
            Gets the string describing the chassis or enclosure SKU number.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.ThermalState">
            <summary>
            Gets the thermal state of the enclosure when last booted.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.Type">
            <summary>
            Gets <inheritdoc cref="P:LibreHardwareMonitor.Hardware.SystemEnclosure.Type" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SystemEnclosure.Version">
            <summary>
            Gets the number of null-terminated string representing the chassis or enclosure version.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.BaseBoardInformation">
            <summary>
            Motherboard information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.ManufacturerName">
            <summary>
            Gets the value that represents the manufacturer's name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.ProductName">
            <summary>
            Gets the value that represents the motherboard's name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.SerialNumber">
            <summary>
            Gets the value that represents the motherboard's serial number.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.BaseBoardInformation.Version">
            <summary>
            Gets the value that represents the motherboard's revision number.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.ProcessorInformation">
            <summary>
            Processor information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Characteristics">
            <summary>
            Gets the characteristics of the processor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CoreCount">
            <summary>
            Gets the value that represents the number of cores per processor socket.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CoreEnabled">
            <summary>
            Gets the value that represents the number of enabled cores per processor socket.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.CurrentSpeed">
            <summary>
            Gets the value that represents the current processor speed (in MHz).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ExternalClock">
            <summary>
            Gets the external Clock Frequency, in MHz. If the value is unknown, the field is set to 0.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Family">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorFamily" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Handle">
            <summary>
            Gets the handle.
            </summary>
            <value>The handle.</value>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Id">
            <summary>
            Gets the identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.L1CacheHandle">
            <summary>
            Gets the L1 cache handle.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.L2CacheHandle">
            <summary>
            Gets the L2 cache handle.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.L3CacheHandle">
            <summary>
            Gets the L3 cache handle.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ManufacturerName">
            <summary>
            Gets the string number of Processor Manufacturer.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.MaxSpeed">
            <summary>
            Gets the value that represents the maximum processor speed (in MHz) supported by the system for this processor socket.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ProcessorType">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorType" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Serial">
            <summary>
            Gets the value that represents the string number for the serial number of this processor.
            <para>This value is set by the manufacturer and normally not changeable.</para>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Socket">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorSocket" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.SocketDesignation">
            <summary>
            Gets the string number for Reference Designation.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.ThreadCount">
            <summary>
            Gets the value that represents the number of threads per processor socket.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ProcessorInformation.Version">
            <summary>
            Gets the value that represents the string number describing the Processor.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.CacheInformation">
            <summary>
            Cache information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.CacheInformation.Associativity">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.CacheAssociativity" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.CacheInformation.Designation">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.CacheDesignation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.CacheInformation.Handle">
            <summary>
            Gets the handle.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.CacheInformation.Size">
            <summary>
            Gets the value that represents the installed cache size.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.CacheInformation.GetCacheDesignation">
            <summary>
            Gets the cache designation.
            </summary>
            <returns><see cref="T:LibreHardwareMonitor.Hardware.CacheDesignation" />.</returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.MemoryDevice">
            <summary>
            Memory information obtained from the SMBIOS table.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.BankLocator">
            <summary>
            Gets the string number of the string that identifies the physically labeled bank where the memory device is located.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.DeviceLocator">
            <summary>
            Gets the string number of the string that identifies the physically-labeled socket or board position where the memory device is located.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.ManufacturerName">
            <summary>
            Gets the string number for the manufacturer of this memory device.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.PartNumber">
            <summary>
            Gets the string number for the part number of this memory device.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.SerialNumber">
            <summary>
            Gets the string number for the serial number of this memory device.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.Size">
            <summary>
            Gets the size of the memory device.
            If the value is 0, no memory device is installed in the socket.
            If the value is 0xFFFF, the size is unknown.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.Speed">
            <summary>
            Gets the value that identifies the maximum capable speed of the device, in mega transfers per second (MT/s).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.ConfiguredSpeed">
            <summary>
            Gets the configured speed of the device, in mega transfers per second (MT/s).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.ConfiguredVoltage">
            <summary>
            Gets the configured voltage of this memory device, in millivolts (mV).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.MemoryDevice.Type">
            <summary>
            Gets the type of this memory device.
            </summary>
            <value>The type.</value>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.SMBios">
            <summary>
            Reads and processes information encoded in an SMBIOS table.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SMBios.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.SMBios" /> class.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.Bios">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.BiosInformation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.Board">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.BaseBoardInformation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.MemoryDevices">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.MemoryDevice" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.ProcessorCaches">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.CacheInformation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.Processors">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.ProcessorInformation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.System">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemInformation" />
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.SMBios.SystemEnclosure">
            <summary>
            Gets <inheritdoc cref="T:LibreHardwareMonitor.Hardware.SystemEnclosure" />
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.SMBios.GetReport">
            <summary>
            Report containing most of the information that could be read from the SMBIOS table.
            </summary>
            <returns>A formatted text string with computer information and the entire SMBIOS table.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Storage.ISmart.Attributes">
            <summary>
            Gets all available smart attributes.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(DiskInfoToolkit.SmartAttributeEntry,System.Nullable{LibreHardwareMonitor.Hardware.SensorType},System.Int32,System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute"/> class.
            </summary>
            <param name="smartAttribute">The SMART attribute.</param>
            <param name="sensorType">
            Type of the sensor or null if no sensor is to
            be created.
            </param>
            <param name="sensorChannel">
            If there exists more than one attribute with
            the same sensor channel and type, then a sensor is created only for the
            first attribute.
            </param>
            <param name="sensorName">
            The name to be used for the sensor, or null if
            no sensor is created.
            </param>
            <param name="defaultHiddenSensor">True to hide the sensor initially.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Storage.StorageDevice.ForceWakeup">
            <summary>
            Forces disk to wake up, if disk is asleep.
            </summary>
            <remarks>See <see cref="M:DiskInfoToolkit.Storage.TryWakeUp(DiskInfoToolkit.StorageDevice)"/> for more information.</remarks>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Storage.StorageDevice.PerformanceValue">
            <summary>
            Helper to calculate the disk performance with base timestamps
            https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfrawdata
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ThreadAffinity.#cctor">
            <summary>
            Initializes static members of the <see cref="T:LibreHardwareMonitor.Hardware.ThreadAffinity" /> class.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ThreadAffinity.ProcessorGroupCount">
            <summary>
            Gets the processor group count.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.ThreadAffinity.Set(LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Sets the processor group affinity for the current thread.
            </summary>
            <param name="affinity">The processor group affinity.</param>
            <returns>The previous processor group affinity.</returns>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_WAIT">
            <summary>
            All OK, but need to wait.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_RESTART">
            <summary>
            All OK, but need restart.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_MODE_CHANGE">
            <summary>
            All OK but need mode change.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK_WARNING">
            <summary>
            All OK, but with warning.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_OK">
            <summary>
            ADL function completed successfully.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR">
            <summary>
            Generic Error. Most likely one or more of the Escape calls to the driver
            failed!
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NOT_INIT">
            <summary>
            ADL not initialized.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_PARAM">
            <summary>
            One of the parameter passed is invalid.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_PARAM_SIZE">
            <summary>
            One of the parameter size is invalid.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_ADL_IDX">
            <summary>
            Invalid ADL index passed.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_CONTROLLER_IDX">
            <summary>
            Invalid controller index passed.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_DIPLAY_IDX">
            <summary>
            Invalid display index passed.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NOT_SUPPORTED">
            <summary>
            Function not supported by the driver.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NULL_POINTER">
            <summary>
            Null Pointer error.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_DISABLED_ADAPTER">
            <summary>
            Call can't be made due to disabled adapter.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_INVALID_CALLBACK">
            <summary>
            Invalid Callback.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_RESOURCE_CONFLICT">
            <summary>
            Display Resource conflict.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_SET_INCOMPLETE">
            <summary>
            Failed to update some of the values. Can be returned by set request that
            include multiple values if not all values were successfully committed.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLStatus.ADL_ERR_NO_XDISPLAY">
            <summary>
            There's no Linux XDisplay in Linux Console environment.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogSupportInfo.usSensors">
            list of sensors defined by ADL_PMLOG_SENSORS
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogSupportInfo.iReserved">
            Reserved
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogStartInput.usSensors">
            list of sensors defined by ADL_PMLOG_SENSORS
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogStartInput.ulSampleRate">
            Sample rate in milliseconds
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogStartInput.iReserved">
            Reserved
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogStartOutput.pLoggingAddress">
            Pointer to memory address containing logging data
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogData.ulVersion">
            Structure version
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogData.ulActiveSampleRate">
            Current driver sample rate
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogData.ulLastUpdated">
            Timestamp of last update
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLPMLogData.ulReserved">
            Reserved
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iMemorySize">
            Memory size in bytes.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.strMemoryType">
            Memory type in string.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iMemoryBandwidth">
            Highest default performance level Memory bandwidth in Mbytes/s
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iHyperMemorySize">
            HyperMemory size in bytes.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iInvisibleMemorySize">
            Invisible Memory size in bytes.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iVisibleMemorySize">
            Visible Memory size in bytes.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iVramVendorRevId">
            Vram vendor ID
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iMemoryBandwidthX2">
            Memory Bandiwidth that is calculated and finalized on the driver side, grab and go.
        </member>
        <member name="F:LibreHardwareMonitor.Interop.AtiAdlxx.ADLMemoryInfoX4.iMemoryBitRateX2">
            Memory Bit Rate that is calculated and finalized on the driver side, grab and go.
        </member>
        <member name="T:LibreHardwareMonitor.Interop.IntelGcl.ctl_adapter_properties_flag_t">
            <summary>
            Adapter properties flags from ctl_adapter_properties_flags_t.
            The graphics_adapter_properties field is a bitmask of these values.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Success">
            <summary>
            The operation was successful
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Uninitialized">
            <summary>
            NvidiaML was not first initialized with nvmlInit()
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InvalidArgument">
            <summary>
            A supplied argument is invalid
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NotSupported">
            <summary>
            The requested operation is not available on target device
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NoPermission">
            <summary>
            The current user does not have permission for operation
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.NotFound">
            <summary>
            A query to find an object was unsuccessful
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InsufficientSize">
            <summary>
            An input argument is not large enough
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InsufficientPower">
            <summary>
            A device's external power cables are not properly attached
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.DriverNotLoaded">
            <summary>
            NVIDIA driver is not loaded
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.TimeOut">
            <summary>
            User provided timeout passed
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.IRQIssue">
            <summary>
            NVIDIA Kernel detected an interrupt issue with a GPU
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.LibraryNotFound">
            <summary>
            NvidiaML Shared Library couldn't be found or loaded
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.FunctionNotFound">
            <summary>
            Local version of NvidiaML doesn't implement this function
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.CorruptedInfoRom">
            <summary>
            infoROM is corrupted
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.GpuIsLost">
            <summary>
            The GPU has fallen off the bus or has otherwise become inaccessible
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.ResetRequired">
            <summary>
            The GPU requires a reset before it can be used again
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.OperatingSystem">
            <summary>
            The GPU control device has been blocked by the operating system/cgroups
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.LibRmVersionMismatch">
            <summary>
            RM detects a driver/library version mismatch
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.InUse">
            <summary>
            An operation cannot be performed because the GPU is currently in use
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Interop.NvidiaML.NvmlReturn.Unknown">
            <summary>
            An public driver error occurred
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder">
            <summary>
            Helper class to find STM32 COM ports based on VID and PID.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.UInt32,System.UInt32)">
            <summary>
            Finds the names of all available COM ports that match the specified USB vendor ID (VID) and product ID (PID).
            </summary>
            <param name="vid">The USB vendor ID to match.</param>
            <param name="pid">The USB product ID to match.</param>
            <returns>
            A list of strings containing the names of matching COM ports.<br />
            The list is empty if no matching ports are found.
            </returns>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.String,System.String)">
            <summary>
                <inheritdoc cref="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.UInt32,System.UInt32)" />
            </summary>
            <param name="vid">
                <inheritdoc cref="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.UInt32,System.UInt32)" />
            </param>
            <param name="pid">
                <inheritdoc cref="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.UInt32,System.UInt32)" />
            </param>
            <returns>
                <inheritdoc cref="M:LibreHardwareMonitor.Interop.PowerMonitor.Stm32PortFinder.FindMatchingComPorts(System.UInt32,System.UInt32)" />
            </returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IsaBridgeEc.Log(System.String)">
            <summary>
            Writes a debug message to both the output window and a log file when ISA_BRIDGE_EC_DEBUG is defined.
            </summary>
            <remarks>The log entry is timestamped and appended to the file
            'PawnIo_IsaBridgeEc_DebugLog.txt' in the application's working directory. This method only produces output
            when compiled with the ISA_BRIDGE_EC_DEBUG symbol defined.</remarks>
            <param name="message">The message to log. This should provide relevant information for debugging purposes.</param>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.PawnIo.IsInstalled">
            <summary>
            Gets a value indicating whether PawnIO is installed on the system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.PawnIo.Version">
            <summary>
            Retrieves the version information for the installed PawnIO.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.PawnIo.IsLoaded">
            <summary>
            Gets a value indicating whether the underlying handle is currently valid and open.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Software.OperatingSystem">
            <summary>
            Contains basic information about the operating system.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Software.OperatingSystem.#cctor">
            <summary>
            Statically checks if the current system <see cref="P:LibreHardwareMonitor.Software.OperatingSystem.Is64Bit"/> and <see cref="P:LibreHardwareMonitor.Software.OperatingSystem.IsUnix"/>.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Software.OperatingSystem.Is64Bit">
            <summary>
            Gets information about whether the current system is 64 bit.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Software.OperatingSystem.IsUnix">
            <summary>
            Gets information about whether the current system is Unix based.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Software.OperatingSystem.IsWindows8OrGreater">
            <summary>
            Returns true if the current system is Windows 8 or a more recent Windows version
            </summary>
        </member>
        <member name="P:Windows.Wdk.__char_32.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__char_32.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="M:Windows.Wdk.__char_32.ToString(System.Int32)">
            <summary>
            Copies the fixed array to a new string up to the specified length regardless of whether there are null terminating characters.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown when <paramref name="length"/> is less than <c>0</c> or greater than <see cref="P:Windows.Wdk.__char_32.Length"/>.
            </exception>
        </member>
        <member name="M:Windows.Wdk.__char_32.ToString">
            <summary>
            Copies the fixed array to a new string, stopping before the first null terminator character or at the end of the fixed array (whichever is shorter).
            </summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.RenderSupported">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.DisplaySupported">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.SoftwareDevice">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.PostDevice">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.HybridDiscrete">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.HybridIntegrated">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.IndirectDisplayDevice">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.Paravirtualized">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.ACGSupported">
            <summary>Gets or sets bit 8 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.SupportSetTimingsFromVidPn">
            <summary>Gets or sets bit 9 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.Detachable">
            <summary>Gets or sets bit 10 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.ComputeOnly">
            <summary>Gets or sets bit 11 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.Prototype">
            <summary>Gets or sets bit 12 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.RuntimePowerManagement">
            <summary>Gets or sets bit 13 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct.Reserved">
            <summary>Gets or sets bits 14-31 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_ADAPTERTYPE._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..262143].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.NumberOfMemoryGroups">
            <summary>Gets or sets bits 0-1 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.SupportsDemotion">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.Reserved">
            <summary>Gets or sets bits 3-63 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..2305843009213693951].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.__D3DKMT_QUERYSTATISTICS_COUNTER_5.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.__D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION_4.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.__D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION_8.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct.PreservedDuringStandby">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct.PreservedDuringHibernate">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct.PartiallyPreservedDuringHibernate">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct.Reserved">
            <summary>Gets or sets bits 3-63 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._PowerFlags_e__Struct._bitfield" /> field. Allowed values are [0..2305843009213693951].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct.SystemMemory">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct.PopulatedByReservedDDRByFirmware">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct.SegmentType">
            <summary>Gets or sets bits 2-5 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct.Reserved">
            <summary>Gets or sets bits 6-63 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION._SegmentProperties_e__Struct._bitfield" /> field. Allowed values are [0..288230376151711743].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.ContextSchedulingSupported">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.RingBufferFenceRelease">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.SupportTrackedWorkload">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.UserModeSubmission">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.Reserved">
            <summary>Gets or sets bits 4-15 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..4095].</summary>
        </member>
        <member name="P:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct.MaxInFlightHwQueueBuffers">
            <summary>Gets or sets bits 16-31 in the <see cref="F:Windows.Wdk.Graphics.Direct3D.DXGK_NODEMETADATA_FLAGS._Anonymous_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..65535].</summary>
        </member>
        <member name="T:Windows.Wdk.PInvoke">
            <content>
            Contains extern methods from "GDI32.dll".
            </content>
            <content>
            Contains extern methods from "ntdll.dll".
            </content>
        </member>
        <member name="M:Windows.Wdk.PInvoke.D3DKMTCloseAdapter(Windows.Wdk.Graphics.Direct3D.D3DKMT_CLOSEADAPTER@)">
            <inheritdoc cref="M:Windows.Wdk.PInvoke.D3DKMTCloseAdapter(Windows.Wdk.Graphics.Direct3D.D3DKMT_CLOSEADAPTER*)"/>
        </member>
        <member name="M:Windows.Wdk.PInvoke.D3DKMTOpenAdapterFromDeviceName(Windows.Wdk.Graphics.Direct3D.D3DKMT_OPENADAPTERFROMDEVICENAME@)">
            <inheritdoc cref="M:Windows.Wdk.PInvoke.D3DKMTOpenAdapterFromDeviceName(Windows.Wdk.Graphics.Direct3D.D3DKMT_OPENADAPTERFROMDEVICENAME*)"/>
        </member>
        <member name="M:Windows.Wdk.PInvoke.D3DKMTQueryAdapterInfo(Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYADAPTERINFO@)">
            <inheritdoc cref="M:Windows.Wdk.PInvoke.D3DKMTQueryAdapterInfo(Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYADAPTERINFO*)"/>
        </member>
        <member name="M:Windows.Wdk.PInvoke.D3DKMTQueryStatistics(Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS@)">
            <inheritdoc cref="M:Windows.Wdk.PInvoke.D3DKMTQueryStatistics(Windows.Wdk.Graphics.Direct3D.D3DKMT_QUERYSTATISTICS*)"/>
        </member>
        <member name="M:Windows.Wdk.PInvoke.NtQuerySystemInformation(Windows.Wdk.System.SystemInformation.SYSTEM_INFORMATION_CLASS,System.Void*,System.UInt32,System.UInt32@)">
            <inheritdoc cref="M:Windows.Wdk.PInvoke.NtQuerySystemInformation(Windows.Wdk.System.SystemInformation.SYSTEM_INFORMATION_CLASS,System.Void*,System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Wdk.PInvoke.NtQuerySystemInformation(Windows.Wdk.System.SystemInformation.SYSTEM_INFORMATION_CLASS,System.Void*,System.UInt32,System.UInt32*)">
            <summary>Retrieves the specified system information.</summary>
            <param name="SystemInformationClass">
            <para>One of the values enumerated in SYSTEM_INFORMATION_CLASS, which indicate the kind of system information to be retrieved. These include the following values.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winternl/nf-winternl-ntquerysysteminformation#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="SystemInformation">
            <para>A pointer to a buffer that receives the requested information. The size and structure of this information varies depending on the value of the <i>SystemInformationClass</i> parameter:</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winternl/nf-winternl-ntquerysysteminformation#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="SystemInformationLength">The size of the buffer pointed to by the <i>SystemInformation</i> parameter, in bytes.</param>
            <param name="ReturnLength">
            <para>An optional pointer to a location where the function  writes the actual size of the information requested. If that size is less than or equal to the <i>SystemInformationLength</i> parameter, the function copies the information into the <i>SystemInformation</i> buffer; otherwise, it returns an NTSTATUS error code and returns in <i>ReturnLength</i> the size of buffer required to receive the requested information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winternl/nf-winternl-ntquerysysteminformation#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Returns an  NTSTATUS success or error code. The forms and significance of NTSTATUS error codes are listed in the Ntstatus.h header file available in the DDK, and are described in the DDK documentation.</para>
            </returns>
            <remarks>
            <para>The <b>NtQuerySystemInformation</b> function and the structures that it returns are internal to the operating system and  subject to change from one  release of Windows to another.  To maintain the    compatibility of your application, it is better to use the alternate functions previously mentioned instead. If you do use <b>NtQuerySystemInformation</b>, access the function through <a href="https://docs.microsoft.com/windows/desktop/Dlls/using-run-time-dynamic-linking">run-time dynamic linking</a>.  This gives  your code an opportunity to respond gracefully if the function has been   changed or removed from the operating system. Signature changes, however, may not be detectable. This function has no associated import library. You must use the <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya">LoadLibrary</a> and <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getprocaddress">GetProcAddress</a> functions to dynamically link to Ntdll.dll.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winternl/nf-winternl-ntquerysysteminformation#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="P:Windows.Wdk.__uint_16.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__uint_16.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__uint_3.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__uint_3.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_7.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_7.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_5.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_5.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_8.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_8.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_4.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_4.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_9.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Wdk.__ulong_9.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Power.BATTERY_INFORMATION">
            <summary>Contains battery information.</summary>
            <remarks>Generally, a warning state occurs before a low state, but you should not assume it will. It is possible to poll a battery and find that neither alert level has occurred, and poll the battery again and find it discharged to the extent that both levels have been achieved. This may indicate that you are not polling often enough. It may also indicate that the battery is unable to hold a charge for very long and is discharging more rapidly than you expected. Such a battery may be nearing the end of its useful life, or it may be damaged.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.Capabilities">
            <summary>
            <para>The battery capabilities. This member can be one or more of the following values.</para>
            <para>| Value                                                                                                                                                                                                                                                                                 | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <span id="BATTERY_CAPACITY_RELATIVE"></span><span id="battery_capacity_relative"></span><dl> <dt>**BATTERY\_CAPACITY\_RELATIVE**</dt> <dt>0x40000000</dt> </dl>                    | Indicates that the battery capacity and rate information are relative, and not in any specific units. If this bit is not set, the reporting units are milliwatt-hours (mWh) for capacity and milliwatts (mW) for rate. If this bit is set, all references to units in the other battery documentation can be ignored. All rate information is reported in units per hour. For example, if the fully charged capacity is reported as 100, a rate of 200 indicates that the battery will use all of its capacity in half an hour.<br/> | | <span id="BATTERY_IS_SHORT_TERM"></span><span id="battery_is_short_term"></span><dl> <dt>**BATTERY\_IS\_SHORT\_TERM**</dt> <dt>0x20000000</dt> </dl>                               | Indicates that the normal operation is for a fail-safe function. If this bit is not set the battery is expected to be used during normal system usage.<br/>                                                                                                                                                                                                                                                                                                                                                                          | | <span id="BATTERY_SET_CHARGE_SUPPORTED"></span><span id="battery_set_charge_supported"></span><dl> <dt>**BATTERY\_SET\_CHARGE\_SUPPORTED**</dt> <dt>0x00000001</dt> </dl>          | Indicates that set information requests of the type BatteryCharge are supported by this battery device.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                         | | <span id="BATTERY_SET_DISCHARGE_SUPPORTED"></span><span id="battery_set_discharge_supported"></span><dl> <dt>**BATTERY\_SET\_DISCHARGE\_SUPPORTED**</dt> <dt>0x00000002</dt> </dl> | Indicates that set information requests of the type BatteryDischarge are supported by this battery device.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                      | | <span id="BATTERY_SYSTEM_BATTERY"></span><span id="battery_system_battery"></span><dl> <dt>**BATTERY\_SYSTEM\_BATTERY**</dt> <dt>0x80000000</dt> </dl>                             | Indicates that the battery can provide general power to run the system.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                         |</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.Technology">
            <summary>
            <para>The battery technology. This member can be one of the following values.</para>
            <para>| Value                                                                        | Meaning                                                    | |------------------------------------------------------------------------------|------------------------------------------------------------| | <dl> <dt>0</dt> </dl> | Nonrechargeable battery, for example, alkaline.<br/> | | <dl> <dt>1</dt> </dl> | Rechargeable battery, for example, lead acid.<br/>   |</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.Reserved">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.Chemistry">
            <summary>
            <para>An abbreviated character string that indicates the battery's chemistry. This string is not necessarily zero-terminated. The following is a partial list of abbreviations that can be returned and the associated chemistries.</para>
            <para>| Unicode string                                                                                                                                           | Meaning                                    | |----------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------| | <span id="PbAc"></span><span id="pbac"></span><span id="PBAC"></span><dl> <dt>**PbAc**</dt> </dl> | Lead Acid<br/>                       | | <span id="LION"></span><span id="lion"></span><dl> <dt>**LION**</dt> </dl>                        | Lithium Ion<br/>                     | | <span id="Li-I"></span><span id="li-i"></span><span id="LI-I"></span><dl> <dt>**Li-I**</dt> </dl> | Lithium Ion<br/>                     | | <span id="NiCd"></span><span id="nicd"></span><span id="NICD"></span><dl> <dt>**NiCd**</dt> </dl> | Nickel Cadmium<br/>                  | | <span id="NiMH"></span><span id="nimh"></span><span id="NIMH"></span><dl> <dt>**NiMH**</dt> </dl> | Nickel Metal Hydride<br/>            | | <span id="NiZn"></span><span id="nizn"></span><span id="NIZN"></span><dl> <dt>**NiZn**</dt> </dl> | Nickel Zinc<br/>                     | | <span id="RAM"></span><span id="ram"></span><dl> <dt>**RAM**</dt> </dl>                           | Rechargeable Alkaline-Manganese<br/> |</para>
            <para>Other chemistries may appear in the future and your code should be able to handle them.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.DesignedCapacity">
            <summary>The theoretical capacity of the battery when new, in mWh unless BATTERY\_CAPACITY\_RELATIVE is set. In that case, the units are undefined.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.FullChargedCapacity">
            <summary>The battery's current fully charged capacity in mWh (or relative). Compare this value to **DesignedCapacity** to estimate the battery's wear.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.DefaultAlert1">
            <summary>The manufacturer's suggested capacity, in mWh, at which a low battery alert should occur. Definitions of low vary from manufacturer to manufacturer. In general, a warning state will occur before a low state, but you should not assume that it always will. To reduce risk of data loss, this value is usually used as the default setting for the critical battery alarm.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.DefaultAlert2">
            <summary>The manufacturer's suggested capacity, in mWh, at which a warning battery alert should occur. Definitions of warning vary from manufacturer to manufacturer. In general, a warning state will occur before a low state, but you should not assume that it always will. To reduce risk of data loss, this value is usually used as the default setting for the low battery alarm.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.CriticalBias">
            <summary>A bias from zero, in mWh, which is applied to battery reporting. Some batteries reserve a small charge that is biased out of the battery's capacity values to show "0" as the critical battery level. Critical bias is analogous to setting a fuel gauge to show "empty" when there are several liters of fuel left.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_INFORMATION.CycleCount">
            <summary>The number of charge/discharge cycles the battery has experienced. This provides a means to determine the battery's wear. If the battery does not support a cycle counter, this member is zero.</summary>
        </member>
        <member name="T:Windows.Win32.System.Power.BATTERY_QUERY_INFORMATION">
            <summary>Contains battery query information.</summary>
            <remarks>Some information about batteries is optional or may be meaningless for some batteries. If the particular type of data requested is not available for the current battery, then ERROR\_INVALID\_FUNCTION is returned.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_QUERY_INFORMATION.BatteryTag">
            <summary>
            <para>The current battery tag for the battery. Only information for a battery matching the tag can be returned. Whenever this value does not match the battery's current tag, the IOCTL request will be completed with ERROR\_FILE\_NOT\_FOUND. This indicates to the caller that the battery associated with the tag longer exists. The caller may opt to use the [**IOCTL\_BATTERY\_QUERY\_TAG**](ioctl-battery-query-tag.md) operation to determine the tag of the newly installed battery, if one exists. (See [Battery Tags](battery-information.md) for more information.) When a query information request is made, this value is verified. In addition, if the request is in progress while this value changes, the request is aborted with the status of ERROR\_FILE\_NOT\_FOUND.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-query-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_QUERY_INFORMATION.InformationLevel">
            <summary>
            <para>The level of the battery information being queried. The data returned by the IOCTL depends on this value. This member can be one of the following values.</para>
            <para>| Value                                                                                                                                                                                                                                                                                                               | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <span id="BatteryDeviceName"></span><span id="batterydevicename"></span><span id="BATTERYDEVICENAME"></span><dl> <dt>**BatteryDeviceName**</dt> <dt>4</dt> </dl>                                                 | Null-terminated Unicode string that contains the battery's name.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | | <span id="BatteryEstimatedTime"></span><span id="batteryestimatedtime"></span><span id="BATTERYESTIMATEDTIME"></span><dl> <dt>**BatteryEstimatedTime**</dt> <dt>3</dt> </dl>                                     | A **ULONG** that specifies the estimated battery run time, in seconds. If the rate of drain provided in the **AtRate** member of the **BATTERY\_QUERY\_INFORMATION** structure is zero, this calculation is based on the present rate of drain. If **AtRate** is nonzero, the time returned is the expected run time for the given rate. If the estimated time is unknown (for example, the battery is not discharging and the **AtRate** specified was zero), the return value is BATTERY\_UNKNOWN\_TIME. Note that this value is not very accurate on some battery systems, and may vary widely depending on present power usage, which could be affected by disk activity and other factors. There is no notification mechanism for changes in this value.<br/> | | <span id="BatteryGranularityInformation"></span><span id="batterygranularityinformation"></span><span id="BATTERYGRANULARITYINFORMATION"></span><dl> <dt>**BatteryGranularityInformation**</dt> <dt>1</dt> </dl> | An array of [**BATTERY\_REPORTING\_SCALE**](/windows/desktop/api/WinNT/ns-winnt-battery_reporting_scale) structures, never more than four entries.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | <span id="BatteryInformation"></span><span id="batteryinformation"></span><span id="BATTERYINFORMATION"></span><dl> <dt>**BatteryInformation**</dt> <dt>0</dt> </dl>                                             | A [**BATTERY\_INFORMATION**](battery-information-str.md) structure.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | | <span id="BatteryManufactureDate"></span><span id="batterymanufacturedate"></span><span id="BATTERYMANUFACTUREDATE"></span><dl> <dt>**BatteryManufactureDate**</dt> <dt>5</dt> </dl>                             | A [**BATTERY\_MANUFACTURE\_DATE**](battery-manufacture-date-str.md) structure.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | <span id="BatteryManufactureName"></span><span id="batterymanufacturename"></span><span id="BATTERYMANUFACTURENAME"></span><dl> <dt>**BatteryManufactureName**</dt> <dt>6</dt> </dl>                             | Null-terminated Unicode string that specifies the name of the manufacturer of the battery.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | | <span id="BatterySerialNumber"></span><span id="batteryserialnumber"></span><span id="BATTERYSERIALNUMBER"></span><dl> <dt>**BatterySerialNumber**</dt> <dt>8</dt> </dl>                                         | Null-terminated Unicode string that specifies the battery's serial number.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | | <span id="BatteryTemperature"></span><span id="batterytemperature"></span><span id="BATTERYTEMPERATURE"></span><dl> <dt>**BatteryTemperature**</dt> <dt>2</dt> </dl>                                             | A **ULONG** that specifies the battery's current temperature, in 10ths of a degree Kelvin.<br/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | | <span id="BatteryUniqueID"></span><span id="batteryuniqueid"></span><span id="BATTERYUNIQUEID"></span><dl> <dt>**BatteryUniqueID**</dt> <dt>7</dt> </dl>                                                         | Null-terminated Unicode string that uniquely identifies the battery. This value can be used to track a specific battery. In the case of smart batteries, this ID would be the concatenation of the manufacturer's name, device name, date of manufacture, and a printable representation of the serial number. <br/> This value is not intended to be displayed to the user.<br/>                                                                                                                                                                                                                                                                                                                                                                            |</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-query-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_QUERY_INFORMATION.AtRate">
            <summary>
            <para>This member is used only if **InformationLevel** is BatteryEstimatedTime. If this member is nonzero, it is a rate of drain that will be used to calculate the time until the battery is discharged for the BatteryEstimatedTime of an individual battery. It must be specified in mW, and must be a negative value to represent a battery discharge rate.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-query-information-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Power.BATTERY_STATUS">
            <summary>Contains the current state of the battery.</summary>
            <remarks>The BATTERY\_CRITICAL flag in the **PowerState** member of this structure indicates a hardware "battery critical" condition. This critical level is set by the battery manufacturer, not by the user in the "critical battery alarm." It generally means that the battery system has calculated that the battery is totally drained, and any power being drawn is beyond what is expected.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_STATUS.PowerState">
            <summary>
            <para>The battery state. This member can be zero, one, or more of the following values.</para>
            <para>| Value                                                                                                                                                                                                                                                   | Meaning                                                                                              | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | <span id="BATTERY_CHARGING"></span><span id="battery_charging"></span><dl> <dt>**BATTERY\_CHARGING**</dt> <dt>0x00000004</dt> </dl>                  | Indicates that the battery is currently charging.<br/>                                         | | <span id="BATTERY_CRITICAL"></span><span id="battery_critical"></span><dl> <dt>**BATTERY\_CRITICAL**</dt> <dt>0x00000008</dt> </dl>                  | Indicates that battery failure is imminent. See the Remarks section for more information.<br/> | | <span id="BATTERY_DISCHARGING"></span><span id="battery_discharging"></span><dl> <dt>**BATTERY\_DISCHARGING**</dt> <dt>0x00000002</dt> </dl>         | Indicates that the battery is currently discharging.<br/>                                      | | <span id="BATTERY_POWER_ON_LINE"></span><span id="battery_power_on_line"></span><dl> <dt>**BATTERY\_POWER\_ON\_LINE**</dt> <dt>0x00000001</dt> </dl> | Indicates that the system has access to AC power, so no batteries are being discharged.<br/>   |</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-status-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_STATUS.Capacity">
            <summary>The current battery capacity, in mWh (or relative). This value can be used to generate a "gas gauge" display by dividing it by **FullChargedCapacity** member of the [**BATTERY\_INFORMATION**](battery-information-str.md) structure. If the capacity is unavailable, this member is BATTERY\_UNKNOWN\_CAPACITY.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_STATUS.Voltage">
            <summary>The current battery voltage across the battery terminals, in millivolts (mv). If the voltage is unavailable, this member is BATTERY\_UNKNOWN\_VOLTAGE.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_STATUS.Rate">
            <summary>The current rate of battery charge or discharge. This value will be in milliwatts unless the battery rate information is relative, in which case it will be in arbitrary units per hour. To determine if battery information is relative, examine the BATTERY\_CAPACITY\_RELATIVE flag in the **Capabilities** member of the [**BATTERY\_INFORMATION**](battery-information-str.md) structure. A nonzero, positive rate indicates charging; a negative rate indicates discharging. Some batteries report only discharging rates. If the rate is unavailable, this member is BATTERY\_UNKNOWN\_RATE. If the state of the battery or power source changes, the rate may become available.</summary>
        </member>
        <member name="T:Windows.Win32.System.Power.BATTERY_WAIT_STATUS">
            <summary>Contains information about the conditions under which the battery status is to be retrieved.</summary>
            <remarks>
            <para>Requests for battery information are postponed until one of the following occurs: -   The time-out expires (assuming **Timeout** is not -1). -   The battery's current status does not match **PowerState**. -   The battery's capacity is below **LowCapacity**. -   The battery's capacity is above **HighCapacity**. -   The battery tag changes. When any one of these conditions is satisfied, the data is collected and the operation returns. This allows applications to monitor typical dynamic battery information without polling the device. Before using either of the two Capacity conditions, make sure the battery supports them by using the [**IOCTL\_BATTERY\_QUERY\_STATUS**](ioctl-battery-query-status.md) control code with a time-out of zero. Examine the results to determine if the **Capacity** member is supported (that is, not BATTERY\_UNKNOWN\_CAPACITY).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-wait-status-str#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_WAIT_STATUS.BatteryTag">
            <summary>The current battery tag for the battery. Only information for a battery matching the tag can be returned. Whenever this value does not match the battery's current tag, the [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) operation will fail with an error code of ERROR\_FILE\_NOT\_FOUND, which indicates to the caller that the battery for which it has a tag is no longer installed The caller may opt to use the [**IOCTL\_BATTERY\_QUERY\_TAG**](ioctl-battery-query-tag.md) operation to determine the tag of the newly installed battery, if any. In addition, if the request is in progress when the battery is removed, or the tag changes, the operation is aborted with the status of ERROR\_FILE\_NOT\_FOUND. (See [Battery Tags](battery-information.md) for more information.)</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_WAIT_STATUS.Timeout">
            <summary>
            <para>The number of milliseconds the request will wait for the condition specified by the **PowerState**, **LowCapacity**, and **HighCapacity** members before completing. A value of -1 indicates that the request will wait indefinitely for the conditions to be satisfied. A value of zero indicates that the requested battery information is to be returned immediately, regardless of the other conditions. Any other value indicates that the request should wait that length of time, or until any one of the other conditions is satisfied. If the computer has entered sleep mode, the clock will continue to run, but exhausting the count will not wake the computer up. If the count is exhausted when the computer is awoken, and other conditions are satisfied, the call will return immediately on awakening.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-wait-status-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_WAIT_STATUS.PowerState">
            <summary>
            <para>Zero, one, or more of the following status bits, which indicate the state of the battery. It is identical to the **PowerState** member of the [**BATTERY\_STATUS**](battery-status-str.md) structure.</para>
            <para>| Value                                                                                                                                                                                                                                                   | Meaning                                                                                              | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | <span id="BATTERY_CHARGING"></span><span id="battery_charging"></span><dl> <dt>**BATTERY\_CHARGING**</dt> <dt>0x00000004</dt> </dl>                  | Indicates that the battery is currently charging.<br/>                                         | | <span id="BATTERY_CRITICAL"></span><span id="battery_critical"></span><dl> <dt>**BATTERY\_CRITICAL**</dt> <dt>0x00000008</dt> </dl>                  | Indicates that battery failure is imminent. See the Remarks section for more information.<br/> | | <span id="BATTERY_DISCHARGING"></span><span id="battery_discharging"></span><dl> <dt>**BATTERY\_DISCHARGING**</dt> <dt>0x00000002</dt> </dl>         | Indicates that the battery is currently discharging.<br/>                                      | | <span id="BATTERY_POWER_ON_LINE"></span><span id="battery_power_on_line"></span><dl> <dt>**BATTERY\_POWER\_ON\_LINE**</dt> <dt>0x00000001</dt> </dl> | Indicates that the battery has access to AC power.<br/>                                        |</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/battery-wait-status-str#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_WAIT_STATUS.LowCapacity">
            <summary>The current battery capacity, in mWh (or relative). This value is identical to the **Capacity** member of the [**BATTERY\_STATUS**](battery-status-str.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Power.BATTERY_WAIT_STATUS.HighCapacity">
            <summary>The current battery capacity, in mWh (or relative). This value is identical to the **Capacity** member of the [**BATTERY\_STATUS**](battery-status-str.md) structure.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.DISK_PERFORMANCE">
            <summary>Provides disk performance information.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-disk_performance">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.BytesRead">
            <summary>The number of bytes read.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.BytesWritten">
            <summary>The number of bytes written.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.ReadTime">
            <summary>The time it takes to complete a read.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.WriteTime">
            <summary>The time it takes to complete a write.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.IdleTime">
            <summary>The idle time.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.ReadCount">
            <summary>The number of read operations.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.WriteCount">
            <summary>The number of write operations.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.QueueDepth">
            <summary>The depth of the queue.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.SplitCount">
            <summary>
            <para>The cumulative count of I/Os that are associated I/Os. An associated I/O is a fragmented I/O, where multiple I/Os to a disk are required to fulfill the original logical I/O request. The most common example of this scenario is a file that is fragmented on a disk. The multiple I/Os are counted as split I/O counts.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-disk_performance#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.QueryTime">
            <summary>
            <para>The system time stamp when a query for this structure is returned. Use this member to synchronize between the file system driver and a caller.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-disk_performance#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.StorageDeviceNumber">
            <summary>The unique number for a device that identifies it to the storage manager that is indicated in the <b>StorageManagerName</b> member.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.DISK_PERFORMANCE.StorageManagerName">
            <summary>
            <para>The name of the storage manager that controls this device. Examples of storage managers are "PhysDisk," "FTDISK," and "DMIO".</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-disk_performance#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.SystemInformation.GROUP_AFFINITY">
            <summary>Represents a processor group-specific affinity, such as the affinity of a thread.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winnt/ns-winnt-group_affinity">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.GROUP_AFFINITY.Mask">
            <summary>A bitmap that specifies the affinity for zero or more processors within the specified group.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.GROUP_AFFINITY.Group">
            <summary>The processor group number.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.GROUP_AFFINITY.Reserved">
            <summary>This member is reserved.</summary>
        </member>
        <member name="T:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX">
            <summary>Contains information about the current state of both physical and virtual memory, including extended memory.</summary>
            <remarks>
            <para><b>MEMORYSTATUSEX</b> reflects the state of memory at the time of the call. It also reflects the size of the paging file at that time. The operating system can enlarge the paging file up to the maximum size set by the administrator. The physical memory sizes returned include the memory from all nodes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.dwLength">
            <summary>
            <para>The size of the structure, in bytes. You must set this member before calling <a href="https://docs.microsoft.com/windows/desktop/api/sysinfoapi/nf-sysinfoapi-globalmemorystatusex">GlobalMemoryStatusEx</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.dwMemoryLoad">
            <summary>A number between 0 and 100 that specifies the approximate percentage of physical memory that is in use (0 indicates no memory use and 100 indicates full memory use).</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullTotalPhys">
            <summary>The amount of actual physical memory, in bytes.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullAvailPhys">
            <summary>The amount of physical memory currently available, in bytes. This is the amount of physical memory that can be immediately reused without having to write its contents to disk first. It is the sum of the size of the standby, free, and zero lists.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullTotalPageFile">
            <summary>The current committed memory limit for the system or the current process, whichever is smaller, in bytes. To get the system-wide committed memory limit, call <a href="https://docs.microsoft.com/windows/desktop/api/psapi/nf-psapi-getperformanceinfo">GetPerformanceInfo</a>.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullAvailPageFile">
            <summary>The maximum amount of memory the current process can commit, in bytes. This value is equal to or smaller than the system-wide available commit value. To calculate the system-wide available commit value, call <a href="https://docs.microsoft.com/windows/desktop/api/psapi/nf-psapi-getperformanceinfo">GetPerformanceInfo</a> and subtract the value of <b>CommitTotal</b> from the value of <b>CommitLimit</b>.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullTotalVirtual">
            <summary>The size of the user-mode portion of the virtual address space of the calling process, in bytes. This value depends on the type of process, the type of processor, and the configuration of the operating system. For example, this value is approximately 2 GB for most 32-bit processes on an x86 processor and approximately 3 GB for 32-bit processes that are large address aware running on a system with <a href="https://docs.microsoft.com/windows/desktop/Memory/4-gigabyte-tuning">4-gigabyte tuning</a> enabled.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullAvailVirtual">
            <summary>The amount of unreserved and uncommitted memory currently in the user-mode portion of the virtual address space of the calling process, in bytes.</summary>
        </member>
        <member name="F:Windows.Win32.System.SystemInformation.MEMORYSTATUSEX.ullAvailExtendedVirtual">
            <summary>Reserved. This value is always 0.</summary>
        </member>
        <member name="T:Windows.Win32.Foundation.HRESULT">
            <remarks>
            <para>The **HRESULT** data type is the same as the [SCODE](scode.md) data type. An **HRESULT** value consists of the following fields: - A 1-bit code indicating severity, where zero represents success and 1 represents failure. - A 4-bit reserved value. - An 11-bit code indicating responsibility for the error or warning, also known as a facility code. - A 16-bit code describing the error or warning. Most MAPI interface methods and functions return **HRESULT** values to provide detailed cause formation. **HRESULT** values are also used widely in OLE interface methods. OLE provides several macros for converting between **HRESULT** values and **SCODE** values, another common data type for error handling. > [!NOTE] > In 64-bit MAPI, **HRESULT** is still a 32-bit value. For information about the OLE use of **HRESULT** values, see the  *OLE Programmer's Reference*. For more information about the use of these values in MAPI, see [Error Handling](error-handling-in-mapi.md) and any of the following interface methods: [IABLogon::GetLastError](iablogon-getlasterror.md) [IMAPISupport::GetLastError](imapisupport-getlasterror.md) [IMAPIControl::GetLastError](imapicontrol-getlasterror.md) [IMAPITable::GetLastError](imapitable-getlasterror.md) [IMAPIProp::GetLastError](imapiprop-getlasterror.md) [IMAPIViewAdviseSink::OnPrint](imapiviewadvisesink-onprint.md)</para>
            <para><see href="https://learn.microsoft.com/office/client-developer/outlook/mapi/hresult#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.Foundation.HRESULT.ThrowOnFailure(System.IntPtr)">
            <inheritdoc cref="M:System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(System.Int32,System.IntPtr)" />
            <param name="errorInfo">
            A pointer to the IErrorInfo interface that provides more information about the
            error. You can specify <see cref="F:System.IntPtr.Zero"/> to use the current IErrorInfo interface, or
            <c>new IntPtr(-1)</c> to ignore the current IErrorInfo interface and construct the exception
            just from the error code.
            </param>
            <returns><see langword="this"/> <see cref="T:Windows.Win32.Foundation.HRESULT"/>, if it does not reflect an error.</returns>
            <seealso cref="M:System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(System.Int32,System.IntPtr)"/>
        </member>
        <member name="T:Windows.Win32.Foundation.LUID">
            <summary>The LUID structure is an opaque structure that specifies an identifier that is guaranteed to be unique on the local machine. For more information, see the reference page for LUID in the Microsoft Windows SDK documentation.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntdef/ns-ntdef-luid">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="T:Windows.Win32.Foundation.PCSTR">
            <summary>
            A pointer to a null-terminated, constant, ANSI character string.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PCSTR.Value">
            <summary>
            A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PCSTR.Length">
            <summary>
            Gets the number of characters up to the first null character (exclusive).
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PCSTR.ToString">
            <summary>
            Returns a <see langword="string"/> with a copy of this character array, decoding as UTF-8.
            </summary>
            <returns>A <see langword="string"/>, or <see langword="null"/> if <see cref="F:Windows.Win32.Foundation.PCSTR.Value"/> is <see langword="null"/>.</returns>
        </member>
        <member name="M:Windows.Win32.Foundation.PCSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.PCWSTR">
            <summary>
            A pointer to a null-terminated, constant character string.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PCWSTR.Value">
            <summary>
            A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PCWSTR.Length">
            <summary>
            Gets the number of characters up to the first null character (exclusive).
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PCWSTR.ToString">
            <summary>
            Returns a <see langword="string"/> with a copy of this character array, up to the first null character (exclusive).
            </summary>
            <returns>A <see langword="string"/>, or <see langword="null"/> if <see cref="F:Windows.Win32.Foundation.PCWSTR.Value"/> is <see langword="null"/>.</returns>
        </member>
        <member name="M:Windows.Win32.Foundation.PCWSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.PCZZWSTR">
            <summary>
            A pointer to a constant, empty-string terminated list of null-terminated strings that uses UTF-16 encoding.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PCZZWSTR.Value">
            <summary>
            A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PCZZWSTR.Length">
            <summary>
            Gets the number of characters in this null-terminated string list, excluding the final null terminator.
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PCZZWSTR.ToString">
            <summary>
            Returns a <see langword="string"/> with a copy of this character array.
            </summary>
            <returns>A <see langword="string"/>, or <see langword="null"/> if <see cref="F:Windows.Win32.Foundation.PCZZWSTR.Value"/> is <see langword="null"/>.</returns>
        </member>
        <member name="M:Windows.Win32.Foundation.PCZZWSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string.
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PWSTR.ToString">
            <inheritdoc cref="M:Windows.Win32.Foundation.PCWSTR.ToString"/>
        </member>
        <member name="P:Windows.Win32.Foundation.PWSTR.Length">
            <inheritdoc cref="P:Windows.Win32.Foundation.PCWSTR.Length"/>
        </member>
        <member name="M:Windows.Win32.Foundation.PWSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.PZZWSTR">
            <summary>
            A pointer to an empty-string terminated list of null-terminated strings that uses UTF-16 encoding.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PZZWSTR.Value">
            <summary>
            A pointer to the first character in the string.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PZZWSTR.Length">
            <inheritdoc cref="P:Windows.Win32.Foundation.PCZZWSTR.Length"/>
        </member>
        <member name="M:Windows.Win32.Foundation.PZZWSTR.ToString">
            <inheritdoc cref="M:Windows.Win32.Foundation.PCZZWSTR.ToString"/>
        </member>
        <member name="M:Windows.Win32.Foundation.PZZWSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string.
            </summary>
        </member>
        <member name="P:Windows.Win32.__byte_3.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_3.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Win32.__byte_4.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_4.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="P:Windows.Win32.__char_8.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__char_8.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="M:Windows.Win32.__char_8.ToString(System.Int32)">
            <summary>
            Copies the fixed array to a new string up to the specified length regardless of whether there are null terminating characters.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown when <paramref name="length"/> is less than <c>0</c> or greater than <see cref="P:Windows.Win32.__char_8.Length"/>.
            </exception>
        </member>
        <member name="M:Windows.Win32.__char_8.ToString">
            <summary>
            Copies the fixed array to a new string, stopping before the first null terminator character or at the end of the fixed array (whichever is shorter).
            </summary>
        </member>
        <member name="T:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA">
            <summary>An SP_DEVICE_INTERFACE_DATA structure defines a device interface in a device information set.</summary>
            <remarks>A SetupAPI function that takes an instance of the SP_DEVICE_INTERFACE_DATA structure as a parameter verifies whether the <b>cbSize</b> member of the supplied structure is equal to the size, in bytes, of the structure. If the <b>cbSize</b> member is not set correctly, the function will fail and set an error code of ERROR_INVALID_USER_BUFFER.</remarks>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA.cbSize">
            <summary>The size, in bytes, of the SP_DEVICE_INTERFACE_DATA structure. For more information, see the Remarks section.</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA.InterfaceClassGuid">
            <summary>The GUID for the class to which the device interface belongs.</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA.Flags">
            <summary>Can be one or more of the following:</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA.Reserved">
            <summary>Reserved. Do not use.</summary>
        </member>
        <member name="T:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W">
            <summary>An SP_DEVICE_INTERFACE_DETAIL_DATA structure contains the path for a device interface. (Unicode)</summary>
            <remarks>
            <para>An SP_DEVICE_INTERFACE_DETAIL_DATA structure identifies the path for a device interface in a device information set. <b>SetupDi</b><i>Xxx</i> functions that take an SP_DEVICE_INTERFACE_DETAIL_DATA structure as a parameter verify that the <b>cbSize</b> member of the supplied structure is equal to the size, in bytes, of the structure. If the <b>cbSize</b> member is not set correctly for an input parameter, the function will fail and set an error code of ERROR_INVALID_PARAMETER. If the <b>cbSize</b> member is not set correctly for an output parameter, the function will fail and set an error code of ERROR_INVALID_USER_BUFFER.</para>
            <para>> [!NOTE] > The setupapi.h header defines SP_DEVICE_INTERFACE_DETAIL_DATA as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/ns-setupapi-sp_device_interface_detail_data_w#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W.cbSize">
            <summary>The size, in bytes, of the SP_DEVICE_INTERFACE_DETAIL_DATA structure. For more information, see the following Remarks section.</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W.DevicePath">
            <summary>A NULL-terminated string that contains the device interface path. This path can be passed to Win32 functions such as <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a>.</summary>
        </member>
        <member name="M:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W.SizeOf(System.Int32)">
            <summary>Computes the amount of memory that must be allocated to store this struct, including the specified number of elements in the variable length inline array at the end.</summary>
        </member>
        <member name="T:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA">
            <summary>An SP_DEVINFO_DATA structure defines a device instance that is a member of a device information set.</summary>
            <remarks>
            <para>An SP_DEVINFO_DATA structure identifies a device in a device information set. For example, when Windows sends a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/dif-installdevice">DIF_INSTALLDEVICE</a> request to a class installer and co-installers, it includes a handle to a device information set and a pointer to an SP_DEVINFO_DATA that specifies the particular device. In addition to DIF requests, this structure is also used in some <b>SetupDi</b><i>Xxx</i> functions. <b>SetupDi</b><i>Xxx</i> functions that take an SP_DEVINFO_DATA structure as a parameter verify that the <b>cbSize</b> member of the supplied structure is equal to the size, in bytes, of the structure. If the <b>cbSize</b> member is not set correctly for an input parameter, the function will fail and set an error code of ERROR_INVALID_PARAMETER. If the <b>cbSize</b> member is not set correctly for an output parameter, the function will fail and set an error code of ERROR_INVALID_USER_BUFFER.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/ns-setupapi-sp_devinfo_data#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA.cbSize">
            <summary>The size, in bytes, of the SP_DEVINFO_DATA structure. For more information, see the following Remarks section.</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA.ClassGuid">
            <summary>The GUID of the device's setup class.</summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA.DevInst">
            <summary>
            <para>An opaque handle to the device instance (also known as a handle to the <a href="https://docs.microsoft.com/windows-hardware/drivers/">devnode</a>). Some functions, such as <b>SetupDi</b><i>Xxx</i> functions, take the whole SP_DEVINFO_DATA structure as input to identify a device in a device information set. Other functions, such as <b>CM</b>_<i>Xxx</i> functions like <a href="https://docs.microsoft.com/windows/desktop/api/cfgmgr32/nf-cfgmgr32-cm_get_devnode_status">CM_Get_DevNode_Status</a>, take this <b>DevInst</b> handle as input.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/ns-setupapi-sp_devinfo_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA.Reserved">
            <summary>Reserved. For internal use only.</summary>
        </member>
        <member name="T:Windows.Win32.FreeLibrarySafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.FreeLibrary(Windows.Win32.Foundation.HMODULE)"/>.
            </summary>
        </member>
        <member name="P:Windows.Win32.__long_2.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__long_2.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="T:Windows.Win32.PInvoke">
            <content>
            Contains extern methods from "CFGMGR32.dll".
            </content>
            <content>
            Contains extern methods from "KERNEL32.dll".
            </content>
            <content>
            Contains macros.
            </content>
            <content>
            Contains extern methods from "SETUPAPI.dll".
            </content>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List_Size(System.UInt32@,System.Guid@,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List_Size(System.UInt32*,System.Guid*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List_Size(System.UInt32*,System.Guid*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)">
            <summary>The CM_Get_Device_Interface_List_Size function retrieves the buffer size that must be passed to the CM_Get_Device_Interface_List function. (Unicode)</summary>
            <param name="pulLen">
            <para>Caller-supplied pointer to a location that receives the required length, in characters, of a buffer to hold the multiple Unicode strings that will be returned by <b>CM_Get_Device_Interface_List</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="InterfaceClassGuid">
            <para>Supplies a GUID that identifies a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/overview-of-device-interface-classes">device interface class</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="pDeviceID">
            <para>Caller-supplied pointer to a NULL-terminated string that represents a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-instance-ids">device instance ID</a>. If specified, the function retrieves the length of symbolic link names for the device interfaces that are supported by the device, for the specified class. If this value is <b>NULL</b>, or if it points to a zero-length string, the function retrieves the length of symbolic link names for all interfaces that belong to the specified class.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="ulFlags">
            <para>Contains one of the following caller-supplied flags: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the operation succeeds, the function returns <b>CR_SUCCESS</b>. Otherwise, it returns one of the error codes with the <b>CR_</b> prefix as defined in Cfgmgr32.h.</para>
            </returns>
            <remarks>
            <para>> [!NOTE] > The cfgmgr32.h header defines CM_Get_Device_Interface_List_Size as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizew#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List(System.Guid@,Windows.Win32.Foundation.PWSTR,Windows.Win32.Foundation.PZZWSTR,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List(System.Guid*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Foundation.PZZWSTR,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_Device_Interface_List(System.Guid*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Foundation.PZZWSTR,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_GET_DEVICE_INTERFACE_LIST_FLAGS)">
            <summary>The CM_Get_Device_Interface_List function retrieves a list of device interface instances that belong to a specified device interface class. (Unicode)</summary>
            <param name="InterfaceClassGuid">Supplies a GUID that identifies a device interface class.</param>
            <param name="pDeviceID">Caller-supplied pointer to a NULL-terminated string that represents a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-instance-ids">device instance ID</a>. If specified, the function retrieves device interfaces that are supported by the device for the specified class. If this value is <b>NULL</b>, or if it points to a zero-length string, the function retrieves all interfaces that belong to the specified class.</param>
            <param name="Buffer">Caller-supplied pointer to a buffer that receives multiple, NULL-terminated Unicode strings, each representing the symbolic link name of an interface instance.</param>
            <param name="BufferLen">Caller-supplied value that specifies the length, in characters, of the buffer pointed to by <i>Buffer</i>. Call <a href="https://docs.microsoft.com/windows/desktop/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizea">CM_Get_Device_Interface_List_Size</a> to determine the required buffer size.</param>
            <param name="ulFlags">Contains one of the following caller-supplied flags:</param>
            <returns>
            <para>If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the error codes with the CR_ prefix as defined in <i>Cfgmgr32.h</i>. The following table includes some of the more common error codes that this function might return. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>Between calling <a href="https://docs.microsoft.com/windows/desktop/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_list_sizea">CM_Get_Device_Interface_List_Size</a> to get the size of the list and calling <b>CM_Get_Device_Interface_List</b> to get the list, a new device interface can be added to the system causing the size returned to no longer be valid.  Callers should be robust to that condition and retry getting the size and the list if <b>CM_Get_Device_Interface_List</b> returns <b>CR_BUFFER_SMALL</b>.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Locate_DevNode(System.UInt32@,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_LOCATE_DEVNODE_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CM_Locate_DevNode(System.UInt32*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_LOCATE_DEVNODE_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Locate_DevNode(System.UInt32*,Windows.Win32.Foundation.PWSTR,Windows.Win32.Devices.DeviceAndDriverInstallation.CM_LOCATE_DEVNODE_FLAGS)">
            <summary>The CM_Locate_DevNode function obtains a device instance handle to the device node that is associated with a specified device instance ID on the local machine. (Unicode)</summary>
            <param name="pdnDevInst">A pointer to a device instance handle that <b>CM_Locate_DevNode</b> retrieves. The retrieved handle is bound to the local machine.</param>
            <param name="pDeviceID">A pointer to a NULL-terminated string representing a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-instance-ids">device instance ID</a>. If this value is <b>NULL</b>, or if it points to a zero-length string, the function retrieves a device instance handle to the device at the root of the <a href="https://docs.microsoft.com/windows-hardware/drivers/kernel/device-tree">device tree</a>.</param>
            <param name="ulFlags">A variable of ULONG type that supplies one of the following flag values that apply if the caller supplies a device instance identifier:</param>
            <returns>If the operation succeeds, <b>CM_Locate_DevNode</b> returns CR_SUCCESS. Otherwise, the function returns one of the CR_<i>Xxx</i> error codes that are defined in <i>Cfgmgr32.h</i>.</returns>
            <remarks>
            <para>For information about using device instance handles that are bound to the local machine, see <a href="https://docs.microsoft.com/windows/desktop/api/cfgmgr32/nf-cfgmgr32-cm_get_child">CM_Get_Child</a>.</para>
            <para>> [!NOTE] > The cfgmgr32.h header defines CM_Locate_DevNode as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_locate_devnodew#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_DevNode_Property(System.UInt32,Windows.Win32.Foundation.DEVPROPKEY@,Windows.Win32.Devices.Properties.DEVPROPTYPE@,System.Span{System.Byte},System.UInt32@,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CM_Get_DevNode_Property(System.UInt32,Windows.Win32.Foundation.DEVPROPKEY*,Windows.Win32.Devices.Properties.DEVPROPTYPE*,System.Byte*,System.UInt32*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CM_Get_DevNode_Property(System.UInt32,Windows.Win32.Foundation.DEVPROPKEY*,Windows.Win32.Devices.Properties.DEVPROPTYPE*,System.Byte*,System.UInt32*,System.UInt32)">
            <summary>The CM_Get_DevNode_Property function retrieves a device instance property.</summary>
            <param name="dnDevInst">Device instance handle that is bound to the local machine.</param>
            <param name="PropertyKey">Pointer to a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/devpropkey">DEVPROPKEY</a> structure that represents the device property key of the requested device instance property.</param>
            <param name="PropertyType">Pointer to a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/property-data-type-identifiers">DEVPROPTYPE</a>-typed variable that receives the property-data-type identifier of the requested device instance property, where the property-data-type identifier is the bitwise OR between a base-data-type identifier and, if the base-data type is modified, a property-data-type modifier.</param>
            <param name="PropertyBuffer">Pointer to a buffer that receives the requested device instance property. <b>CM_Get_DevNode_Property</b> retrieves the requested property only if the buffer is large enough to hold all the property value data. The pointer can be NULL.</param>
            <param name="PropertyBufferSize">The size, in bytes, of the <i>PropertyBuffer</i> buffer. If <i>PropertyBuffer</i> is set to NULL, <i>*PropertyBufferSize</i> must be set to zero. As output, if the buffer is not large enough to hold all the property value data, <b>CM_Get_DevNode_Property</b> returns the size of the data, in bytes, in <i>*PropertyBufferSize</i>.</param>
            <param name="ulFlags">Reserved. Must be set to zero.</param>
            <returns>If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in <i>Cfgmgr32.h</i>.</returns>
            <remarks><b>CM_Get_DevNode_Property</b> is part of the <a href="https://docs.microsoft.com/windows-hardware/drivers/install/unified-device-property-model--windows-vista-and-later-">Unified Device Property Model</a>.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_CHECK_VERIFY">
            <summary>Determines whether media are accessible for a device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_check_verify">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_MEDIA_REMOVAL">
            <summary>Enables or disables the mechanism that ejects media, for those devices possessing that locking capability.</summary>
            <remarks>The **IOCTL_STORAGE_MEDIA_REMOVAL** control code is valid only for devices that support removable media.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_EJECT_MEDIA">
            <summary>Ejects media from a SCSI device.</summary>
            <remarks>**IOCTL_STORAGE_EJECT_MEDIA** may or may not be supported on SCSI devices that support removable media.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_LOAD_MEDIA">
            <summary>Loads media into a device.</summary>
            <remarks>The **IOCTL_STORAGE_LOAD_MEDIA** control code is valid only for devices that support loadable media.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_EJECTION_CONTROL">
            <summary>Enables or disables the mechanism that ejects media. Disabling the mechanism locks the drive.</summary>
            <remarks>The driver tracks **IOCTL_STORAGE_EJECTION_CONTROL** requests by caller. It ignores requests to enable the ejection mechanism unless it has received a request to disable the ejection mechanism from the same caller. This prevents other callers from unlocking the drive.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_MCN_CONTROL">
            <summary>Enables or disables media change notification. Disabling media change notification prevents the GUID_IO_MEDIA_ARRIVAL and GUID_IO_MEDIA_REMOVAL events.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_mcn_control">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_GET_MEDIA_TYPES">
            <summary>Retrieves the geometry information for the device. (IOCTL_STORAGE_GET_MEDIA_TYPES)</summary>
            <remarks>This device I/O control operation is for all class drivers, as well as non-SCSI hard drives and floppy disk devices.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_GET_MEDIA_TYPES_EX">
            <summary>Retrieves information about the types of media supported by a device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_get_media_types_ex">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER">
            <summary>Retrieves the serial number of a USB device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_get_media_serial_number">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_GET_HOTPLUG_INFO">
            <summary>Retrieves the hotplug configuration of the specified device.</summary>
            <remarks>Refer to the Remarks section in the reference page for [STORAGE_HOTPLUG_INFO](ns-winioctl-storage_hotplug_info.md) for more information about hotplug devices.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_SET_HOTPLUG_INFO">
            <summary>Sets the hotplug configuration of the specified device.</summary>
            <remarks>
            <para>Refer to the Remarks section in the reference page for [STORAGE_HOTPLUG_INFO](ns-winioctl-storage_hotplug_info.md) for more information about hotplug devices. This operation sets only the **DeviceHotplug** member of the [STORAGE_HOTPLUG_INFO](ns-winioctl-storage_hotplug_info.md) structure passed in.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_set_hotplug_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_GET_DEVICE_NUMBER">
            <summary>Retrieves the device type, device number, and, for a partitionable device, the partition number of a device.</summary>
            <remarks>The values in the [STORAGE_DEVICE_NUMBER](ns-winioctl-storage_device_number.md) structure are guaranteed to remain unchanged until the device is removed or the system is restarted. It is not guaranteed to be persistent across device restarts or system restarts.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_READ_CAPACITY">
            <summary>Retrieves the geometry information for the device. (IOCTL_STORAGE_READ_CAPACITY)</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_read_capacity">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD">
            <summary>Windows applications can use this control code to set the temperature threshold of a device (when it's supported by the device).</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_set_temperature_threshold">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_PROTOCOL_COMMAND">
            <summary>Windows applications can use this control code to return properties of a storage device or adapter. The request indicates the kind of information to retrieve, such as inquiry data for a device or capabilities and limitations of an adapter.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_protocol_command">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_QUERY_PROPERTY">
            <summary>Windows applications can use this control code to return the properties of a storage device or adapter.</summary>
            <remarks>The optional output buffer returned through the *lpOutBuffer* parameter can be one of several structures depending on the value of the **PropertyId** member of the [STORAGE_PROPERTY_QUERY](ns-winioctl-storage_property_query.md) structure pointed to by the *lpInBuffer* parameter. These values are enumerated by the [STORAGE_PROPERTY_ID](ne-winioctl-storage_property_id.md) enumeration. If the **QueryType** member of the **STORAGE_PROPERTY_QUERY** is set to **PropertyExistsQuery** then no structure is returned.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES">
            <summary>The IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES control code communicates attribute information to the volume manager and storage system device.</summary>
            <remarks>
            <para>Use the **IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES** control code for sending storage system-specific information to the volume manager and storage system. The input buffers passed through the *lpInBuffer* parameter start with a [DEVICE_MANAGE_DATA_SET_ATTRIBUTES](ns-winioctl-device_manage_data_set_attributes.md) structure but may contain additional parameters before the list of data set ranges depending on the value of the **Action** member of the **DEVICE_MANAGE_DATA_SET_ATTRIBUTES** structure. The output buffers returned through the *lpOutBuffer* parameter start with a [DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT](ns-winioctl-device_manage_data_set_attributes.md) structure but then can contain additional data depending on the value of the **Action** member of the **DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT** structure pointed to by the *lpOutBuffer* parameter. These values are one of the values for the [DEVICE_DATA_MANAGEMENT_SET_ACTION](/windows/desktop/DevIO/device-data-management-set-action) data type. Value | Parameters structure | Output block structure ------|----------------------|----------------------- **DeviceDsmAction_Trim** | None | None **DeviceDsmAction_Notification** | [DEVICE_DSM_NOTIFICATION_PARAMETERS](ns-winioctl-device_dsm_notification_parameters.md) | None **DeviceDsmAction_OffloadRead** | [DEVICE_DSM_OFFLOAD_READ_PARAMETERS](ns-winioctl-device_dsm_offload_read_parameters.md) | [STORAGE_OFFLOAD_READ_OUTPUT](ns-winioctl-storage_offload_read_output.md) **DeviceDsmAction_OffloadWrite** | [DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS](ns-winioctl-device_dsm_offload_write_parameters.md) | [STORAGE_OFFLOAD_WRITE_OUTPUT](ns-winioctl-storage_offload_write_output.md) **DeviceDsmAction_Allocation** | None | [DEVICE_DATA_SET_LB_PROVISIONING_STATE](ns-winioctl-device_data_set_lb_provisioning_state.md) **DeviceDsmAction_Repair** | [DEVICE_DATA_SET_REPAIR_PARAMETERS](ns-winioctl-device_data_set_repair_parameters.md) | None **DeviceDsmAction_Scrub** | None | None **DeviceDsmAction_Resiliency** | None | None</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_manage_data_set_attributes#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_REINITIALIZE_MEDIA">
            <summary>The IOCTL_STORAGE_REINITIALIZE_MEDIA ioctl (winioctl.h) offloads the erasure process to the storage device.</summary>
            <remarks>
            <para>There is no guarantee as to the successful deletion or recoverability of the data on the storage device after command completion. This IOCTL is limited to data disks in regular Windows. In WinPE, this IOCTL is supported for both boot and data disks. There may be cached data from the storage device in the system. To ensure there is no cached data from the storage device before erasure, call FSCTL_LOCK_VOLUME. The operating system does not ensure all outstanding requests to the storage device are completed before issuing the erasure command to the device.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_reinitialize_media#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_FIRMWARE_GET_INFO">
            <summary>Windows applications can use this control code to query the storage device for detailed firmware information.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_firmware_get_info">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_FIRMWARE_DOWNLOAD">
            <summary>Windows applications can use this control code to download a firmware image to the target device, but not activate it.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_firmware_download">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_FIRMWARE_ACTIVATE">
            <summary>Windows applications can use this control code to activate a firmware image on a specified device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_firmware_activate">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_DEVICE_POWER_CAP">
            <summary>Windows applications can use this control code to specify a maximum operational power consumption level for a storage device.</summary>
            <remarks>
            <para>This IOCTL is sent to the device driver with a maximum power value that the driver is expected to honor. This IOCTL then returns with a value that represents what the device driver is actually capable of achieving. This value could be equal to, less than, or greater than the desired value that was sent originally. For example, consider a storage device driver that implements three operational power states that have a maximum power consumption level of 10 watts, 8 watts, and 6 watts. If the caller of this IOCTL specifies that the device should not consume more than 9 watts, it must choose its 8 watt state because that is the highest state it has that is still less than 9 watts. If the caller of this IOCTL specifies that the device should not consume more than 5 watts, the device driver will pick the 6 watt state because 6 watts is the minimum value the device can function at.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_device_power_cap#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_STORAGE_RPMB_COMMAND">
            <summary>The IOCTL_STORAGE_RPMB_COMMAND ioctl (winioctl.h) sends an RPMB command to the underlying storage device.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_DRIVE_GEOMETRY">
            <summary>Retrieves information about the physical disk's geometry:\_type, number of cylinders, tracks per cylinder, sectors per track, and bytes per sector.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_drive_geometry">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_PARTITION_INFO">
            <summary>Retrieves information about the type, size, and nature of a disk partition.</summary>
            <remarks>
            <para>The **IOCTL_DISK_GET_PARTITION_INFO** control code is only supported on MBR-formatted disks. The disk support can be summarized as follows. Disk type | IOCTL_DISK_GET_PARTITION_INFO | IOCTL_DISK_GET_PARTITION_INFO_EX ----------|-------------------------------|--------------------------------- Basic master boot record (MBR) | Yes | Yes Basic GUID partition table (GPT) | No | Yes Dynamic MBR boot/system | Yes | Yes Dynamic MBR data | Yes | No Dynamic GPT boot/system | No | Yes Dynamic GPT data | No | No Currently, GPT is supported only on 64-bit systems. If the partition is on a disk formatted as type master boot record (MBR), partition size totals are limited. For more information, see the Remarks section of [IOCTL_DISK_SET_DRIVE_LAYOUT](ni-winioctl-ioctl_disk_set_drive_layout.md).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_partition_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_PARTITION_INFO">
            <summary>Sets partition information for the specified disk partition.</summary>
            <remarks>If the partition is on a disk formatted as type master boot record (MBR), partition size totals are limited. For more information, see the Remarks section of [IOCTL_DISK_SET_DRIVE_LAYOUT](ni-winioctl-ioctl_disk_set_drive_layout.md).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_DRIVE_LAYOUT">
            <summary>Retrieves information for each entry in the partition tables for a disk.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>This operation retrieves information for each primary partition as well as each logical drive. To determine whether the entry is an extended or unused partition, check the [Disk Partition Types](/windows/desktop/FileIO/disk-partition-types).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_DRIVE_LAYOUT">
            <summary>Partitions a disk as specified by drive layout and partition information data.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>If the partition is on a disk formatted as type master boot record (MBR), partition size totals cannot exceed 2 TB per MBR disk. For example, a disk of type MBR can have a single 2-TB partition, two 1-TB partitions, or any combination that does not total more than 2 TB. If more space is required, a disk formatted as type GUID partition table (GPT) should be used. If third-party partitioning tools are used  to work around this limitation on disks of type MBR larger than 2 TB, configuration operations via the disk partitioning IOCTL control codes will be limited.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_VERIFY">
            <summary>Verifies the specified extent on a fixed disk.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_verify">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_FORMAT_TRACKS">
            <summary>Formats a specified, contiguous set of tracks on a floppy disk. To provide additional parameters, use IOCTL_DISK_FORMAT_TRACKS_EXinstead.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_format_tracks">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_REASSIGN_BLOCKS">
            <summary>Directs the disk device to map one or more blocks to its spare-block pool. (IOCTL_DISK_REASSIGN_BLOCKS)</summary>
            <remarks>The [REASSIGN_BLOCKS](ns-winioctl-reassign_blocks.md) structure that the **IOCTL_DISK_REASSIGN_BLOCKS** control code uses only supports drives where the Logical Block Address (LBA) fits into a 4-byte value (typically up to 2 TB). For larger drives the [REASSIGN_BLOCKS_EX](ns-winioctl-reassign_blocks_ex.md) structure that the [IOCTL_DISK_REASSIGN_BLOCKS_EX](ni-winioctl-ioctl_disk_reassign_blocks_ex.md) control code uses supports 8-byte LBAs. For compatibility, the **IOCTL_DISK_REASSIGN_BLOCKS** control code and **REASSIGN_BLOCKS** structure should be used where possible.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_PERFORMANCE">
            <summary>Enables performance counters that provide disk performance information.</summary>
            <remarks>To disable the  performance counters enabled by this control code, use the [IOCTL_DISK_PERFORMANCE_OFF](ni-winioctl-ioctl_disk_performance_off.md) control code.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_IS_WRITABLE">
            <summary>Determines whether the specified disk is writable.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_is_writable">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_FORMAT_TRACKS_EX">
            <summary>Formats a specified, contiguous set of tracks on a floppy disk.</summary>
            <remarks>
            <para>This device I/O control operation is for floppy disk devices only. It is impossible to determine how many bad track numbers will be returned by this control code, so you should set the size of the array pointed to by the <i>lpOutBuffer</i> parameter to the following: `(total number of tracks on the floppy disk) * sizeof(BAD_TRACK_NUMBER)`</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_format_tracks_ex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_PERFORMANCE_OFF">
            <summary>Disables the performance counters that provide disk performance information.</summary>
            <remarks>To enable these performance counters, use the [IOCTL_DISK_PERFORMANCE](ni-winioctl-ioctl_disk_performance.md) control code.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_PARTITION_INFO_EX">
            <summary>Retrieves extended information about the type, size, and nature of a disk partition.</summary>
            <remarks>
            <para>The **IOCTL_DISK_GET_PARTITION_INFO_EX** control code is supported on basic disks. It is only supported on dynamic disks that are boot or system disks, or have retained entries in the partition table. The [DiskPart.exe](/windows-server/administration/windows-commands/diskpart) command **RETAIN** can be used to do this for other dynamic simple partitions. The disk support can be summarized as follows. Disk type | IOCTL_DISK_GET_PARTITION_INFO | IOCTL_DISK_GET_PARTITION_INFO_EX ----------|-------------------------------|--------------------------------- Basic master boot record (MBR) | Yes | Yes Basic GUID partition table (GPT) | No | Yes Dynamic MBR boot/system | Yes | Yes Dynamic MBR data | Yes | No Dynamic GPT boot/system | No | Yes Dynamic GPT data | No | No Currently, GPT is supported only on 64-bit systems. If the partition is on a disk formatted as type master boot record (MBR), partition size totals are limited. For more information, see the Remarks section of [IOCTL_DISK_SET_DRIVE_LAYOUT](ni-winioctl-ioctl_disk_set_drive_layout.md).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_partition_info_ex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_PARTITION_INFO_EX">
            <summary>Sets partition information for the specified disk partition, including layout information for AT and EFI (Extensible Firmware Interface) partitions.</summary>
            <remarks>If the partition is on a disk formatted as type master boot record (MBR), partition size totals are limited. For more information, see the Remarks section of [IOCTL_DISK_SET_DRIVE_LAYOUT](ni-winioctl-ioctl_disk_set_drive_layout.md).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_DRIVE_LAYOUT_EX">
            <summary>Retrieves extended information for each entry in the partition tables for a disk.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>This operation retrieves information for each primary partition as well as each logical drive. To determine whether the entry is an extended or unused partition, check the [Disk Partition Types](/windows/desktop/FileIO/disk-partition-types).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_DRIVE_LAYOUT_EX">
            <summary>Partitions a disk according to the specified drive layout and partition information data.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>
            <para>When specifying a **GUID** partition table (GPT) as the [PARTITION_STYLE](ne-winioctl-partition_style.md) of the [CREATE_DISK](ns-winioctl-create_disk.md) structure, an application should wait for the MSR partition arrival before sending the **IOCTL_DISK_SET_DRIVE_LAYOUT_EX** control code. For more information about device notification, see [RegisterDeviceNotification](../winuser/nf-winuser-registerdevicenotificationa.md). When creating and manipulating an Extended Boot Record (EBR), the first entry of the EBR should point to the logical drive that immediately follows the EBR and the next EBR should lie after the end of the current logical drive and before the start of the next logical drive. If the partition is on a disk formatted as type master boot record (MBR), partition size totals are limited. For more information, see the Remarks section of [IOCTL_DISK_SET_DRIVE_LAYOUT](ni-winioctl-ioctl_disk_set_drive_layout.md).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_set_drive_layout_ex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_CREATE_DISK">
            <summary>Initializes the specified disk and disk partition table using the information in the CREATE_DISK structure.</summary>
            <remarks>When specifying a GUID partition table (GPT) as the [PARTITION_STYLE](./ne-winioctl-partition_style.md) of the [CREATE_DISK](ns-winioctl-create_disk.md) structure, an application should wait for the MSR partition arrival before sending the [IOCTL_DISK_SET_DRIVE_LAYOUT_EX](ni-winioctl-ioctl_disk_set_drive_layout_ex.md) control code. For more information about device notification, see [RegisterDeviceNotification](../winuser/nf-winuser-registerdevicenotificationa.md).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_LENGTH_INFO">
            <summary>Retrieves the length of the specified disk, volume, or partition.</summary>
            <remarks>
            <para>Volume handles do not have access to the full volume. To read or write to the last few sectors of a volume, you must call [FSCTL_ALLOW_EXTENDED_DASD_IO](ni-winioctl-fsctl_allow_extended_dasd_io.md), which instructs the file system to not perform any boundary checks. This operation should be used instead of [IOCTL_DISK_GET_PARTITION_INFO_EX](ni-winioctl-ioctl_disk_get_partition_info_ex.md) for volumes that do not have partition info—such as partition type or number of hidden sectors.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_length_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_DRIVE_GEOMETRY_EX">
            <summary>Retrieves extended information about the physical disk's geometry:\_type, number of cylinders, tracks per cylinder, sectors per track, and bytes per sector.</summary>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero. If the operation fails, or is pending, the return value is zero. To get extended error information, call [**GetLastError**](../errhandlingapi/nf-errhandlingapi-getlasterror.md).</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_drive_geometry_ex">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_REASSIGN_BLOCKS_EX">
            <summary>Directs the disk device to map one or more blocks to its spare-block pool. (IOCTL_DISK_REASSIGN_BLOCKS_EX)</summary>
            <remarks>The [REASSIGN_BLOCKS_EX](ns-winioctl-reassign_blocks_ex.md) structure that the **IOCTL_DISK_REASSIGN_BLOCKS_EX** control code uses supports 8-byte Logical Block Addresses (LBA). For compatibility, the [IOCTL_DISK_REASSIGN_BLOCKS](ni-winioctl-ioctl_disk_reassign_blocks.md) control code and [REASSIGN_BLOCKS](ns-winioctl-reassign_blocks.md) structure should be used where the LBA fits in the 4-byte LBA that the **REASSIGN_BLOCKS** structure supports (typically drives up to 2 TB).</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GROW_PARTITION">
            <summary>Enlarges the specified partition.</summary>
            <remarks>
            <para>You can extend or shrink a live partition, and the partition can be open for sharing during the extend or shrink operation. You do not need to lock a partition that you are extending, nor do you need to shut down other applications or services during the extend operation. For more information, see [DISK_GROW_PARTITION](ns-winioctl-disk_grow_partition.md).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_grow_partition#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_CACHE_INFORMATION">
            <summary>Retrieves the disk cache configuration data.</summary>
            <remarks>To set the disk cache information, use the [IOCTL_DISK_SET_CACHE_INFORMATION](ni-winioctl-ioctl_disk_set_cache_information.md) control code.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_CACHE_INFORMATION">
            <summary>Sets the disk configuration data.</summary>
            <remarks>To retrieve the cache information, use the [IOCTL_DISK_GET_CACHE_INFORMATION](ni-winioctl-ioctl_disk_get_cache_information.md) control code.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_DELETE_DRIVE_LAYOUT">
            <summary>Removes the boot signature from the master boot record, so that the disk will be formatted from sector zero to the end of the disk.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_delete_drive_layout">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_UPDATE_PROPERTIES">
            <summary>Invalidates the cached partition table and re-enumerates the device.</summary>
            <remarks>
            <para>This operation is used in synchronizing the system view of the specified disk device when the partition table of the disk is directly modified. Be sure to perform this operation when you update the usable space for a disk so that the system will update its partition table. You can update the properties of a live volume, and the volume can be open for sharing during the update operation. You do not need to lock a volume that you are updating, nor do you need to shut down other applications or services during the update operation.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_update_properties#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_GET_DISK_ATTRIBUTES">
            <summary>Retrieves the attributes of the specified disk device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_get_disk_attributes">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_SET_DISK_ATTRIBUTES">
            <summary>Sets the attributes of the specified disk device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_set_disk_attributes">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_DISK_RESET_SNAPSHOT_INFO">
            <summary>Clears all Volume Shadow Copy Service (VSS) hardware-based shadow copy (also called &quot;snapshot&quot;) information from the disk.</summary>
            <remarks>
            <para>The disk whose handle is used when this IOCTL is issued might be in the offline state when the IOCTL is issued. If the disk is put in the offline state by using the disk management Microsoft Management Console (MMC) snap-in, the disk will have its read-only attribute set, which will cause this IOCTL to fail. However, if the disk partition utility (Diskpart.exe) is used to put the disk in the offline state, the read-only attribute for the disk is not set. For this reason, it is best to use the disk partition utility to put a disk in the offline state. > [!NOTE] > One side effect of using this IOCTL is that Disk Management tools will now report an additional partition on GPT disks of the type "UNKNOWN." This 256KB partition is created by using the IOCTL and is the shadow copy partition that is used in the restore process. The partition is expected and can be ignored by system administrators.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_disk_reset_snapshot_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_GET_PARAMETERS">
            <summary>Retrieves the parameters of the specified device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_get_parameters">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_GET_STATUS">
            <summary>Retrieves the current status of the specified device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_get_status">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_GET_PRODUCT_DATA">
            <summary>Retrieves the product data for the specified device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_get_product_data">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_SET_ACCESS">
            <summary>Sets the state of the device's insert/eject port, door, or keypad.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_set_access">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_GET_ELEMENT_STATUS">
            <summary>Retrieves the status of all elements or a specified number of elements of a particular type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_get_element_status">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS">
            <summary>Initializes the status of all elements or the specified elements of a particular type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_initialize_element_status">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_SET_POSITION">
            <summary>Sets the changer's robotic transport mechanism to the specified element address. This optimizes moving or exchanging media by positioning the transport beforehand.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_set_position">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_EXCHANGE_MEDIUM">
            <summary>Moves a piece of media from a source element to one destination, and the piece of media originally in the first destination to a second destination.</summary>
            <remarks>To swap two pieces of media, specify the source as the value for the second destination.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_MOVE_MEDIUM">
            <summary>Moves a piece of media to a destination.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_move_medium">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_REINITIALIZE_TRANSPORT">
            <summary>Physically recalibrates a transport element. Recalibration may involve returning the transport to its home position.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_reinitialize_transport">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_CHANGER_QUERY_VOLUME_TAGS">
            <summary>Retrieves the volume tag information for the specified elements.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_changer_query_volume_tags">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_SERIAL_LSRMST_INSERT">
            <summary>Enables or disables the placement of line status and modem status values into the regular data stream that an application acquires through the ReadFile function.</summary>
            <remarks>
            <para>> [!NOTE] > An application that uses this scheme must examine each character in the data stream to determine the presence of modem-status or line-status data. The following values follow the designated escape character in the data stream if the **LSRMST_INSERT** mode has been turned on. Value | Meaning ------|-------- **SERIAL_LSRMST_ESCAPE** | Indicates the reception of the escape character itself into the data stream. **SERIAL_LSRMST_LSR_DATA** | Indicates that a line status change occurred, and data was available in the receive hardware buffer. Following this **BYTE** is a **BYTE** value of the line status register is the **BYTE** present in the receive hardware buffer when the line status change was processed. **SERIAL_LSRMST_LSR_NODATA** | Indicates that a line status change occurred, but no data was available in the receive hardware buffer. **SERIAL_LSRMST_MST**  | Indicates that a modem status change occurred. Following this **BYTE** is a **BYTE** that is the value of the modem status register when the modem status change was processed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_serial_lsrmst_insert#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_BATTERY_QUERY_TAG">
            <summary>Retrieves the batterys current tag.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror). All requests for battery information will complete with the status of ERROR_NO_SUCH_DEVICE (or ERROR_FILE_NOT_FOUND in **Windows 10 version 1809 and earlier**) whenever the BatteryTag element of the request does not match that of the current battery tag. This ensures that the returned battery information matches that of the requested battery (see [Battery Tags](battery-information.md) for more information).</para>
            </returns>
            <remarks>
            <para>This battery IOCTL retrieves the battery's current tag. The battery tag is a unique nonzero value that changes when the physical battery is reinserted, replaced, or undergoes any characteristic changes. See the Battery Tags section in the [Battery Information](battery-information.md) overview topic for more detail on when a battery tag changes, how to detect the change, and how an application should proceed after a battery tag change. When a battery is not present, this request will wait the indicated time, and if there is still no battery present, then it will return **ERROR\_FILE\_NOT\_FOUND** and set the battery tag to **BATTERY\_TAG\_INVALID**. (See Battery Information for more information.) All requests for other battery information require the caller to supply the matching battery tag. This ensures that the caller is receiving information for the same battery for every request and ensures that the caller is aware of battery changes without constant polling. For the implications of overlapped I/O on this operation, see the Remarks section of the [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) topic.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-battery-query-tag#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_BATTERY_QUERY_INFORMATION">
            <summary>Retrieves a variety of information for the battery.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror). Some information about batteries is optional or may be meaningless for some batteries. If the particular type of data requested is not available for the current battery, then **ERROR\_INVALID\_FUNCTION** is returned. All requests for battery information will complete with the status of ERROR_NO_SUCH_DEVICE (or ERROR_FILE_NOT_FOUND in **Windows 10 version 1809 and earlier**) whenever the BatteryTag element of the request does not match that of the current battery tag. This ensures that the returned battery information matches that of the requested battery (see [Battery Tags](battery-information.md) for more information).</para>
            </returns>
            <remarks>
            <para>This battery IOCTL retrieves a variety of information for the battery. The input parameter structure, [**BATTERY\_QUERY\_INFORMATION**](battery-query-information-str.md), indicates the type of information to be returned and when the battery information should be returned. The data type and contents of the output buffer vary based on the data requested. For the implications of overlapped I/O on this operation, see the Remarks section of the [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) topic.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-battery-query-information#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_BATTERY_SET_INFORMATION">
            <summary>Sets various battery information.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror). All requests for battery information will complete with the status of ERROR_NO_SUCH_DEVICE (or ERROR_FILE_NOT_FOUND in **Windows 10 version 1809 and earlier**) whenever the BatteryTag element of the request does not match that of the current battery tag. This ensures that the returned battery information matches that of the requested battery (see [Battery Tags](battery-information.md) for more information).</para>
            </returns>
            <remarks>
            <para>All requests to set battery information will complete with the status of ERROR\_FILE\_NOT\_FOUND if the battery tag of the request does not match that of the current battery tag. For the implications of overlapped I/O on this operation, see the Remarks section of the [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) topic.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-battery-set-information#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_BATTERY_QUERY_STATUS">
            <summary>Retrieves the current status of the battery.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror). All requests for battery information will complete with the status of ERROR_NO_SUCH_DEVICE (or ERROR_FILE_NOT_FOUND in **Windows 10 version 1809 and earlier**) whenever the BatteryTag element of the request does not match that of the current battery tag. This ensures that the returned battery information matches that of the requested battery (see [Battery Tags](battery-information.md) for more information).</para>
            </returns>
            <remarks>
            <para>This battery IOCTL retrieves the status of the battery at the time the operation returns. The input parameter structure, [**BATTERY\_WAIT\_STATUS**](battery-wait-status-str.md), indicates when the battery status is to be processed and returned. Requests for battery status can be for immediate return or can be set to wait for a particular condition before completing. For example, a request for battery information can be made that waits until the battery capacity reaches a specified point or the battery state changes. All requests for battery information will complete with the status of **ERROR\_FILE\_NOT\_FOUND** whenever the **BatteryTag** element of the request does not match that of the current battery tag. (See [Battery Tags](battery-information.md) for more information.) This is used to ensure that the returned battery information matches that of the requested battery. For the implications of overlapped I/O on this operation, see the Remarks section of the [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) topic.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-battery-query-status#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_EMI_GET_VERSION">
            <summary>The IOCTL_EMI_GET_VERSION control code retrieves the current version of the EMI interface supported by the device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/emi/ni-emi-ioctl_emi_get_version">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_EMI_GET_METADATA_SIZE">
            <summary>The IOCTL_EMI_GET_METADATA_SIZE control code retrieves the size of the EMI metadata object that can be obtained from the device by issuing an IOCTL_EMI_GET_METADATA request.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/emi/ni-emi-ioctl_emi_get_metadata_size">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_EMI_GET_METADATA">
            <summary>The IOCTL_EMI_GET_METADATA control code retrieves EMI metadata from a device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/emi/ni-emi-ioctl_emi_get_metadata">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_EMI_GET_MEASUREMENT">
            <summary>The IOCTL_EMI_GET_MEASUREMENT control code retrieves the current energy measurement and the time at which the measurement was taken.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/emi/ni-emi-ioctl_emi_get_measurement">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VMGENCOUNTER_READ">
            <summary>The IOCTL_VMGENCOUNTER_READ control code retrieves a virtual machine generation identifier.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_VMGENCOUNTER_READ, // dwIoControlCode(LPDWORD)      lpInBuffer,      // input buffer (DWORD)        nInBufferSize,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/vmgenerationcounter/ni-vmgenerationcounter-ioctl_vmgencounter_read#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS">
            <summary>Retrieves the physical location of a specified volume on one or more disks.</summary>
            <remarks>
            <para>In Windows 8 and Windows Server 2012, this code is supported by the following technologies. Technology | Supported -----------|---------- Server Message Block (SMB) 3.0 protocol | No SMB 3.0 Transparent Failover (TFO) | No SMB 3.0 with Scale-out File Shares (SO) | No Cluster Shared Volume File System (CsvFS) | Yes</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_volume_get_volume_disk_extents#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_ONLINE">
            <summary>Brings a volume online.</summary>
            <remarks>
            <para>When a volume is offline, all read, write, and IOCTL requests fail with **ERROR_NOT_READY**. You cannot take the system or boot volume offline. When a volume is online, all requests sent to the volume are honored. When a volume that is online is dismounted, the next call to open the volume causes it to be mounted. Taking the volume offline prevents the dismounted volume from being mounted again. To take a volume offline, use the [IOCTL_VOLUME_OFFLINE](ni-winioctl-ioctl_volume_offline.md) control code. In Windows 8 and Windows Server 2012, this code is supported by the following technologies. Technology | Supported -----------|---------- Server Message Block (SMB) 3.0 protocol | No SMB 3.0 Transparent Failover (TFO) | No SMB 3.0 with Scale-out File Shares (SO) | No Cluster Shared Volume File System (CsvFS) | No</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_volume_online#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_OFFLINE">
            <summary>Takes a volume offline.</summary>
            <remarks>
            <para>Applications must first successfully dismount the file system - via [FSCTL_DISMOUNT_VOLUME](ni-winioctl-fsctl_dismount_volume.md) - before using **IOCTL_VOLUME_OFFLINE**. When a volume that is online is dismounted, the next call to open the volume causes it to be mounted.  Taking the volume offline using the same volume handle as was used for the dismount prevents the dismounted volume from being mounted again. When a volume is online, all requests sent to the volume are honored. When a volume that is online is dismounted, the next call to open the volume causes it to be mounted. Taking the volume offline prevents the dismounted volume from being mounted again. To bring a volume online, use the [IOCTL_VOLUME_ONLINE](ni-winioctl-ioctl_volume_online.md) control code. In Windows 8 and Windows Server 2012, this code is supported by the following technologies. Technology | Supported -----------|---------- Server Message Block (SMB) 3.0 protocol | No SMB 3.0 Transparent Failover (TFO) | No SMB 3.0 with Scale-out File Shares (SO) | No Cluster Shared Volume File System (CsvFS) | No</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_volume_offline#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_IS_CLUSTERED">
            <summary>Determines whether the specified volume is clustered.</summary>
            <remarks>
            <para>The **IOCTL_VOLUME_IS_CLUSTERED** control code is valid only if the Cluster service is running. The **ERROR_GEN_FAILURE** error indicates that the computer that currently owns the disk on which the volume resides is a server cluster node, but either the disk is a Physical Disk resource currently in an offline state or the disk is not a Physical Disk resource. To determine which of these situations exists, use the following steps: 1. Call the [ClusterEnum](../clusapi/nf-clusapi-clusterenum.md) function to enumerate all Physical Disk resources in the cluster. 1. Search each enumerated Physical Disk resource for the volume by calling the [ClusterResourceControl](../clusapi/nf-clusapi-clusterresourcecontrol.md) function with [CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO](/previous-versions/windows/desktop/mscs/clusctl-resource-storage-get-disk-info). If you cannot find the volume among the Physical Disk resources in the cluster, the volume does not reside on a Physical Disk resource. The **ERROR_INVALID_FUNCTION** error indicates that the computer that currently owns the disk on which the volume resides is not a server cluster node or the disk is not a Physical Disk resource. To determine whether a computer is a server cluster node, call the [GetNodeClusterState](../clusapi/nf-clusapi-getnodeclusterstate.md) function. In Windows 8 and Windows Server 2012, this code is supported by the following technologies. Technology | Supported -----------|---------- Server Message Block (SMB) 3.0 protocol | No SMB 3.0 Transparent Failover (TFO) | No SMB 3.0 with Scale-out File Shares (SO) | No Cluster Shared Volume File System (CsvFS) | Yes</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_volume_is_clustered#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_GET_GPT_ATTRIBUTES">
            <summary>Retrieves the attributes for a volume.</summary>
            <remarks>
            <para>In Windows 8 and Windows Server 2012, this code is supported by the following technologies. Technology | Supported -----------|---------- Server Message Block (SMB) 3.0 protocol | No SMB 3.0 Transparent Failover (TFO) | No SMB 3.0 with Scale-out File Shares (SO) | No Cluster Shared Volume File System (CsvFS) | Yes</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ni-winioctl-ioctl_volume_get_gpt_attributes#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VOLUME_IS_CSV">
            <summary>Determines whether a volume is a CSV volume.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero (0). To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/FileIO/ioctl-volume-is-csv">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS">
            <summary>Retrieves the supported backlight levels.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para>Each element in the *lpOutBuffer* array is one byte in length. Therefore, upon return, the *lpBytesReturned* parameter indicates the number of supported levels. Each level is a value from 0 to 100. The larger the value, the brighter the backlight. All levels are supported whether the power source is AC or DC. The header file used to build applications that include this functionality, Ntddvdeo.h, is included in the Microsoft Windows Driver Development Kit (DDK). For information on obtaining the DDK, see [https://www.microsoft.com/whdc/devtools/ddk/default.mspx](https://msdn.microsoft.com/windows/hardware/gg454513). Alternatively, you can define this control code as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-video-query-supported-brightness#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS">
            <summary>Retrieves the current AC and DC backlight levels and the current power state.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para>The header file used to build applications that include this functionality, Ntddvdeo.h, is included in the Microsoft Windows Driver Development Kit (DDK). For information on obtaining the DDK, see [https://www.microsoft.com/whdc/devtools/ddk/default.mspx](https://msdn.microsoft.com/windows/hardware/gg454513). Alternatively, you can define this control code as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-video-query-display-brightness#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS">
            <summary>Sets the current AC and DC backlight levels.</summary>
            <returns>
            <para>If the operation completes successfully, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns a nonzero value. If the operation fails or is pending, [**DeviceIoControl**](/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol) returns zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para>The values specified in the **ucACBrightness** and **ucDCBrightness** members of the [**DISPLAY\_BRIGHTNESS**](/previous-versions/windows/desktop/legacy/aa372686(v=vs.85)) structure must have been previously returned by [**IOCTL\_VIDEO\_QUERY\_SUPPORTED\_BRIGHTNESS**](ioctl-video-query-supported-brightness.md). For example, if the supported values are 10, 20, 30, 40, 50, 60, 70, 80, 90, and 100, then using a value of 33 would be an error. The header file used to build applications that include this functionality, Ntddvdeo.h, is included in the Microsoft Windows Driver Development Kit (DDK). For information on obtaining the DDK, see [https://www.microsoft.com/whdc/devtools/ddk/default.mspx](https://msdn.microsoft.com/windows/hardware/gg454513). Alternatively, you can define this control code as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/Power/ioctl-video-set-display-brightness#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_TRANSFER_IN">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to issue an IN direction transfer on the endpoint that corresponds to the specified pipe ID in the input buffer. (IOCTL_GENERICUSBFN_TRANSFER_IN)</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_transfer_in#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_TRANSFER_IN_APPEND_ZERO_PKT">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to issue an IN direction transfer on the endpoint that corresponds to the specified pipe ID in the input buffer. (IOCTL_GENERICUSBFN_TRANSFER_IN_APPEND_ZERO_PKT)</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_transfer_in_append_zero_pkt#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_TRANSFER_OUT">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to issue an OUT direction transfer on the endpoint that corresponds to the specified pipe ID in the input buffer.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_transfer_out#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_CONTROL_STATUS_HANDSHAKE_IN">
            <summary>This I/O control code (IOCTL) is sent by a user mode service or application to request a zero-length control status handshake on endpoint 0 in the IN direction.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_control_status_handshake_in#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_CONTROL_STATUS_HANDSHAKE_OUT">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to complete a zero-length control status handshake on endpoint 0 in the OUT direction.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_control_status_handshake_out#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_GET_CLASS_INFO">
            <summary>This I/O control code (IOCTL) is sent by the user-mode service or application to retrieve information about a device's available pipes as configured in the registry.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_get_class_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_GET_PIPE_STATE">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to get the state of the specified Universal Serial Bus (USB) pipe.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_get_pipe_state#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_SET_PIPE_STATE">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to set the state of the specified Universal Serial Bus (USB) pipe.</summary>
            <remarks>
            <para>The  pipe will send STALL transaction packets to the host when stalled. For more information, see the USB specification. If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_set_pipe_state#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_ACTIVATE_USB_BUS">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to notify GenericUSBFn.sys to activate the Universal Serial Bus (USB). Once activated, the bus is prepared to process bus events and handle traffic.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_activate_usb_bus#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_DEACTIVATE_USB_BUS">
            <summary>This IOCTL code is nevtot supported.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_deactivate_usb_bus#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_BUS_EVENT_NOTIFICATION">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to register for Universal Serial Bus (USB) event.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_bus_event_notification#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_GET_CLASS_INFO_EX">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to retrieve information about a device's available pipes as configured in the registry.</summary>
            <remarks>
            <para>If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_get_class_info_ex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_GET_INTERFACE_DESCRIPTOR_SET">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to get the entire interface descriptor set for a function on the device.This IOCTL request does not retrieve the interface descriptor set for the entire device.Universal Serial Bus (USB) interface descriptor set for a function on the device.</summary>
            <remarks>
            <para>This request must be sent after sending the <a href="https://docs.microsoft.com/windows/desktop/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_activate_usb_bus">IOCTL_GENERICUSBFN_ACTIVATE_USB_BUS</a> request. The length of the entire interface descriptor is variable. The class driver might need to send this IOCTL request twice to get the entire descriptor set. If the length of the entire descriptor set is greater than the  specified output buffer length, UFX sets the <b>Size</b> member of <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbfnbase/ns-usbfnbase-_usbfn_interface_info">USBFN_INTERFACE_INFO</a> to the actual buffer length and fails the request with STATUS_BUFFER_TOO_SMALL. The driver must then allocated an output buffer of length specified by <b>Size</b> and resend the request. If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_get_interface_descriptor_set#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GENERICUSBFN_REGISTER_USB_STRING">
            <summary>This I/O control code (IOCTL) is sent by a user-mode service or application to register a string descriptor.Universal Serial Bus (USB) string descriptor.</summary>
            <remarks>
            <para>This request must be sent after sending the <a href="https://docs.microsoft.com/windows/desktop/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_activate_usb_bus">IOCTL_GENERICUSBFN_ACTIVATE_USB_BUS</a> request. If this I/O control code (IOCTL) is being called synchronously, set the <i>lpOverlapped</i> parameter to NULL. If this IOCTL is called asynchronously, assign the <i>lpOverlapped</i> parameter to a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. The event objects signal when the operation is completed. The return value is a BOOL value that indicates success or failure of the operation. TRUE indicates success, FALSE otherwise.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/genericusbfnioctl/ni-genericusbfnioctl-ioctl_genericusbfn_register_usb_string#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_USB_DIAGNOSTIC_MODE_ON">
            <summary>The IOCTL_USB_DIAGNOSTIC_MODE_ON I/O control has been deprecated. Do not use.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_usb_diagnostic_mode_on">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_USB_DIAGNOSTIC_MODE_OFF">
            <summary>The IOCTL_USB_DIAGNOSTIC_MODE_OFF I/O control has been deprecated. Do not use.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_usb_diagnostic_mode_off">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_USB_GET_ROOT_HUB_NAME">
            <summary>The IOCTL_USB_GET_ROOT_HUB_NAME I/O control request is used with the USB_ROOT_HUB_NAME structure to retrieve the symbolic link name of the root hub.IOCTL_USB_GET_ROOT_HUB_NAME is a user-mode I/O control request.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_usb_get_root_hub_name">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_GET_HCD_DRIVERKEY_NAME">
            <summary>The IOCTL_GET_HCD_DRIVERKEY_NAME I/O control request retrieves the driver key name in the registry for a USB host controller driver.</summary>
            <remarks>
            <para>To get the driver key name in  the registry, you must perform the following tasks: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_get_hcd_driverkey_name#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_QUERY_ATTRIBUTES">
            <summary>The IOCTL_KEYBOARD_QUERY_ATTRIBUTES request returns information about the keyboard attributes.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_query_attributes">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_SET_TYPEMATIC">
            <summary>The IOCTL_KEYBOARD_SET_TYPEMATIC request sets the keyboard typematic settings.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_set_typematic">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_SET_INDICATORS">
            <summary>The IOCTL_KEYBOARD_SET_INDICATORS request sets the keyboard indicators.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_set_indicators">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_QUERY_TYPEMATIC">
            <summary>The IOCTL_KEYBOARD_QUERY_TYPEMATIC request returns the keyboard typematic settings.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_query_typematic">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_QUERY_INDICATORS">
            <summary>The IOCTL_KEYBOARD_QUERY_INDICATORS request returns information about the keyboard indicators.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_query_indicators">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION">
            <summary>The IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION request returns information about the mapping between scan codes and keyboard indicators.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_query_indicator_translation">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_KEYBOARD_QUERY_EXTENDED_ATTRIBUTES">
            <summary>The IOCTL_KEYBOARD_QUERY_EXTENDED_ATTRIBUTES request returns information about the extended keyboard attributes.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddkbd/ni-ntddkbd-ioctl_keyboard_query_extended_attributes">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_MOUSE_QUERY_ATTRIBUTES">
            <summary>The IOCTL_MOUSE_QUERY_ATTRIBUTES request returns information about the mouse attributes.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntddmou/ni-ntddmou-ioctl_mouse_query_attributes">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_CONTROLLER_GET_INFO">
            <summary>Retrieves information about a Pulse Width Modulation (PWM) controller. This information does not change after the controller is initialized.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_CONTROLLER_GET_INFO, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_controller_get_info#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_CONTROLLER_GET_ACTUAL_PERIOD">
            <summary>Retrieves the effective output signal period of the Pulse Width Modulation (PWM) controller as it would be measured on its output channels.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_CONTROLLER_GET_ACTUAL_PERIOD, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_controller_get_actual_period#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_CONTROLLER_SET_DESIRED_PERIOD">
            <summary>Sets the output signal period of a Pulse Width Modulation (PWM) controller to a suggested value.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_CONTROLLER_SET_DESIRED_PERIOD, // dwIoControlCode(LPDWORD)      lpInBuffer,      // input buffer (DWORD)        nInBufferSize,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_controller_set_desired_period#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_GET_ACTIVE_DUTY_CYCLE_PERCENTAGE">
            <summary>Retrieves the current duty cycle percentage for a pin or channel. The control code returns the percentage as a PWM_PIN_GET_ACTIVE_DUTY_CYCLE_PERCENTAGE_OUTPUT structure.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_GET_ACTIVE_DUTY_CYCLE_PERCENTAGE, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_get_active_duty_cycle_percentage#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_SET_ACTIVE_DUTY_CYCLE_PERCENTAGE">
            <summary>Set a desired duty cycle percentage value for the controller pin or channel. The control code specifies the percentage as a PWM_PIN_SET_ACTIVE_DUTY_CYCLE_PERCENTAGE_INPUT structure.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_SET_ACTIVE_DUTY_CYCLE_PERCENTAGE, // dwIoControlCode(LPDWORD)      lpInBuffer,      // input buffer (DWORD)        nInBufferSize,   // size of input buffer (LPDWORD)      NULL,      // output buffer (DWORD)        0,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_set_active_duty_cycle_percentage#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_GET_POLARITY">
            <summary>Retrieves the current signal polarity of the pin or channel. The control code gets the signal polarity as a PWM_PIN_GET_POLARITY_OUTPUT structure. The signal polarity is either Active High or Active Low, as defined in the PWM_POLARITY enumeration.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_GET_POLARITY, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_get_polarity#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_SET_POLARITY">
            <summary>Sets the signal polarity of the pin or channel. The control code sets the signal polarity based on a PWM_PIN_SET_POLARITY_INPUT structure. The signal polarity is either Active High or Active Low, as defined in the PWM_POLARITY enumeration.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_SET_POLARITY, // dwIoControlCode(LPDWORD)      lpInBuffer,      // input buffer (DWORD)        nInBufferSize,   // size of input buffer (LPDWORD)      NULL,      // output buffer (DWORD)        0,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_set_polarity#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_START">
            <summary>Starts generation of Pulse Width Modulation (PWM) signal on a pin or channel. To check whether a pin is started, use IOCTL_PWM_PIN_IS_STARTED.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_START, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      NULL,      // output buffer (DWORD)        0,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_start#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_STOP">
            <summary>Stops generation of Pulse Width Modulation (PWM) signal on a pin or channel. To check whether a pin is started, use IOCTL_PWM_PIN_IS_STARTED.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_STOP, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      NULL,      // output buffer (DWORD)        0,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_stop#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IOCTL_PWM_PIN_IS_STARTED">
            <summary>Retrieves the state of signal generation for a pin or channel. Each pin has a state of started or stopped as a PWM_PIN_IS_STARTED_OUTPUT structure.</summary>
            <remarks>
            <para>To perform this operation, call the <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-deviceiocontrol">DeviceIoControl</a> function with the following parameters.</para>
            <para><pre class="syntax">BOOL WINAPI DeviceIoControl( (HANDLE)       hDevice,         // handle to device (DWORD)        IOCTL_PWM_PIN_IS_STARTED, // dwIoControlCode(LPDWORD)      NULL,      // input buffer (DWORD)        0,   // size of input buffer (LPDWORD)      lpOutBuffer,     // output buffer (DWORD)        nOutBufferSize,  // size of output buffer (LPDWORD)      lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped );  // OVERLAPPED structure</pre></para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/pwm/ni-pwm-ioctl_pwm_pin_is_started#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CloseHandle(Windows.Win32.Foundation.HANDLE)">
            <summary>Closes an open object handle.</summary>
            <param name="hObject">A valid handle to an open object.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>. If the application is running under a debugger,  the function will throw an exception if it receives either a  handle value that is not valid  or a pseudo-handle value. This can happen if you close a handle twice, or if you  call <b>CloseHandle</b> on a handle returned by the <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-findfirstfilea">FindFirstFile</a> function instead of calling the <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-findclose">FindClose</a> function.</para>
            </returns>
            <remarks>
            <para>The <b>CloseHandle</b> function closes handles to the following objects: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/handleapi/nf-handleapi-closehandle#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalMemoryStatusEx(Windows.Win32.System.SystemInformation.MEMORYSTATUSEX@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalMemoryStatusEx(Windows.Win32.System.SystemInformation.MEMORYSTATUSEX*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalMemoryStatusEx(Windows.Win32.System.SystemInformation.MEMORYSTATUSEX*)">
            <summary>Retrieves information about the system's current usage of both physical and virtual memory. (GlobalMemoryStatusEx)</summary>
            <param name="lpBuffer">
            <para>A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/sysinfoapi/ns-sysinfoapi-memorystatusex">MEMORYSTATUSEX</a> structure that receives information about current memory availability.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-globalmemorystatusex#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>You can use the <b>GlobalMemoryStatusEx</b> function to determine how much memory your application can allocate without severely impacting other applications. The information returned by the <b>GlobalMemoryStatusEx</b> function is volatile. There is no guarantee that two sequential calls to this function will return the same information. The  <b>ullAvailPhys</b> member of the <a href="https://docs.microsoft.com/windows/desktop/api/sysinfoapi/ns-sysinfoapi-memorystatusex">MEMORYSTATUSEX</a> structure at <i>lpBuffer</i> includes memory for all NUMA nodes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-globalmemorystatusex#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetCurrentThread_SafeHandle">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetCurrentThread"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetCurrentThread">
            <summary>Retrieves a pseudo handle for the calling thread.</summary>
            <returns>The return value is a pseudo handle for the current thread.</returns>
            <remarks>
            <para>A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes. This handle has the <b>THREAD_ALL_ACCESS</b> access right to the thread object. For more information, see <a href="https://docs.microsoft.com/windows/desktop/ProcThread/thread-security-and-access-rights">Thread Security and Access Rights</a>. <b>Windows Server 2003 and Windows XP:  </b>This handle has the maximum access allowed by the security descriptor of the thread to the primary token of the process. The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-duplicatehandle">DuplicateHandle</a> function. The pseudo handle need not be closed when it is no longer needed. Calling the <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-closehandle">CloseHandle</a> function with this handle has no effect. If the pseudo handle is duplicated by <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-duplicatehandle">DuplicateHandle</a>, the duplicate handle must be closed. Do not create a thread while impersonating a security context. The call will succeed, however the newly created thread will have reduced access rights to itself when calling <b>GetCurrentThread</b>. The access rights granted this thread will  be derived from the access rights the impersonated user has to the process.  Some access rights including <b>THREAD_SET_THREAD_TOKEN</b> and <b>THREAD_GET_CONTEXT</b> may not be present, leading to unexpected failures.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentthread#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetActiveProcessorGroupCount">
            <summary>Returns the number of active processor groups in the system.</summary>
            <returns>
            <para>If the function succeeds, the return value is the number of active processor groups in the system. If the function fails, the return value is zero.</para>
            </returns>
            <remarks>To compile an application that uses this function, set _WIN32_WINNT &gt;= 0x0601. For more information, see <a href="https://docs.microsoft.com/windows/desktop/WinProg/using-the-windows-headers">Using the Windows Headers</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetThreadGroupAffinity(System.Runtime.InteropServices.SafeHandle,Windows.Win32.System.SystemInformation.GROUP_AFFINITY@,Windows.Win32.System.SystemInformation.GROUP_AFFINITY@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetThreadGroupAffinity(Windows.Win32.Foundation.HANDLE,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetThreadGroupAffinity(System.Runtime.InteropServices.SafeHandle,Windows.Win32.System.SystemInformation.GROUP_AFFINITY@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetThreadGroupAffinity(Windows.Win32.Foundation.HANDLE,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetThreadGroupAffinity(Windows.Win32.Foundation.HANDLE,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*,Windows.Win32.System.SystemInformation.GROUP_AFFINITY*)">
            <summary>Sets the processor group affinity for the specified thread.</summary>
            <param name="hThread">
            <para>A handle to the thread. The handle must have the THREAD_SET_INFORMATION access right. For more information, see <a href="https://docs.microsoft.com/windows/desktop/ProcThread/thread-security-and-access-rights">Thread Security and Access Rights</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processtopologyapi/nf-processtopologyapi-setthreadgroupaffinity#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="GroupAffinity">A <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-group_affinity">GROUP_AFFINITY</a> structure that specifies the processor group affinity to be used for the specified thread.</param>
            <param name="PreviousGroupAffinity">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-group_affinity">GROUP_AFFINITY</a> structure to receive the thread's previous group affinity. This parameter can be NULL.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, use <a href="https://docs.microsoft.com/windows/desktop/api/adshlp/nf-adshlp-adsgetlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>Starting with Windows 11 and Windows Server 2022, on a system with more than 64 processors, process and thread affinities span all processors in the system, across all <a href="https://docs.microsoft.com/windows/desktop/ProcThread/processor-groups">processor groups</a>, by default. The <b>SetThreadGroupAffinity</b> function restricts a thread's affinity to the processors over the single processor group specified by the given <i>GroupAffinity</i>. This group will also become the thread's primary group. To compile an application that uses this function, set _WIN32_WINNT &gt;= 0x0601. For more information, see <a href="https://docs.microsoft.com/windows/desktop/WinProg/using-the-windows-headers">Using the Windows Headers</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processtopologyapi/nf-processtopologyapi-setthreadgroupaffinity#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.EnumSystemFirmwareTables(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.Span{System.Byte})">
            <inheritdoc cref="M:Windows.Win32.PInvoke.EnumSystemFirmwareTables(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.Byte*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.EnumSystemFirmwareTables(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.Byte*,System.UInt32)">
            <summary>Enumerates all system firmware tables of the specified type.</summary>
            <param name="FirmwareTableProviderSignature"></param>
            <param name="pFirmwareTableEnumBuffer">
            <para>A pointer to a buffer that receives the list of  firmware tables. If this parameter is <b>NULL</b>, the return value is the required buffer size. For more information on the contents of this buffer, see the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-enumsystemfirmwaretables#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="BufferSize">The size of the <i>pFirmwareTableBuffer</i> buffer, in bytes.</param>
            <returns>
            <para>If the function succeeds, the return value is the number of bytes written to the buffer. This value will always be less than or equal to <i>BufferSize</i>. If the function fails because the buffer is not large enough, the return value is the required buffer size, in bytes. This value is always greater than <i>BufferSize</i>. If the function fails for any other reason, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>Starting with Windows 10, version 1803, Universal Windows apps can access the System Management BIOS (SMBIOS) information by declaring the <b>smbios</b> restricted capability in the app manifest. See <a href="https://docs.microsoft.com/windows/desktop/SysInfo/access-smbios-information-from-a-universal-windows-app">Access SMBIOS information from a Universal Windows App</a> for details. Only raw SMBIOS (RSMB) firmware tables can be accessed from a Universal Windows app. As of Windows Server 2003 with Service Pack 1 (SP1), applications cannot access the \Device\PhysicalMemory object. Access to this object is limited to kernel-mode drivers. This change affects applications read System Management BIOS (SMBIOS) or other BIOS data stored in the lowest 1MB of physical memory. Applications have the following alternatives to read data from low physical memory: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-enumsystemfirmwaretables#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetSystemFirmwareTable(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.UInt32,System.Span{System.Byte})">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetSystemFirmwareTable(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.UInt32,System.Byte*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetSystemFirmwareTable(Windows.Win32.System.SystemInformation.FIRMWARE_TABLE_PROVIDER,System.UInt32,System.Byte*,System.UInt32)">
            <summary>Retrieves the specified firmware table from the firmware table provider.</summary>
            <param name="FirmwareTableProviderSignature"></param>
            <param name="FirmwareTableID">
            <para>The identifier of the firmware table. This identifier is little endian, you must reverse the characters in the string. For example, FACP is an ACPI provider, as described in the Signature field of the DESCRIPTION_HEADER structure in the ACPI specification (see the [Advanced Configuration and Power Interface (ACPI) Specification](https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/). Therefore, use 'PCAF' to specify the FACP table, as shown in the following example: <c>retVal = GetSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);</c> For more information, see the Remarks section of the <a href="https://docs.microsoft.com/windows/desktop/api/sysinfoapi/nf-sysinfoapi-enumsystemfirmwaretables">EnumSystemFirmwareTables</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemfirmwaretable#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="pFirmwareTableBuffer">
            <para>A pointer to a buffer that receives the requested firmware table. If this parameter is <b>NULL</b>, the return value is the required buffer size. For more information on the contents of this buffer, see the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemfirmwaretable#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="BufferSize">The size of the <i>pFirmwareTableBuffer</i> buffer, in bytes.</param>
            <returns>
            <para>If the function succeeds, the return value is the number of bytes written to the buffer. This value will always be less than or equal to <i>BufferSize</i>. If the function fails because the buffer is not large enough, the return value is the required buffer size, in bytes. This value is always greater than <i>BufferSize</i>. If the function fails for any other reason, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>Starting with Windows 10, version 1803, Universal Windows apps can access the System Management BIOS (SMBIOS) information by declaring the <b>smbios</b> restricted capability in the app manifest. See <a href="https://docs.microsoft.com/windows/desktop/SysInfo/access-smbios-information-from-a-universal-windows-app">Access SMBIOS information from a Universal Windows App</a> for details. Only raw SMBIOS (RSMB) firmware tables can be accessed from a Universal Windows app. As of Windows Server 2003 with Service Pack 1 (SP1), applications cannot access the \Device\PhysicalMemory object. Access to this object is limited to kernel-mode drivers. This change affects applications read System Management BIOS (SMBIOS) or other BIOS data stored in the lowest 1MB of physical memory. Applications have the following alternatives to read data from low physical memory: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemfirmwaretable#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateFile(System.String,System.UInt32,Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE,System.Nullable{Windows.Win32.Security.SECURITY_ATTRIBUTES},Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,System.Runtime.InteropServices.SafeHandle)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CreateFile(Windows.Win32.Foundation.PCWSTR,System.UInt32,Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE,Windows.Win32.Security.SECURITY_ATTRIBUTES*,Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,Windows.Win32.Foundation.HANDLE)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateFile(Windows.Win32.Foundation.PCWSTR,System.UInt32,Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE,Windows.Win32.Security.SECURITY_ATTRIBUTES*,Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,Windows.Win32.Foundation.HANDLE)">
            <summary>Creates or opens a file or I/O device. The most commonly used I/O devices are as follows:\_file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, and pipe. (Unicode)</summary>
            <param name="lpFileName">
            <para>The name of the file or device to be created or opened. You may use either forward slashes (/) or backslashes (\\) in this name. In the ANSI version of this function, the name is limited to <b>MAX_PATH</b> characters. To extend this limit to 32,767 wide characters, use this Unicode version of the function and prepend "\\\\?\\" to the path. For more information, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/naming-a-file">Naming Files, Paths, and Namespaces</a>. For information on special device names, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/defining-an-ms-dos-device-name">Defining an MS-DOS Device Name</a>. To create a file stream, specify the name of the file, a colon, and then the name of the stream. For more information, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-streams">File Streams</a>. <div class="alert"><b>Tip</b>  Starting with Windows 10, version 1607, for the unicode version of this function (<b>CreateFileW</b>), you can opt-in to remove the <b>MAX_PATH</b> limitation without prepending "\\?\". See the "Maximum Path Length Limitation" section of <a href="https://docs.microsoft.com/windows/desktop/FileIO/naming-a-file">Naming Files, Paths, and Namespaces</a> for details.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwDesiredAccess">
            <para>The requested access to the file or device, which can be summarized as read, write, both or neither zero). The most commonly used values are <b>GENERIC_READ</b>, <b>GENERIC_WRITE</b>, or both (<c>GENERIC_READ | GENERIC_WRITE</c>). For more information, see <a href="https://docs.microsoft.com/windows/desktop/SecAuthZ/generic-access-rights">Generic Access Rights</a>, <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-security-and-access-rights">File Security and Access Rights</a>, <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-access-rights-constants">File Access Rights Constants</a>, and <a href="https://docs.microsoft.com/windows/desktop/SecAuthZ/access-mask">ACCESS_MASK</a>. If this parameter is zero, the application can query certain metadata such as file, directory, or device attributes without accessing that file or device, even if <b>GENERIC_READ</b> access would have been denied. You cannot request an access mode that conflicts with the sharing mode that is specified by the <i>dwShareMode</i> parameter in an open request that already has an open handle. For more information, see the Remarks section of this topic and <a href="https://docs.microsoft.com/windows/desktop/FileIO/creating-and-opening-files">Creating and Opening Files</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwShareMode">
            <para>The requested sharing mode of the file or device, which can be read, write, both, delete, all of these, or none (refer to the following table). Access requests to attributes or extended attributes are not affected by this flag. If this parameter is zero and <b>CreateFile</b> succeeds, the file or device cannot be shared and cannot be opened again until the handle to the file or device is closed. For more information, see the Remarks section. You cannot request a sharing mode that conflicts with the access mode that is specified in an existing request that has an open handle. <b>CreateFile</b> would fail and the <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> function would return <b>ERROR_SHARING_VIOLATION</b>. To enable a process to share a file or device while another process has the file or device open, use a</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="lpSecurityAttributes">
            <para>A pointer to a <a href="https://docs.microsoft.com/previous-versions/windows/desktop/legacy/aa379560(v=vs.85)">SECURITY_ATTRIBUTES</a> structure that contains two separate but related data members: an optional security descriptor, and a Boolean value that determines whether the returned handle can be inherited by child processes. This parameter can be <b>NULL</b>. If this parameter is <b>NULL</b>, the handle returned by <b>CreateFile</b> cannot be inherited by any child processes the application may create and the file or device associated with the returned handle gets a default security descriptor. The <b>lpSecurityDescriptor</b> member of the structure specifies a <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-security_descriptor">SECURITY_DESCRIPTOR</a> for a file or device. If this member is <b>NULL</b>, the file or device associated with the returned handle is assigned a default security descriptor. <b>CreateFile</b> ignores the <b>lpSecurityDescriptor</b> member when opening an existing file or device, but continues to use the <b>bInheritHandle</b> member. The <b>bInheritHandle</b> member of the structure specifies whether the returned handle can be inherited. For more information, see the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwCreationDisposition">
            <para>An action to take on a file or device that exists or does not exist. For devices other than files, this parameter is usually set to <b>OPEN_EXISTING</b>. For more information, see the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwFlagsAndAttributes">
            <para>The file or device attributes and flags, <b>FILE_ATTRIBUTE_NORMAL</b> being the most common default value for files. This parameter can include any combination of the available file attributes (<b>FILE_ATTRIBUTE_*</b>). All other file attributes override <b>FILE_ATTRIBUTE_NORMAL</b>. This parameter can also contain combinations of flags (<b>FILE_FLAG_*</b>) for control of file or device caching behavior, access modes, and other special-purpose flags. These combine with any <b>FILE_ATTRIBUTE_*</b> values. This parameter can also contain Security Quality of Service (SQOS) information by specifying the <b>SECURITY_SQOS_PRESENT</b> flag. Additional SQOS-related flags information is presented in the table following the attributes and flags tables. <div class="alert"><b>Note</b>  When <b>CreateFile</b> opens an existing file, it generally combines the file flags with the file attributes of the existing file, and ignores any file attributes supplied as part of <i>dwFlagsAndAttributes</i>. Special cases are detailed in <a href="https://docs.microsoft.com/windows/desktop/FileIO/creating-and-opening-files">Creating and Opening Files</a>.</div> <div> </div> Some of the following file attributes and flags may only apply to files and not necessarily all other types of devices that <b>CreateFile</b> can open. For additional information, see the Remarks section of this topic and <a href="https://docs.microsoft.com/windows/desktop/FileIO/creating-and-opening-files">Creating and Opening Files</a>. For more advanced access to file attributes, see <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-setfileattributesa">SetFileAttributes</a>. For a complete list of all file attributes with their values and descriptions, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-attribute-constants">File Attribute Constants</a>. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="hTemplateFile">
            <para>A valid handle to a template file with the <b>GENERIC_READ</b> access right. The template file supplies file attributes and extended attributes for the file that is being created. This parameter can be <b>NULL</b>. When opening an existing file, <b>CreateFile</b> ignores this parameter. When opening a new encrypted file, the file inherits the discretionary access control list from its parent directory. For additional information, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-encryption">File Encryption</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is an open handle to the specified file, device, named pipe, or mail slot. If the function fails, the return value is <b>INVALID_HANDLE_VALUE</b>. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para><b>CreateFile</b> was originally developed specifically for file interaction but has since been expanded and enhanced to include most other types of I/O devices and mechanisms available to Windows developers. This section attempts to cover the varied issues developers may experience when using <b>CreateFile</b> in different contexts and with different I/O types. The text attempts to use the word <i>file</i> only when referring specifically to data stored in an actual file on a file system. However, some uses of <i>file</i> may be referring more generally to an I/O object that supports file-like mechanisms. This liberal use of the term <i>file</i> is particularly prevalent in constant names and parameter names because of the previously mentioned historical reasons. When an application is finished using the object handle returned by <b>CreateFile</b>, use the <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-closehandle">CloseHandle</a> function to close the handle. This not only frees up system resources, but can have wider influence on things like sharing the file or device and committing data to disk. Specifics are noted within this topic as appropriate. <b>Windows Server 2003 and Windows XP:  </b>A sharing violation occurs if an attempt is made to open a file or directory for deletion on a remote computer when the value of the <i>dwDesiredAccess</i> parameter is the <b>DELETE</b> access flag (0x00010000) <b>OR</b>'ed with any other access flag, and the remote file or directory has not been opened with <b>FILE_SHARE_DELETE</b>. To avoid the sharing violation in this scenario, open the remote file or directory with the <b>DELETE</b> access right only, or call <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-deletefilea">DeleteFile</a> without first opening the file or directory for deletion. Some file systems, such as the NTFS file system, support compression or encryption for individual files and directories. On volumes that have a mounted file system with this support, a new file inherits the compression and encryption attributes of its directory. You cannot use <b>CreateFile</b> to control compression, decompression, or decryption on a file or directory. For more information, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/creating-and-opening-files">Creating and Opening Files</a>, <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-compression-and-decompression">File Compression and Decompression</a>, and <a href="https://docs.microsoft.com/windows/desktop/FileIO/file-encryption">File Encryption</a>. <b>Windows Server 2003 and Windows XP:  </b>For backward compatibility purposes, <b>CreateFile</b> does not apply inheritance rules when you specify a security descriptor in <i>lpSecurityAttributes</i>. To support inheritance, functions that later query the security descriptor of this file may heuristically determine and report that inheritance is in effect. For more information, see <a href="https://docs.microsoft.com/windows/desktop/SecAuthZ/automatic-propagation-of-inheritable-aces">Automatic Propagation of Inheritable ACEs</a>. As stated previously, if the <i>lpSecurityAttributes</i> parameter is <b>NULL</b>, the handle returned by <b>CreateFile</b> cannot be inherited by any child processes your application may create. The following information regarding this parameter also applies: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.VirtualFree(System.Void*,System.UIntPtr,Windows.Win32.System.Memory.VIRTUAL_FREE_TYPE)">
            <summary>Releases, decommits, or releases and decommits a region of pages within the virtual address space of the calling process.</summary>
            <param name="lpAddress">
            <para>A pointer to the base address of the region of pages to be freed. If the _dwFreeType_ parameter is **MEM_RELEASE**, this parameter must be the base address returned by the [VirtualAlloc](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc) function when the region of pages is reserved.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/memoryapi/nf-memoryapi-virtualfree#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwSize">
            <para>The size of the region of memory to be freed, in bytes. If the _dwFreeType_ parameter is **MEM_RELEASE**, this parameter must be 0 (zero). The function frees the entire region that is reserved in the initial allocation call to [VirtualAlloc](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc). If the _dwFreeType_ parameter is **MEM_DECOMMIT**, the function decommits all memory pages that contain one or more bytes in the range from the _lpAddress_ parameter to `(lpAddress+dwSize)`. This means, for example, that a 2-byte region of memory that straddles a page boundary causes both pages to be decommitted. If _lpAddress_ is the base address returned by [VirtualAlloc](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc) and _dwSize_ is 0 (zero), the function decommits the entire region that is allocated by **VirtualAlloc**. After that, the entire region is in the reserved state.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/memoryapi/nf-memoryapi-virtualfree#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwFreeType"></param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is 0 (zero). To get extended error information, call [GetLastError](/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para>Each page of memory in a process virtual address space has a [Page State](/windows/win32/Memory/page-state). The **VirtualFree** function can decommit a range of pages that are in different states, some committed and some uncommitted. This means that you can decommit a range of pages without first determining the current commitment state of each page. Decommitting a page releases its physical storage, either in memory or in the paging file on disk. If a page is decommitted but not released, its state changes to reserved. Subsequently, you can call [VirtualAlloc](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc) to commit it, or **VirtualFree** to release it. Attempts to read from or write to a reserved page results in an access violation exception. The **VirtualFree** function can release a range of pages that are in different states, some reserved and some committed. This means that you can release a range of pages without first determining the current commitment state of each page. The entire range of pages originally reserved by the [VirtualAlloc](nf-memoryapi-virtualalloc.md) function must be released at the same time. If a page is released, its state changes to free, and it is available for subsequent allocation operations. After memory is released or decommited, you can never refer to the memory again. Any information that may have been in that memory is gone forever. Attempting to read from or write to a free page results in an access violation exception. If you need to keep information, do not decommit or free memory that contains the information. The **VirtualFree** function can be used on an AWE region of memory, and it invalidates any physical page mappings in the region when freeing the address space. However, the physical page is not deleted, and the application can use them. The application must explicitly call [FreeUserPhysicalPages](nf-memoryapi-freeuserphysicalpages.md) to free the physical pages. When the process is terminated, all resources are cleaned up automatically. **Windows 10, version 1709 and later and Windows 11:** To delete the enclave when you finish using it, call [DeleteEnclave](../enclaveapi/nf-enclaveapi-deleteenclave.md). You cannot delete a VBS enclave by calling the **VirtualFree** or [VirtualFreeEx](nf-memoryapi-virtualfreeex.md) function. You can still delete an SGX enclave by calling **VirtualFree** or **VirtualFreeEx**. **Windows 10, version 1507, Windows 10, version 1511, Windows 10, version 1607 and Windows 10, version 1703:** To delete the enclave when you finish using it, call the **VirtualFree** or [VirtualFreeEx](nf-memoryapi-virtualfreeex.md) function and specify the following values: - The base address of the enclave for the _lpAddress_ parameter. - 0 for the _dwSize_ parameter. - **MEM_RELEASE** for the _dwFreeType_ parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/memoryapi/nf-memoryapi-virtualfree#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.VirtualAlloc(System.Void*,System.UIntPtr,Windows.Win32.System.Memory.VIRTUAL_ALLOCATION_TYPE,Windows.Win32.System.Memory.PAGE_PROTECTION_FLAGS)">
            <summary>Reserves, commits, or changes the state of a region of pages in the virtual address space of the calling process. (VirtualAlloc)</summary>
            <param name="lpAddress">
            <para>The starting address of the region to allocate. If the memory is being reserved, the specified address is rounded down to the nearest multiple of the allocation granularity. If the memory is already reserved and is being committed, the address is rounded down to the next page boundary. To determine the size of a page and the allocation granularity on the host computer, use the [GetSystemInfo](/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo) function. If this parameter is **NULL**, the system determines where to allocate the region. If this address is within an enclave that you have not initialized by calling [InitializeEnclave](/windows/win32/api/enclaveapi/nf-enclaveapi-initializeenclave), **VirtualAlloc** allocates a page of zeros for the enclave at that address. The page must be previously uncommitted, and will not be measured with the EEXTEND instruction of the Intel Software Guard Extensions programming model. If the address is within an enclave that you initialized, then the allocation operation fails with the **ERROR_INVALID_ADDRESS** error. That is true for enclaves that do not support dynamic memory management (i.e. SGX1). SGX2 enclaves will permit allocation, and the page must be accepted by the enclave after it has been allocated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwSize">The size of the region, in bytes. If the _lpAddress_ parameter is **NULL**, this value is rounded up to the next page boundary. Otherwise, the allocated pages include all pages containing one or more bytes in the range from _lpAddress_ to _lpAddress_+_dwSize_. This means that a 2-byte range straddling a page boundary causes both pages to be included in the allocated region.</param>
            <param name="flAllocationType"></param>
            <param name="flProtect">The memory protection for the region of pages to be allocated. If the pages are being committed, you can specify any one of the [memory protection constants](/windows/win32/Memory/memory-protection-constants).</param>
            <returns>
            <para>If the function succeeds, the return value is the base address of the allocated region of pages. If the function fails, the return value is **NULL**. To get extended error information, call [GetLastError](/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
            </returns>
            <remarks>
            <para>Each page has an associated [page state](/windows/win32/Memory/page-state). The **VirtualAlloc** function can perform the following operations: - Commit a region of reserved pages - Reserve a region of free pages - Simultaneously reserve and commit a region of free pages **VirtualAlloc** cannot reserve a reserved page. It can commit a page that is already committed. This means you can commit a range of pages, regardless of whether they have already been committed, and the function will not fail. You can use **VirtualAlloc** to reserve a block of pages and then make additional calls to **VirtualAlloc** to commit individual pages from the reserved block. This enables a process to reserve a range of its virtual address space without consuming physical storage until it is needed. If the _lpAddress_ parameter is not **NULL**, the function uses the _lpAddress_ and _dwSize_ parameters to compute the region of pages to be allocated. The current state of the entire range of pages must be compatible with the type of allocation specified by the _flAllocationType_ parameter. Otherwise, the function fails and none of the pages are allocated. This compatibility requirement does not preclude committing an already committed page, as mentioned previously. To execute dynamically generated code, use **VirtualAlloc** to allocate memory and the [VirtualProtect](/windows/win32/api/memoryapi/nf-memoryapi-virtualprotect) function to grant **PAGE_EXECUTE** access. The **VirtualAlloc** function can be used to reserve an [Address Windowing Extensions](/windows/win32/Memory/address-windowing-extensions) (AWE) region of memory within the virtual address space of a specified process. This region of memory can then be used to map physical pages into and out of virtual memory as required by the application. The **MEM_PHYSICAL** and **MEM_RESERVE** values must be set in the _AllocationType_ parameter. The **MEM_COMMIT** value must not be set. The page protection must be set to **PAGE_READWRITE**. The [VirtualFree](/windows/win32/api/memoryapi/nf-memoryapi-virtualfree) function can decommit a committed page, releasing the page's storage, or it can simultaneously decommit and release a committed page. It can also release a reserved page, making it a free page. When creating a region that will be executable, the calling program bears responsibility for ensuring cache coherency via an appropriate call to [FlushInstructionCache](/windows/win32/api/processthreadsapi/nf-processthreadsapi-flushinstructioncache) once the code has been set in place. Otherwise attempts to execute code out of the newly executable region may produce unpredictable results.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DeviceIoControl(System.Runtime.InteropServices.SafeHandle,System.UInt32,System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.UInt32@,System.Threading.NativeOverlapped*)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.DeviceIoControl(Windows.Win32.Foundation.HANDLE,System.UInt32,System.Void*,System.UInt32,System.Void*,System.UInt32,System.UInt32*,System.Threading.NativeOverlapped*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.DeviceIoControl(System.Runtime.InteropServices.SafeHandle,System.UInt32,System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Threading.NativeOverlapped*)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.DeviceIoControl(Windows.Win32.Foundation.HANDLE,System.UInt32,System.Void*,System.UInt32,System.Void*,System.UInt32,System.UInt32*,System.Threading.NativeOverlapped*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.DeviceIoControl(Windows.Win32.Foundation.HANDLE,System.UInt32,System.Void*,System.UInt32,System.Void*,System.UInt32,System.UInt32*,System.Threading.NativeOverlapped*)">
            <summary>Sends a control code directly to a specified device driver, causing the corresponding device to perform the corresponding operation.</summary>
            <param name="hDevice">
            <para>A handle to the device on which the operation is to be performed. The device is typically a volume, directory, file, or stream. To retrieve a device handle, use the <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a> function. For more information, see Remarks.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="dwIoControlCode">
            <para>The control code for the operation. This value identifies the specific operation to be performed and the type of device on which to perform it. For a list of the control codes, see Remarks. The documentation for each control code provides usage details for the <i>lpInBuffer</i>, <i>nInBufferSize</i>, <i>lpOutBuffer</i>, and <i>nOutBufferSize</i> parameters.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="lpInBuffer">
            <para>A pointer to the input buffer that contains the data required to perform the operation. The format of this data depends on the value of the <i>dwIoControlCode</i> parameter. This parameter can be <b>NULL</b> if <i>dwIoControlCode</i> specifies an operation that does not require input data.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="nInBufferSize">The size of the input buffer, in bytes.</param>
            <param name="lpOutBuffer">
            <para>A pointer to the output buffer that is to receive the data returned by the operation. The format of this data depends on the value of the <i>dwIoControlCode</i> parameter. This parameter can be <b>NULL</b> if <i>dwIoControlCode</i> specifies an operation that does not return data.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="nOutBufferSize">The size of the output buffer, in bytes.</param>
            <param name="lpBytesReturned">
            <para>A pointer to a variable that receives the size of the data stored in the output buffer, in bytes. If the output buffer is too small to receive any data,  the call fails, <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns <b>ERROR_INSUFFICIENT_BUFFER</b>, and <i>lpBytesReturned</i> is zero. If the output buffer is too small to hold all of the data but can hold some entries, some drivers will return as much data as fits. In this case, the call fails, <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns <b>ERROR_MORE_DATA</b>, and <i>lpBytesReturned</i> indicates the amount of data received. Your application should call <b>DeviceIoControl</b> again with the same operation, specifying a new starting point. If <i>lpOverlapped</i> is <b>NULL</b>, <i>lpBytesReturned</i> cannot be <b>NULL</b>. Even when an operation returns no output data and <i>lpOutBuffer</i> is <b>NULL</b>, <b>DeviceIoControl</b> makes use of <i>lpBytesReturned</i>. After such an operation, the value of <i>lpBytesReturned</i> is meaningless. If <i>lpOverlapped</i> is not <b>NULL</b>, <i>lpBytesReturned</i> can be <b>NULL</b>. If this parameter is not <b>NULL</b> and the operation returns data, <i>lpBytesReturned</i> is meaningless until the overlapped operation has completed. To retrieve the number of bytes returned, call <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-getoverlappedresult">GetOverlappedResult</a>. If <i>hDevice</i> is associated with an I/O completion port, you can retrieve the number of bytes returned by calling <a href="https://docs.microsoft.com/windows/desktop/api/ioapiset/nf-ioapiset-getqueuedcompletionstatus">GetQueuedCompletionStatus</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="lpOverlapped">
            <para>A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure. If <i>hDevice</i> was opened without specifying <b>FILE_FLAG_OVERLAPPED</b>, <i>lpOverlapped</i> is ignored. If <i>hDevice</i> was opened with the <b>FILE_FLAG_OVERLAPPED</b> flag, the operation is performed as an overlapped (asynchronous) operation. In this case, <i>lpOverlapped</i> must point to a valid <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-overlapped">OVERLAPPED</a> structure that contains a handle to an event object. Otherwise, the function fails in unpredictable ways. For overlapped operations, <b>DeviceIoControl</b> returns immediately, and the event object is signaled when the operation has been completed. Otherwise, the function does not return until the operation has been completed or an error occurs.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the operation completes successfully, the return value is nonzero (TRUE). If the operation fails or is pending, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>To retrieve a handle to the device, you must call the <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a> function with either the name of a device or the name of the driver associated with a device. To specify a device name, use the following format: \\\\.&#92;<i>DeviceName</i> <b>DeviceIoControl</b> can accept a handle to a specific device. For example, to open a handle to the logical drive A: with <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a>, specify \\\\.\a:. Alternatively, you can use the names \\\\.\PhysicalDrive0, \\\\.\PhysicalDrive1, and so on, to open handles to the physical drives on a system. You should specify the <b>FILE_SHARE_READ</b> and <b>FILE_SHARE_WRITE</b> access flags when calling <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a> to open a handle to a device driver. However, when you open a communications resource, such as a serial port, you must specify exclusive access. Use the other <b>CreateFile</b> parameters as follows when opening a device handle: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.FreeLibrary(Windows.Win32.Foundation.HMODULE)">
            <summary>Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count.</summary>
            <param name="hLibModule">
            <para>A handle to the loaded library module. The <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya">LoadLibrary</a>, <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexa">LoadLibraryEx</a>, <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandlea">GetModuleHandle</a>, or <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandleexa">GetModuleHandleEx</a> function returns this handle.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call the <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> function.</para>
            </returns>
            <remarks>
            <para>The system maintains a per-process reference count for each loaded module. A  module that was loaded at process initialization due to load-time dynamic linking has a reference count of one. The reference count for a module is incremented each time the  module is loaded by a call to <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya">LoadLibrary</a>. The reference count is also incremented by a call to <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexa">LoadLibraryEx</a> unless the  module  is being loaded for the first time and is being loaded as   a data or image file. The reference count is decremented each time the <b>FreeLibrary</b> or <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibraryandexitthread">FreeLibraryAndExitThread</a> function is called for the module. When a  module's reference count reaches zero or the process terminates, the system unloads the module from the address space of the  process. Before unloading a library module, the system enables the module to detach from the process by calling the module's <a href="https://docs.microsoft.com/windows/desktop/Dlls/dllmain">DllMain</a> function, if it has one, with the DLL_PROCESS_DETACH value. Doing so gives the library module an opportunity to clean up resources allocated on behalf of the current process. After the entry-point function returns, the library module is removed from the address space of the current process. It is not safe to call <b>FreeLibrary</b> from <a href="https://docs.microsoft.com/windows/desktop/Dlls/dllmain">DllMain</a>. For more information, see the Remarks section in <a href="https://docs.microsoft.com/windows/desktop/Dlls/dllmain">DllMain</a>. Calling <b>FreeLibrary</b> does not affect other processes that are using the same module. Use caution when calling <b>FreeLibrary</b> with a handle returned by <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandlea">GetModuleHandle</a>. The <b>GetModuleHandle</b> function does not increment a module's reference count, so passing this handle to <b>FreeLibrary</b> can cause a module to be unloaded prematurely. A thread that must unload the DLL in which it is executing and then terminate itself should call <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibraryandexitthread">FreeLibraryAndExitThread</a> instead of calling <b>FreeLibrary</b> and <b>ExitThread</b> separately. Otherwise, a race condition can occur. For details, see the Remarks section of <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibraryandexitthread">FreeLibraryAndExitThread</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.LoadLibrary(System.String)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.LoadLibrary(Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.LoadLibrary(Windows.Win32.Foundation.PCWSTR)">
            <summary>Loads the specified module into the address space of the calling process. (LoadLibraryW)</summary>
            <param name="lpLibFileName">
            <para>The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file). If the specified module is an executable module, static imports are not loaded; instead, the module is loaded as if by <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexw">LoadLibraryEx</a> with the `DONT_RESOLVE_DLL_REFERENCES` flag. The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the <b>LIBRARY</b> keyword in the module-definition (.def) file. If the string specifies a full path, the function searches only that path for the module. If the string specifies a relative path or a module name without a path, the function uses a standard search strategy to find the module; for more information, see the Remarks. If the function cannot find the  module, the function fails. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). For more information about paths, see <a href="https://docs.microsoft.com/windows/desktop/FileIO/naming-a-file">Naming a File or Directory</a>. If the string specifies a module name without a path and the file name extension is omitted, the function appends the default library extension ".DLL" to the module name. To prevent the function from appending ".DLL" to the module name, include a trailing point character (.) in the module name string.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryw#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is a handle to the module. If the function fails, the return value is NULL. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>To enable or disable error messages displayed by the loader during DLL loads, use the <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-seterrormode">SetErrorMode</a> function. <b>LoadLibrary</b> can be used to load a library module into the address space of the process and return a handle that can be used in <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getprocaddress">GetProcAddress</a> to get the address of a DLL function. <b>LoadLibrary</b> can also be used to load other executable modules. For example, the function can specify an .exe file to get a handle that can be used in <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-findresourcea">FindResource</a> or <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadresource">LoadResource</a>. However, do not use <b>LoadLibrary</b> to run an .exe file. Instead, use the <a href="https://docs.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa">CreateProcess</a> function. If the specified module is a DLL that is not already loaded for the calling process, the system calls the DLL's <a href="https://docs.microsoft.com/windows/desktop/Dlls/dllmain">DllMain</a> function with the <b>DLL_PROCESS_ATTACH</b> value. If <b>DllMain</b> returns <b>TRUE</b>, <b>LoadLibrary</b> returns a handle to the module. If <b>DllMain</b> returns <b>FALSE</b>, the system unloads the DLL from the process address space and <b>LoadLibrary</b> returns <b>NULL</b>. It is not safe to call <b>LoadLibrary</b> from <b>DllMain</b>. For more information, see the Remarks section in <b>DllMain</b>. Module handles are not global or inheritable. A call to <b>LoadLibrary</b> by one process does not produce a handle that another process can use — for example, in calling <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getprocaddress">GetProcAddress</a>. The other process must make its own call to <b>LoadLibrary</b> for the module before calling <b>GetProcAddress</b>. If <i>lpFileName</i> does not include a path and there is more than one loaded module with the same base name and extension, the function returns a handle to the module that was loaded first. If no file name extension is specified in the <i>lpFileName</i> parameter, the default library extension .dll is appended. However, the file name string can include a trailing point character (.) to indicate that the module name has no extension. When no path is specified, the function searches for loaded modules whose base name matches the base name of the module to be loaded. If the name matches, the load succeeds. Otherwise, the function searches for the file. The first directory searched is the directory containing the image file used to create the calling process (for more information, see the <a href="https://docs.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa">CreateProcess</a> function). Doing this allows private dynamic-link library (DLL) files associated with a process to be found without adding the process's installed directory to the PATH environment variable. If a relative path is specified, the entire relative path is appended to every token in the DLL search path list. To load a module from a relative path without searching any other path, use <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamea">GetFullPathName</a> to get a nonrelative path and call <b>LoadLibrary</b> with the nonrelative path. For more information on the DLL search order, see <a href="https://docs.microsoft.com/windows/desktop/Dlls/dynamic-link-library-search-order">Dynamic-Link Library Search Order</a>. The search path can be altered using the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-setdlldirectorya">SetDllDirectory</a> function. This solution is recommended instead of using <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-setcurrentdirectory">SetCurrentDirectory</a> or hard-coding the full path to the DLL. If a path is specified and there is a redirection file for the application, the function searches for the module in the application's directory. If the module exists in the application's directory, <b>LoadLibrary</b> ignores the specified path and loads the module from the application's directory. If the module does not exist in the application's directory, <b>LoadLibrary</b> loads the module from the specified directory. For more information, see <a href="https://docs.microsoft.com/windows/desktop/Dlls/dynamic-link-library-redirection">Dynamic Link Library Redirection</a>. If you call <b>LoadLibrary</b> with the name of an assembly without a path specification and the assembly is listed in the system compatible manifest, the call is automatically redirected to the side-by-side assembly. The system maintains a per-process reference count on all loaded modules. Calling <b>LoadLibrary</b> increments the reference count. Calling the <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibrary">FreeLibrary</a> or <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibraryandexitthread">FreeLibraryAndExitThread</a> function decrements the reference count. The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count). <b>Windows Server 2003 and Windows XP:  </b>The Visual C++ compiler supports a syntax that enables you to declare thread-local variables: <b>_declspec(thread)</b>. If you use this syntax in a DLL, you will not be able to load the DLL explicitly using <b>LoadLibrary</b> on versions of Windows prior to Windows Vista. If your DLL will be loaded explicitly, you must use the thread local storage functions instead of <b>_declspec(thread)</b>. For an example, see <a href="https://docs.microsoft.com/windows/desktop/Dlls/using-thread-local-storage-in-a-dynamic-link-library">Using Thread Local Storage in a Dynamic Link Library</a>. <h3><a id="Security_Remarks"></a><a id="security_remarks"></a><a id="SECURITY_REMARKS"></a>Security Remarks</h3> Do not use the <a href="https://docs.microsoft.com/windows/desktop/api/processenv/nf-processenv-searchpathw">SearchPath</a> function to retrieve a path to a DLL for a subsequent <b>LoadLibrary</b> call. The <b>SearchPath</b> function uses a different search order than <b>LoadLibrary</b> and it does not use safe process search mode unless this is explicitly enabled by calling <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-setsearchpathmode">SetSearchPathMode</a> with <b>BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE</b>. Therefore, <b>SearchPath</b> is likely to first search the user’s current working directory for the specified DLL. If an attacker has copied a malicious version of a DLL into the current working directory, the path retrieved by <b>SearchPath</b> will point to the malicious DLL, which <b>LoadLibrary</b> will then load. Do not make assumptions about the operating system version based on a <b>LoadLibrary</b> call that searches for a DLL. If the application is running in an environment where the DLL is legitimately not present but a malicious version of the DLL is in the search path, the malicious version of the DLL may be loaded. Instead, use the recommended techniques described in <a href="https://docs.microsoft.com/windows/desktop/SysInfo/getting-the-system-version">Getting the System Version</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryw#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetProcAddress(System.Runtime.InteropServices.SafeHandle,System.String)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetProcAddress(Windows.Win32.Foundation.HMODULE,Windows.Win32.Foundation.PCSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetProcAddress(Windows.Win32.Foundation.HMODULE,Windows.Win32.Foundation.PCSTR)">
            <summary>Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL).</summary>
            <param name="hModule">
            <para>A handle to the DLL module that contains the function or variable. The <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibrarya">LoadLibrary</a>, <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexa">LoadLibraryEx</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-loadpackagedlibrary">LoadPackagedLibrary</a>, or <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandlea">GetModuleHandle</a> function returns this handle. The <b>GetProcAddress</b> function does not retrieve addresses from modules that were loaded using the <b>LOAD_LIBRARY_AS_DATAFILE</b> flag. For more information, see <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexa">LoadLibraryEx</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-getprocaddress#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="lpProcName">The function or variable name, or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero.</param>
            <returns>
            <para>If the function succeeds, the return value is the address of the exported function or variable. If the function fails, the return value is NULL. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>The spelling and case of a function name pointed to by <i>lpProcName</i> must be identical to that in the <b>EXPORTS</b> statement of the source DLL's module-definition (.def) file. The exported names of functions may differ from the names you use when calling these functions in your code. This difference is hidden by macros used in the SDK header files. For more information, see <a href="https://docs.microsoft.com/windows/desktop/Intl/conventions-for-function-prototypes">Conventions for Function Prototypes</a>. The <i>lpProcName</i> parameter can identify the DLL function by specifying an ordinal value associated with the function in the <b>EXPORTS</b> statement. <b>GetProcAddress</b> verifies that the specified ordinal is in the range 1 through the highest ordinal value exported in the .def file. The function then uses the ordinal as an index to read the function's address from a function table. If the .def file does not number the functions consecutively from 1 to <i>N</i> (where <i>N</i> is the number of exported functions), an error can occur where <b>GetProcAddress</b> returns an invalid, non-NULL address, even though there is no function with the specified ordinal. If the function might not exist in the DLL module—for example, if the function  is available only on Windows Vista but the application  might be running on Windows XP—specify the function by name rather than by ordinal value and design your application to handle the case when the function is not available, as shown in the following code fragment.</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-getprocaddress#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.HRESULT_FROM_WIN32(Windows.Win32.Foundation.WIN32_ERROR)">
            <summary>
            Creates an <see cref="T:Windows.Win32.Foundation.HRESULT"/> that represents a given <see cref="T:Windows.Win32.Foundation.WIN32_ERROR"/>.
            </summary>
            <param name="error">The win32 error to be wrapped.</param>
            <returns>An <see cref="T:Windows.Win32.Foundation.HRESULT"/>.</returns>
            <remarks>
            Learn more in <see href="https://learn.microsoft.com/windows/win32/api/winerror/nf-winerror-hresult_from_win32">the documentation for this API</see>.
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiDestroyDeviceInfoList(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO)">
            <summary>The SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.</summary>
            <param name="DeviceInfoSet">A handle to the <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> to delete.</param>
            <returns>The function returns <b>TRUE</b> if it is successful. Otherwise, it returns <b>FALSE</b> and the logged error can be retrieved with a call to <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdidestroydeviceinfolist">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInfo(System.Runtime.InteropServices.SafeHandle,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInfo(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInfo(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*)">
            <summary>The SetupDiEnumDeviceInfo function returns a SP_DEVINFO_DATA structure that specifies a device information element in a device information set.</summary>
            <param name="DeviceInfoSet">A handle to the <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> for which to return an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_devinfo_data">SP_DEVINFO_DATA</a> structure that represents a device information element.</param>
            <param name="MemberIndex">A zero-based index of the device information element to retrieve.</param>
            <param name="DeviceInfoData">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_devinfo_data">SP_DEVINFO_DATA</a> structure to receive information about an enumerated device information element. The caller must set <i>DeviceInfoData</i>.<b>cbSize</b> to <c>sizeof(SP_DEVINFO_DATA)</c>.</param>
            <returns>The function returns <b>TRUE</b> if it is successful. Otherwise, it returns <b>FALSE</b> and the logged error can be retrieved with a call to <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</returns>
            <remarks>
            <para>Repeated calls to this function return a device information element for a different device. This function can be called repeatedly to get information about all devices in the device information set. To enumerate device information elements, an installer should initially call <b>SetupDiEnumDeviceInfo</b> with the <i>MemberIndex</i> parameter set to 0. The installer should then increment <i>MemberIndex</i> and call <b>SetupDiEnumDeviceInfo</b> until there are no more values (the function fails and a call to <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns <b>ERROR_NO_MORE_ITEMS</b>). Call <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdienumdeviceinterfaces">SetupDiEnumDeviceInterfaces</a> to get a context structure for a device <i>interface</i> element (versus a device <i>information</i> element).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdienumdeviceinfo#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceRegistryProperty(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA@,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_REGISTRY_PROPERTY,System.UInt32@,System.Span{System.Byte},System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiGetDeviceRegistryProperty(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_REGISTRY_PROPERTY,System.UInt32*,System.Byte*,System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceRegistryProperty(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA@,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_REGISTRY_PROPERTY,System.Span{System.Byte})">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiGetDeviceRegistryProperty(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_REGISTRY_PROPERTY,System.UInt32*,System.Byte*,System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceRegistryProperty(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_REGISTRY_PROPERTY,System.UInt32*,System.Byte*,System.UInt32,System.UInt32*)">
            <summary>The SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property. (Unicode)</summary>
            <param name="DeviceInfoSet">A handle to a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> that contains a device information element that represents the device for which to retrieve a Plug and Play property.</param>
            <param name="DeviceInfoData">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_devinfo_data">SP_DEVINFO_DATA</a> structure that specifies the device information element in <i>DeviceInfoSet</i>.</param>
            <param name="Property"></param>
            <param name="PropertyRegDataType">A pointer to a variable that receives the data type of the property that is being retrieved. This is one of the standard registry data types. This parameter is optional and can be <b>NULL</b>.</param>
            <param name="PropertyBuffer">A pointer to a buffer that receives the property that is being retrieved. If this parameter is set to <b>NULL</b>, and <i>PropertyBufferSize</i> is also set to zero, the function returns the required size for the buffer in <i>RequiredSize</i>.</param>
            <param name="PropertyBufferSize">The size, in bytes, of the <i>PropertyBuffer </i> buffer.</param>
            <param name="RequiredSize">A pointer to a variable of type DWORD that receives the required size, in bytes, of the <i>PropertyBuffer</i> buffer that is required to hold the data for the requested property. This parameter is optional and can be <b>NULL</b>.</param>
            <returns><b>SetupDiGetDeviceRegistryProperty</b> returns <b>TRUE</b> if the call was successful. Otherwise, it returns <b>FALSE</b> and the logged error can be retrieved by making a call to <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>. <b>SetupDiGetDeviceRegistryProperty</b> returns the ERROR_INVALID_DATA error code if the requested property does not exist for a device or if the property data is not valid.</returns>
            <remarks>
            <para>> [!NOTE] > The setupapi.h header defines SetupDiGetDeviceRegistryProperty as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertyw#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceInterfaceDetail(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA@,System.Span{System.Byte},System.UInt32@,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiGetDeviceInterfaceDetail(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W*,System.UInt32,System.UInt32*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceInterfaceDetail(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA@,System.Span{System.Byte})">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiGetDeviceInterfaceDetail(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W*,System.UInt32,System.UInt32*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetDeviceInterfaceDetail(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DETAIL_DATA_W*,System.UInt32,System.UInt32*,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*)">
            <summary>The SetupDiGetDeviceInterfaceDetail function returns details about a device interface. (Unicode)</summary>
            <param name="DeviceInfoSet">A pointer to the <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> that contains the interface for which to retrieve details. This handle is typically returned by <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdigetclassdevsw">SetupDiGetClassDevs</a>.</param>
            <param name="DeviceInterfaceData">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_device_interface_data">SP_DEVICE_INTERFACE_DATA</a> structure that specifies the interface in <i>DeviceInfoSet</i> for which to retrieve details. A pointer of this type is typically returned by <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdienumdeviceinterfaces">SetupDiEnumDeviceInterfaces</a>.</param>
            <param name="DeviceInterfaceDetailData">A pointer to an <a href="https://docs.microsoft.com/windows/win32/api/setupapi/ns-setupapi-sp_device_interface_detail_data_a">SP_DEVICE_INTERFACE_DETAIL_DATA</a> structure to receive information about the specified interface. This parameter is optional and can be <b>NULL</b>. This parameter must be <b>NULL</b> if <i>DeviceInterfaceDetailSize</i> is zero. If this parameter is specified, the caller must set <i>DeviceInterfaceDetailData</i><b>.cbSize</b> to <b>sizeof</b>(SP_DEVICE_INTERFACE_DETAIL_DATA) before calling this function. The <b>cbSize</b> member always contains the size of the fixed part of the data structure, not a size reflecting the variable-length string at the end.</param>
            <param name="DeviceInterfaceDetailDataSize">
            <para>The size of the <i>DeviceInterfaceDetailData</i> buffer. The buffer must be at least (<b>offsetof</b>(SP_DEVICE_INTERFACE_DETAIL_DATA, <b>DevicePath</b>) + <b>sizeof</b>(TCHAR)) bytes, to contain the fixed part of the structure and a single <b>NULL</b> to terminate an empty MULTI_SZ string. This parameter must be zero if <i>DeviceInterfaceDetailData</i> is <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceinterfacedetailw#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="RequiredSize">A pointer to a variable of type DWORD that receives the required size of the <i>DeviceInterfaceDetailData</i> buffer. This size includes the size of the fixed part of the structure plus the number of bytes required for the variable-length device path string. This parameter is optional and can be <b>NULL</b>.</param>
            <param name="DeviceInfoData">A pointer to a buffer that receives information about the device that supports the requested interface. The caller must set <i>DeviceInfoData</i><b>.cbSize</b> to <b>sizeof</b>(SP_DEVINFO_DATA). This parameter is optional and can be <b>NULL</b>.</param>
            <returns><b>SetupDiGetDeviceInterfaceDetail</b> returns <b>TRUE</b> if the function completed without error. If the function completed with an error, <b>FALSE</b> is returned and the error code for the failure can be retrieved by calling <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</returns>
            <remarks>
            <para>Using this function to get details about an interface is typically a two-step process: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceinterfacedetailw#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInterfaces(System.Runtime.InteropServices.SafeHandle,System.Nullable{Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA},System.Guid@,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInterfaces(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*,System.Guid*,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiEnumDeviceInterfaces(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVINFO_DATA*,System.Guid*,System.UInt32,Windows.Win32.Devices.DeviceAndDriverInstallation.SP_DEVICE_INTERFACE_DATA*)">
            <summary>The SetupDiEnumDeviceInterfaces function enumerates the device interfaces that are contained in a device information set.</summary>
            <param name="DeviceInfoSet">A pointer to a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> that contains the device interfaces for which to return information. This handle is typically returned by <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdigetclassdevsw">SetupDiGetClassDevs</a>.</param>
            <param name="DeviceInfoData">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_devinfo_data">SP_DEVINFO_DATA</a> structure that specifies a device information element in <i>DeviceInfoSet</i>. This parameter is optional and can be <b>NULL</b>. If this parameter is specified, <b>SetupDiEnumDeviceInterfaces</b> constrains the enumeration to the interfaces that are supported by the specified device. If this parameter is <b>NULL</b>, repeated calls to <b>SetupDiEnumDeviceInterfaces</b> return information about the interfaces that are associated with all the device information elements in <i>DeviceInfoSet</i>. This pointer is typically returned by <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdienumdeviceinfo">SetupDiEnumDeviceInfo</a>.</param>
            <param name="InterfaceClassGuid">A pointer to a GUID that specifies the device interface class for the requested interface.</param>
            <param name="MemberIndex">
            <para>A zero-based index into the list of interfaces in the device information set. The caller should call this function first with <i>MemberIndex</i> set to zero to obtain the first interface. Then, repeatedly increment <i>MemberIndex</i> and retrieve an interface until this function fails and <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns ERROR_NO_MORE_ITEMS. If <i>DeviceInfoData</i> specifies a particular device, the <i>MemberIndex</i> is relative to only the interfaces exposed by that device.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdienumdeviceinterfaces#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="DeviceInterfaceData">A pointer to a caller-allocated buffer that contains, on successful return, a completed <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_device_interface_data">SP_DEVICE_INTERFACE_DATA</a> structure that identifies an interface that meets the search parameters. The caller must set <i>DeviceInterfaceData</i>.<b>cbSize</b> to <b>sizeof</b>(SP_DEVICE_INTERFACE_DATA) before calling this function.</param>
            <returns><b>SetupDiEnumDeviceInterfaces</b> returns <b>TRUE</b> if the function completed without error. If the function completed with an error, <b>FALSE</b> is returned and the error code for the failure can be retrieved by calling <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</returns>
            <remarks>
            <para>Repeated calls to this function return an <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/ns-setupapi-sp_device_interface_data">SP_DEVICE_INTERFACE_DATA</a> structure for a different device interface. This function can be called repeatedly to get information about interfaces in a device information set that are associated with a particular device information element or that are associated with all device information elements. <i>DeviceInterfaceData</i> points to a structure that identifies a requested device interface. To get detailed information about an interface, call <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdigetdeviceinterfacedetaila">SetupDiGetDeviceInterfaceDetail</a>. The detailed information includes the name of the device interface that can be passed to a Win32 function such as <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-createfilea">CreateFile</a> (described in Microsoft Windows SDK documentation) to get a handle to the interface. See <a href="https://docs.microsoft.com/windows-hardware/drivers/install/overview-of-device-interface-classes">Overview of Device Interface Classes</a> for more info.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdienumdeviceinterfaces#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetClassDevs(System.Nullable{System.Guid},System.String,Windows.Win32.Foundation.HWND,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_GET_CLASS_DEVS_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SetupDiGetClassDevs(System.Guid*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.HWND,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_GET_CLASS_DEVS_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetupDiGetClassDevs(System.Guid*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.HWND,Windows.Win32.Devices.DeviceAndDriverInstallation.SETUP_DI_GET_CLASS_DEVS_FLAGS)">
            <summary>The SetupDiGetClassDevs function returns a handle to a device information set that contains requested device information elements for a local computer. (Unicode)</summary>
            <param name="ClassGuid">A pointer to the GUID for a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/overview-of-device-setup-classes">device setup class</a> or a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/overview-of-device-interface-classes">device interface class</a>. This pointer is optional and can be <b>NULL</b>. For more information about how to set <i>ClassGuid</i>, see the following <b>Remarks</b> section.</param>
            <param name="Enumerator">
            <para>A pointer to a NULL-terminated string that specifies: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdigetclassdevsw#parameters">Read more on learn.microsoft.com</see>.</para>
            </param>
            <param name="hwndParent">A handle to the top-level window to be used for a user interface that is associated with installing a device instance in the device information set. This handle is optional and can be <b>NULL</b>.</param>
            <param name="Flags">A variable of type DWORD that specifies control options that filter the device information elements that are added to the device information set. This parameter can be a bitwise OR of zero or more of the following flags. For more information about combining these flags, see the following <b>Remarks</b> section.</param>
            <returns>If the operation succeeds, <b>SetupDiGetClassDevs</b> returns a handle to a <a href="https://docs.microsoft.com/windows-hardware/drivers/install/device-information-sets">device information set</a> that contains all installed devices that matched the supplied parameters. If the operation fails, the function returns INVALID_HANDLE_VALUE. To get extended error information, call <a href="https://docs.microsoft.com/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</returns>
            <remarks>
            <para>The caller of <b>SetupDiGetClassDevs</b> must delete the returned device information set when it is no longer needed by calling <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdidestroydeviceinfolist">SetupDiDestroyDeviceInfoList</a>. Call <a href="https://docs.microsoft.com/windows/desktop/api/setupapi/nf-setupapi-setupdigetclassdevsexa">SetupDiGetClassDevsEx</a> to retrieve the devices for a class on a remote computer. <h3><a id="device_setup_class_control_options"></a><a id="DEVICE_SETUP_CLASS_CONTROL_OPTIONS"></a>Device Setup Class Control Options</h3> Use the following filtering options to control whether <b>SetupDiGetClassDevs</b> returns devices for all device setup classes or only for a specified device setup class: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupdigetclassdevsw#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="T:Windows.Win32.Security.SECURITY_ATTRIBUTES">
            <summary>The SECURITY_ATTRIBUTES structure contains the security descriptor for an object and specifies whether the handle retrieved by specifying this structure is inheritable.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.Security.SECURITY_ATTRIBUTES.nLength">
            <summary>The size, in bytes, of this structure. Set this value to the size of the **SECURITY\_ATTRIBUTES** structure.</summary>
        </member>
        <member name="F:Windows.Win32.Security.SECURITY_ATTRIBUTES.lpSecurityDescriptor">
            <summary>
            <para>A pointer to a [**SECURITY\_DESCRIPTOR**](../winnt/ns-winnt-security_descriptor.md) structure that controls access to the object. If the value of this member is **NULL**, the object is assigned the default security descriptor associated with the [*access token*](/windows/win32/secauthz/access-tokens) of the calling process. This is not the same as granting access to everyone by assigning a **NULL** [*discretionary access control list*](/windows/win32/secauthz/dacls-and-aces) (DACL). By default, the default DACL in the access token of a process allows access only to the user represented by the access token. For information about creating a security descriptor, see [Creating a Security Descriptor](/windows/win32/secauthz/creating-a-security-descriptor-for-a-new-object-in-c--).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ns-wtypesbase-security_attributes#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Security.SECURITY_ATTRIBUTES.bInheritHandle">
            <summary>A Boolean value that specifies whether the returned handle is inherited when a new process is created. If this member is **TRUE**, the new process inherits the handle.</summary>
        </member>
        <member name="T:Windows.Win32.SetupDiDestroyDeviceInfoListSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.SetupDiDestroyDeviceInfoList(Windows.Win32.Devices.DeviceAndDriverInstallation.HDEVINFO)"/>.
            </summary>
        </member>
        <member name="P:Windows.Win32.__ushort_3.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__ushort_3.Item(System.Int32)">
            <summary>
            Gets a ref to an individual element of the inline array.
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it.
            </summary>
        </member>
        <member name="T:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute">
            <summary>
            Specifies the priority of a member in overload resolution.
            When unspecified, the default priority is 0.
            </summary>
        </member>
        <member name="M:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute"/> class.
            </summary>
            <param name="priority">The priority of the attributed member. Higher numbers are prioritized, lower numbers are deprioritized. 0 is the default if no attribute is present.</param>
        </member>
        <member name="P:System.Runtime.CompilerServices.OverloadResolutionPriorityAttribute.Priority">
            <summary>
            The priority of the member.
            </summary>
        </member>
    </members>
</doc>
