<?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="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.Simulation.SimulationConfiguration)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with simulation configuration.
            </summary>
            <param name="simulationConfiguration">Simulation settings for CPU/GPU hardware.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.Simulation.SimulationConfiguration,CapFrameX.Monitoring.Contracts.ISensorConfig)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with simulation configuration and sensor config.
            </summary>
            <param name="simulationConfiguration">Simulation settings for CPU/GPU hardware.</param>
            <param name="sensorConfig">Application sensor configuration.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(CapFrameX.Monitoring.Contracts.ISensorConfig)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with sensor config.
            </summary>
            <param name="sensorConfig">Application sensor configuration.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.ISettings,LibreHardwareMonitor.Hardware.Simulation.SimulationConfiguration)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with additional <see cref="T:LibreHardwareMonitor.Hardware.ISettings" /> and simulation configuration.
            </summary>
            <param name="settings">Computer settings that will be transferred to each <see cref="T:LibreHardwareMonitor.Hardware.IHardware" />.</param>
            <param name="simulationConfiguration">Simulation settings for CPU/GPU hardware.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Computer.#ctor(LibreHardwareMonitor.Hardware.ISettings,LibreHardwareMonitor.Hardware.Simulation.SimulationConfiguration,CapFrameX.Monitoring.Contracts.ISensorConfig)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.Hardware.IComputer" /> instance with additional <see cref="T:LibreHardwareMonitor.Hardware.ISettings" />, simulation configuration and sensor config.
            </summary>
            <param name="settings">Computer settings that will be transferred to each <see cref="T:LibreHardwareMonitor.Hardware.IHardware" />.</param>
            <param name="simulationConfiguration">Simulation settings for CPU/GPU hardware.</param>
            <param name="sensorConfig">Application sensor configuration.</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.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="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="T:LibreHardwareMonitor.Hardware.Cpu.CpuArchitecture">
            <summary>
            Provides methods to determine CPU architecture features.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.CpuArchitecture.IsHybridDesign(LibreHardwareMonitor.Hardware.Cpu.CpuId[])">
            <summary>
            Determines whether the CPU architecture is a hybrid design.
            </summary>
            <param name="cpuId"></param>
            <returns></returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Cpu.Vendor">
            <summary>
            Represents the CPU vendor.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.Vendor.Unknown">
            <summary>
            Unknown vendor.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.Vendor.Intel">
            <summary>
            Intel Corporation.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.Vendor.AMD">
            <summary>
            Advanced Micro Devices (AMD).
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType">
            <summary>
            Represents the type of CPU core in hybrid architectures.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType.Standard">
            <summary>
            Non-hybrid core type.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType.PerformanceCore">
            <summary>
            Performance core (P-core) - Intel and AMD.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType.EfficiencyCore">
            <summary>
            Efficiency core (E-core) - Intel.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType.LowPowerEfficiencyCore">
            <summary>
            Low-Power Efficiency core (LPE-core) - Intel.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType.DenseCore">
            <summary>
            Dense core (D-core) - AMD.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Cpu.CpuId">
            <summary>
            Represents CPUID information for a single logical processor.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuId.CPUID_0">
            <summary>
            The base CPUID function number.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Cpu.CpuId.CPUID_EXT">
            <summary>
            The extended CPUID function number base.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.CpuId.Get(System.Int32,System.Int32)">
            <summary>
            Gets the CPUID information for the specified processor group and thread.
            </summary>
            <param name="group">The processor group index.</param>
            <param name="thread">The thread index within the group.</param>
            <returns>A <see cref="T:LibreHardwareMonitor.Hardware.Cpu.CpuId"/> instance, or <c>null</c> if the thread could not be accessed.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Name">
            <summary>
            Gets the processor name.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.BrandString">
            <summary>
            Gets the full CPU brand string as reported by CPUID.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Group">
            <summary>
            Gets the processor group index.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Thread">
            <summary>
            Gets the thread index within the processor group.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Affinity">
            <summary>
            Gets the processor affinity for this logical processor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Vendor">
            <summary>
            Gets the CPU vendor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Family">
            <summary>
            Gets the CPU family identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Model">
            <summary>
            Gets the CPU model identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Stepping">
            <summary>
            Gets the CPU stepping revision.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.PkgType">
            <summary>
            Gets the package type identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.ApicId">
            <summary>
            Gets the APIC identifier for this logical processor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.ProcessorId">
            <summary>
            Gets the physical processor identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.CoreId">
            <summary>
            Gets the core identifier within the processor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.ThreadId">
            <summary>
            Gets the thread identifier within the core.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.Data">
            <summary>
            Gets the raw CPUID data for standard functions.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.CpuId.ExtData">
            <summary>
            Gets the raw CPUID data for extended functions.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Cpu.GenericCpu">
            <summary>
            Class GenericCpu for basic CPU management
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.#ctor(System.Int32,LibreHardwareMonitor.Hardware.Cpu.CpuId[][],LibreHardwareMonitor.Hardware.ISettings)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Cpu.GenericCpu"/> class.
            </summary>
            <param name="processorIndex">The zero-based processor index.</param>
            <param name="cpuId">The CPUID data for all cores and threads.</param>
            <param name="settings">The settings instance.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.CpuId">
            <summary>
            Gets the CPUID.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.HardwareType">
            <inheritdoc />
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.HasModelSpecificRegisters">
            <summary>
            Gets a value indicating whether the processor supports model-specific registers (MSRs).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.HasTimeStampCounter">
            <summary>
            Gets a value indicating whether the processor has a time stamp counter (TSC).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.Index">
            <summary>
            Gets the CPU index.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.TimeStampCounterFrequency">
            <summary>
            Gets the time stamp counter frequency in MHz.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.CoreString(System.Int32)">
            <summary>
            Gets the core string for the specified core index.
            </summary>
            <param name="i"></param>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.GetCoreType(System.Int32)">
            <summary>
            Gets the core type for the specified core index.
            </summary>
            <param name="coreIndex">The zero-based core index.</param>
            <returns>The <see cref="T:LibreHardwareMonitor.Hardware.Cpu.CpuCoreType"/> of the specified core.</returns>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.CoreCount">
            <summary>
            Gets the number of cores in this CPU.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.IsHybrid">
            <summary>
            Gets whether this CPU has a hybrid architecture with different core types.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.GetTimeStampCounterFrequency">
            <summary>
            Gets the time stamp counter frequency from the native HWInfo library.
            </summary>
            <returns>The time stamp counter frequency in Hz.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.GetReport">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.GenericCpu.Update">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Cpu.IntelCpu.Close">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.GpuSensorCache">
            <summary>
            Caches GPU sensor information for efficient access.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorCache.GpuCount">
            <summary>
            Gets the number of GPUs detected in the system.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorCache.SensorsById">
            <summary>
            Gets a mapping of sensor IDs to their corresponding GPU sensor information.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorCache.SensorIdsByAdapterName">
            <summary>
            Gets a mapping of GPU adapter names to sets of associated sensor IDs.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GpuSensorCache.#ctor(System.Int32,System.Collections.Generic.Dictionary{System.String,LibreHardwareMonitor.Hardware.GpuSensorInfo},System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.HashSet{System.String}})">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.GpuSensorCache"/> class.
            </summary>
            <param name="gpuCount"></param>
            <param name="sensorsById"></param>
            <param name="sensorIdsByAdapterName"></param>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.GpuSensorInfo">
            <summary>
            Holds information about a GPU sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorInfo.Sensor">
            <summary>
            Gets the sensor instance.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorInfo.AdapterName">
            <summary>
            Gets the name of the GPU adapter associated with the sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.GpuSensorInfo.IsDiscreteGpu">
            <summary>
            Indicates whether the GPU is a discrete GPU.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.GpuSensorInfo.#ctor(LibreHardwareMonitor.Hardware.ISensor,System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.GpuSensorInfo"/> struct.
            </summary>
            <param name="sensor"></param>
            <param name="adapterName"></param>
            <param name="isDiscreteGpu"></param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.AmdGpu.ActivateSensorsFromSupportFlags">
            <summary>
            Activates sensors based on what metrics the GPU supports, without needing actual telemetry data.
            This is called in the constructor to ensure sensors are visible even before telemetry history is available.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Gpu.Display">
            <summary>
            Represents a display associated with a window handle.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.Display.#ctor(System.IntPtr)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Gpu.Display"/> class.
            </summary>
            <param name="hwnd"></param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.Display.GetDisplayRefreshRate">
            <summary>
            Gets the display refresh rate in Hz.
            </summary>
            <returns></returns>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Gpu.GenericGpu">
            <summary>
            Represents a generic GPU device.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._displayLock">
            <summary>
            Lock object for display-related operations.
            </summary>
        </member>
        <!-- Badly formed XML comment ignored for member "F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._performanceCounterLock" -->
        <member name="F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._refreshRateBuffer">
            <summary>
            Buffer to store refresh rate values.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._display">
            <summary>
            Current display associated with the GPU.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._refreshRateCurrentDisplay">
            <summary>
            Current refresh rate of the window handle.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.Hardware.Gpu.GenericGpu._displayDeviceName">
            <summary>
            Name of the display device. 
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.#ctor(System.String,LibreHardwareMonitor.Hardware.Identifier,LibreHardwareMonitor.Hardware.ISettings,System.Boolean)">
            <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>
            <param name="enableProcessMemorySensors">Indicates whether to enable the process memory sensors. These sensors rely on Windows performance counters and may not be supported or may cause errors on certain systems, particularly those with specific GPU drivers or configurations. Enabling this option will attempt to initialize the necessary performance counters and will monitor the current process for changes to update the sensor values accordingly. If any issues are encountered while initializing or updating the performance counters, the sensors will be disabled and will not report values until a new process change is detected or the counters can be successfully reinitialized.</param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.DeviceId">
            <summary>
            Gets the device identifier.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.IsDiscreteGpu">
            <summary>
            Gets a value indicating whether the GPU is a discrete GPU.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.SetProcessMemoryInstanceFilter(System.String)">
            <summary>
            Sets the filter string used to identify the correct process memory performance counter instance for the current process. This is necessary in cases where multiple instances exist for the same process, which can happen with certain GPU drivers or configurations. The filter string should be a unique substring of the instance name that corresponds to the current process. If multiple instances match the filter, the one with the highest dedicated memory usage will be selected. If no instances match, the process memory sensors will not report values until a matching instance is found.
            </summary>
            <param name="processMemoryInstanceFilter"></param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.UpdateProcessMemorySensors">
            <summary>
            Updates the process memory sensors with the latest values from the performance counters. This method should be called periodically, for example during the hardware update cycle, to ensure that the sensor values are up to date. If the performance counters are not available or an error occurs while reading them, the sensor values will be set to zero and the counters will be disposed to prevent further errors until a new process change is detected or the counters can be successfully reinitialized.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.GenericGpu.Close">
            <summary>
            Closes the hardware and disposes of all resources, including the process subscription and performance counters. This method should be called when the hardware is no longer needed to ensure that all resources are properly released. If any errors occur during disposal, they will be caught and ignored to prevent exceptions from being thrown during the closing process.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Gpu.IntelD3dGpu.DeviceId">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Gpu.IntelD3dGpu.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.GetDriverVersion">
            <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.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="M:LibreHardwareMonitor.Hardware.IHardware.GetDriverVersion">
            <summary>
            Gets the driver version of the hardware device.
            </summary>
            <returns></returns>
        </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.Control">
            <summary>
            <inheritdoc cref="T:LibreHardwareMonitor.Hardware.IControl"/>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Hardware">
            <summary>
            <inheritdoc cref="T:LibreHardwareMonitor.Hardware.IHardware"/>
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Identifier">
            <summary>
            Gets the unique identifier of this sensor.
            </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.IsDefaultHidden">
            <summary>
            Gets a value indicating whether the sensor is hidden by default in the user interface.
            </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.Parameters">
            <summary>
            Gets a list of parameters for the given sensor.
            </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.IsPresentationDefault">
            <summary>
            Gets a value indicating whether the sensor is used as default presentation in the user interface (overlay etc.).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.PresentationSortKey">
            <summary>
            Gets a sort key for the presentation of this sensor in the user interface.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.Values">
            <summary>
            Gets a list of recorded values for the given sensor.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.ISensor.ValuesTimeWindow">
            <summary>
            Gets or sets the time window for which the values are stored in <see cref="P:LibreHardwareMonitor.Hardware.ISensor.Values"/>.
            </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="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="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.W836XX.Close">
            <inheritdoc />
        </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.GetDriverVersion">
            <inheritdoc />
        </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.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.RefreshRateBuffer`1">
            <summary>
            A buffer that maintains a fixed number of the most recent samples.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.RefreshRateBuffer`1.RefreshRates">
            <summary>
            Gets the current samples in the buffer.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.RefreshRateBuffer`1.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.RefreshRateBuffer`1"/> class.
            </summary>
            <param name="size"></param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.RefreshRateBuffer`1.Add(`0)">
            <summary>
            Adds a new sample to the buffer.
            </summary>
            <param name="sample"></param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.RefreshRateBuffer`1.Clear">
            <summary>
            Clears all samples from the buffer.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Sensor.IsPresentationDefault">
            <summary>
            Indicates whether this sensor is the default presentation sensor for its type.
            Must be set by the hardware implementation. Default is false.
            </summary>
        </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.Simulation.SimulatedAmd17Cpu">
            <summary>
            Simulates AMD Ryzen 9 7950X with 16 cores.
            Sensors match Amd17Cpu.cs: per-core Clock (IsPresentationDefault=true) and Load,
            CPU Package Temperature/Power, CPU Core/SoC Voltage, Bus/Max/Effective Clocks.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Simulation.SimulatedIntelCpu">
            <summary>
            Simulates Intel Core i9-14900K with 24 cores (8P + 16E).
            Sensors match IntelCpu.cs: per-core Clock (IsPresentationDefault=true) and effective Clock,
            per-core Temperature, CPU Package Temperature/Power, Bus Speed, Voltage.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Simulation.SimulatedAmdGpu">
            <summary>
            Simulates AMD Radeon RX 7900 XTX.
            Sensors match AmdGpu.cs: Temperature (Core, Memory, Hot Spot, Intake),
            Clock (Core, Memory), Load (Core), Power (GPU, TBP), Voltage, Fan, Data (Dedicated, Shared).
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Simulation.SimulatedNvidiaGpu">
            <summary>
            Simulates NVIDIA GeForce RTX 4090.
            Sensors match NvidiaGpu.cs: Load (Core, Memory Controller, Video Engine, Bus),
            Clock (Core, Memory), Temperature (Core, Hot Spot, Memory Junction),
            Power, Voltage, Fan, Data (Dedicated, Shared).
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Simulation.SimulatedIntelGclGpu">
            <summary>
            Simulates Intel Arc A770.
            Sensors match IntelGclGpu.cs: Temperature (Core, Memory), Power (TDP, TBP, VRAM),
            Clock (Core, Memory), Voltage (Core, Memory), Load (Core, Computing, Media Engine),
            Throughput (Memory Read/Write), Fan.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Simulation.SimulatedIntelD3DGpu">
            <summary>
            Simulates Intel UHD 770 (integrated graphics).
            Sensors match IntelD3dGpu.cs: Power (GPU Power), Data (D3D Dedicated/Shared Memory).
            Real IntelD3dGpu only has D3D memory sensors + optional power sensor for iGPU.
            </summary>
        </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="M:LibreHardwareMonitor.Hardware.Storage.AbstractStorage.Close">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Storage.AbstractStorage.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="P:LibreHardwareMonitor.Hardware.Storage.AtaStorage.Smart">
            <summary>
            Gets the SMART data.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Storage.AtaStorage.SmartAttributes">
            <summary>
            Gets the SMART attributes.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Storage.NVMeGeneric.Smart">
            <summary>
            Gets the SMART data.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
            </summary>
            <param name="id">The SMART id of the attribute.</param>
            <param name="name">The name of the attribute.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String,LibreHardwareMonitor.Hardware.Storage.SmartAttribute.RawValueConversion)">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
            </summary>
            <param name="id">The SMART id of the attribute.</param>
            <param name="name">The name of the attribute.</param>
            <param name="rawValueConversion">
            A delegate for converting the raw byte
            array into a value (or null to use the attribute value).
            </param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.#ctor(System.Byte,System.String,LibreHardwareMonitor.Hardware.Storage.SmartAttribute.RawValueConversion,System.Nullable{LibreHardwareMonitor.Hardware.SensorType},System.Int32,System.String,System.Boolean,LibreHardwareMonitor.Hardware.ParameterDescription[])">
            <summary>
            Initializes a new instance of the <see cref="T:LibreHardwareMonitor.Hardware.Storage.SmartAttribute" /> class.
            </summary>
            <param name="id">The SMART id of the attribute.</param>
            <param name="name">The name of the attribute.</param>
            <param name="rawValueConversion">
            A delegate for converting the raw byte
            array into a value (or null to use the attribute value).
            </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>
            <param name="parameterDescriptions">
            Description for the parameters of the sensor
            (or null).
            </param>
        </member>
        <member name="P:LibreHardwareMonitor.Hardware.Storage.SmartAttribute.Id">
            <summary>
            Gets the SMART identifier.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Hardware.Storage.SmartNames">
            <summary>
            Localization class for SMART attribute names.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.SsdMicron.UpdateAdditionalSensors(LibreHardwareMonitor.Interop.AtaSmart.SMART_ATTRIBUTE[])">
            <inheritdoc />
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.StorageGroup.AddHardware(LibreHardwareMonitor.Hardware.ISettings,System.Collections.Generic.Dictionary{System.UInt32,System.Collections.Generic.List{System.ValueTuple{System.UInt32,System.UInt64}}})">
            <summary>
            Adds the hardware.
            </summary>
            <param name="settings">The settings.</param>
            <param name="storageSpaceDiskToPhysicalDiskMap">The storage space disk to physical disk map.</param>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.StorageGroup.GetStorageSpaceDiskToPhysicalDiskMap">
            <summary>
            Maps each StorageSpace to the PhysicalDisks it is composed of.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Hardware.Storage.StorageGroup.MapDiskToPhysicalDisk(System.Management.ManagementBaseObject,System.Management.ManagementScope)">
            <summary>
            Maps a disk to a physical disk.
            </summary>
            <param name="disk">The disk.</param>
            <param name="scope">The scope.</param>
        </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="T:LibreHardwareMonitor.Interop.ADLX">
            <summary>
            AMD ADLX (AMD Display Library X) interop wrapper.
            Replaces the legacy ADL2 API with the modern ADLX interface.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Interop.ADLX.GpuType">
            <summary>
            GPU type enumeration matching ADLX_GPU_TYPE.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Interop.ADLX.AdlxTelemetrySupport">
            <summary>
            Telemetry support flags structure matching AdlxTelemetrySupport in ADLXManager.h.
            Used to query what metrics are supported before actual data is available.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Interop.ADLX.AdlxTelemetryData">
            <summary>
            Telemetry data structure matching AdlxTelemetryData in ADLXManager.h.
            Must match the native struct layout exactly.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.Interop.ADLX.AdlxDeviceInfo">
            <summary>
            Device info structure matching AdlxDeviceInfo in ADLXManager.h.
            Must match the native struct layout exactly.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.IsAvailable">
            <summary>
            Checks if the ADLX DLL is available and can be loaded.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.Initialize">
            <summary>
            Initializes the ADLX library.
            </summary>
            <returns>True if initialization succeeded, false otherwise.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.Close">
            <summary>
            Closes the ADLX library and releases resources.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.GetAdapterCount">
            <summary>
            Gets the number of AMD adapters detected by ADLX.
            </summary>
            <returns>Number of AMD GPU adapters.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.GetTelemetry(System.UInt32,System.UInt32,LibreHardwareMonitor.Interop.ADLX.AdlxTelemetryData@)">
            <summary>
            Gets telemetry data for the specified GPU adapter.
            </summary>
            <param name="index">Adapter index (0-based).</param>
            <param name="historyLength">History length in milliseconds.</param>
            <param name="telemetryData">Output telemetry data structure.</param>
            <returns>True if telemetry was retrieved successfully, false otherwise.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.GetTelemetrySupport(System.UInt32,LibreHardwareMonitor.Interop.ADLX.AdlxTelemetrySupport@)">
            <summary>
            Gets the supported telemetry metrics for the specified GPU adapter.
            This method queries support flags directly without needing actual telemetry data,
            useful for activating sensors before telemetry history is available.
            </summary>
            <param name="index">Adapter index (0-based).</param>
            <param name="telemetrySupport">Output support flags structure.</param>
            <returns>True if support flags were retrieved successfully, false otherwise.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.Interop.ADLX.GetDeviceInfo(System.UInt32,LibreHardwareMonitor.Interop.ADLX.AdlxDeviceInfo@)">
            <summary>
            Gets device information for the specified GPU adapter.
            </summary>
            <param name="index">Adapter index (0-based).</param>
            <param name="deviceInfo">Output device info structure.</param>
            <returns>True if device info was retrieved successfully, false otherwise.</returns>
        </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.PawnIo.IntelImc">
            <summary>
            Provides typed access to Intel client IMC clock-ratio data, decoded
            against MCHBAR registers exposed by the generic <c>IntelMCHBAR.bin</c>
            PawnIO module.
            </summary>
            <remarks>
            All platform dispatch (CPUID allowlist, register selection, reserved-bits
            and ratio-range checks, ARL live-clamp, gear extraction) lives on the
            C# side. The kernel module only resolves MCHBAR and reads dwords from it.
            Consumers that previously talked to <c>IntelIMC.bin</c> see the same
            public API and the same <see cref="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock"/> output buffer semantics.
            </remarks>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource">
            <summary>Identifies which on-die register populated the ratio.</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource.None">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource.MchbarMemssPma">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource.MchbarSaPerf">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource.PmtQclkStatus">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcSource.MchbarLiveGvArl">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock">
            <summary>What the ratio is multiplied with on this hardware.</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock.Unknown">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock.BclkDiv3">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock.Bclk">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock.BclkMul4Div3">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear">
            <summary>
            DDR controller "gear". Numeric value is the data-rate multiplier
            against QCLK (1, 2, 4); <see cref="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear.Unknown"/> means the source register
            does not encode a gear field.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear.Unknown">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear.Gear1">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear.Gear2">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcGear.Gear4">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags">
            <summary>Hints about how the ratio should be interpreted.</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags.None">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags.StaticLocked">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags.LiveCurrent">
            <inheritdoc />
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags.Experimental">
            <inheritdoc />
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock">
            <summary>Decoded result of one IOCTL call.</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.#ctor(System.UInt32,LibreHardwareMonitor.PawnIo.IntelImc.ImcSource,System.UInt32,LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock,LibreHardwareMonitor.PawnIo.IntelImc.ImcGear,System.UInt32,LibreHardwareMonitor.PawnIo.IntelImc.ImcClockFlags)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock"/> with the specified properties.
            </summary>
            <param name="abiVersion"></param>
            <param name="source"></param>
            <param name="ratio"></param>
            <param name="referenceClock"></param>
            <param name="gear"></param>
            <param name="rawRegister"></param>
            <param name="flags"></param>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.AbiVersion">
            <summary>
            Version of the ABI the wrapper implements.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.Source">
            <summary>
            Identifies which on-die register populated the ratio.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.Ratio">
            <summary>
            The raw ratio value read from the register, before applying the reference clock.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.ReferenceClock">
            <summary>
            What the ratio is multiplied with on this hardware.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.Gear">
            <summary>
            DDR controller "gear". Numeric value is the data-rate multiplier against QCLK (1, 2, 4).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.RawRegister">
            <summary>
            The raw 32-bit value read from the source register.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelImc.ImcClock.Flags">
            <summary>
            Hints about how the ratio should be interpreted.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.#ctor">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.PawnIo.IntelImc"/>. Loads the IntelMCHBAR PawnIO
            module and resolves the running CPU to a register-layout family;
            instances on unsupported CPUs leave <see cref="M:LibreHardwareMonitor.PawnIo.IntelImc.ReadClock(LibreHardwareMonitor.PawnIo.IntelImc.ImcClock@)"/> /
            <see cref="M:LibreHardwareMonitor.PawnIo.IntelImc.ReadLiveClock(LibreHardwareMonitor.PawnIo.IntelImc.ImcClock@)"/> returning <c>false</c>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.ReadClock(LibreHardwareMonitor.PawnIo.IntelImc.ImcClock@)">
            <summary>
            Reads the static (locked-max on Core Ultra, live on Alder/Raptor Lake)
            IMC clock ratio. Allowlist: ADL/RPL/MTL/ARL/LNL/PTL plus Nova Lake
            (experimental). Returns <c>false</c> if the running CPU is outside
            the allowlist, MCHBAR is firmware-disabled, or any consistency check
            fails.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.ReadLiveClock(LibreHardwareMonitor.PawnIo.IntelImc.ImcClock@)">
            <summary>
            Reads the live IMC workpoint on Core Ultra: SA_PERF_STATUS @ 0x5918
            for MTL/LNL/PTL (and NVL, experimental), IMC_LIVE_GV_STATUS_ARL @
            0xE448 for ARL. Returns <c>false</c> on ADL/RPL (use the static IOCTL
            — already live there) and on unknown CPUs.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.GetReferenceMHz(LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock,System.Double)">
            <summary>
            Converts the wrapper's reference-clock enum into MHz using the BCLK
            the consumer has measured. Mirrors the IMC_REF_* table in the original
            IntelIMC.p driver.
            Returns <c>0</c> for <see cref="F:LibreHardwareMonitor.PawnIo.IntelImc.ImcReferenceClock.Unknown"/>.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelImc.Close">
            <summary>Closes the underlying PawnIO module handle.</summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelMsr">
            <summary>
            Provides methods to read Intel Model-Specific Registers (MSRs) using PawnIo.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.ReadMsr(System.UInt32,System.UInt64@)">
            <summary>
            Reads the value of a specified MSR.
            </summary>
            <param name="index"></param>
            <param name="value"></param>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.ReadMsr(System.UInt32,System.UInt32@,System.UInt32@)">
            <summary>
            Reads the value of a specified MSR.
            </summary>
            <param name="index"></param>
            <param name="eax"></param>
            <param name="edx"></param>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.ReadMsr(System.UInt32,System.UInt32@,System.UInt32@,LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Reads the value of a specified MSR on a specific processor group and index.
            </summary>
            <param name="index"></param>
            <param name="eax"></param>
            <param name="edx"></param>
            <param name="affinity"></param>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.WriteMsr(System.UInt32,System.UInt64)">
            <summary>
            Writes a 64-bit value to the specified MSR. The MSR must be on the
            underlying PawnIo module's write allow-list (see IntelMSR.p
            is_allowed_msr_write).
            </summary>
            <param name="index">MSR index.</param>
            <param name="value">64-bit value to write.</param>
            <returns>true on success.</returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.WriteMsr(System.UInt32,System.UInt64,LibreHardwareMonitor.Hardware.GroupAffinity)">
            <summary>
            Writes a 64-bit value to the specified MSR on a specific processor.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelMsr.Close">
            <summary>
            Closes the PawnIo module.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOcMailbox">
            <summary>
            Reads fabric-clock telemetry (D2D, NGU) on Arrow Lake-S and later
            Intel CPUs via the VR Mailbox protocol on the new MSR pair
            0x607 (interface) + 0x608 (data).
            </summary>
            <remarks>
            <para>
            On Arrow Lake-S desktop the VR Mailbox moved off the legacy
            MSR 0x150 to a new pair. This class implements the protocol
            HWiNFO64 v8.32 also uses (RE-confirmed 2026-05-12):
            </para>
            <list type="number">
            <item>WrMSR(0x607, command | 0x80000000)  — issue command + set run bit.</item>
            <item>Poll RdMSR(0x607) until bit 31 (run bit) clears.</item>
            <item>RdMSR(0x608) — read response data.</item>
            </list>
            <para>Known command codes:</para>
            <list type="bullet">
            <item><c>0x1237</c> — D2D ratio (response &amp; 0x7FFF), × 100 MHz.</item>
            <item><c>0x0022</c> — NGU ratio ((response &gt;&gt; 8) &amp; 0xFF), × 100 MHz.</item>
            </list>
            <para>
            This is intentionally a thin protocol wrapper around
            <see cref="T:LibreHardwareMonitor.PawnIo.IntelMsr"/>. All transport happens through that
            class's <c>ReadMsr</c>/<c>WriteMsr</c> primitives, which gate
            the two MSR addresses through the PawnIo IntelMSR module's
            allow-list (<c>MSR_VR_MAILBOX_INTERFACE</c> /
            <c>MSR_VR_MAILBOX_DATA</c>).
            </para>
            </remarks>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample">
            <summary>One sample of the SoC-fabric clocks read via VR Mailbox.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.HasNgu">
            <summary><c>true</c> when <see cref="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.NguMhz"/> is populated.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.HasD2d">
            <summary><c>true</c> when <see cref="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.D2dMhz"/> is populated.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.NguMhz">
            <summary>NGU clock in MHz (0 when not available).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.D2dMhz">
            <summary>D2D clock in MHz (0 when not available).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.RawNgu">
            <summary>Raw 64-bit response data for NGU (diagnostics).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample.RawD2d">
            <summary>Raw 64-bit response data for D2D (diagnostics).</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOcMailbox.#ctor(LibreHardwareMonitor.PawnIo.IntelMsr)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.PawnIo.IntelOcMailbox"/>. Probes MSR 0x607
            and MSR 0x608: if either reads back successfully the mailbox
            is considered present.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOcMailbox.IsReady">
            <summary><c>true</c> when MSR 0x607/0x608 are both readable on this CPU.</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOcMailbox.TryRead(LibreHardwareMonitor.PawnIo.IntelOcMailbox.Sample@)">
            <summary>
            Reads D2D and NGU via two mailbox commands. Returns
            <c>false</c> if neither succeeded or both produced values
            outside the plausibility window.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOcMailbox.TryExecute(System.UInt32,System.UInt64@)">
            <summary>
            Execute one VR Mailbox command. The protocol is non-atomic
            at the kernel boundary (three separate IOCTLs), so a
            concurrent writer can race us. In practice this manifests
            only as a one-cycle stale value before the next refresh
            corrects it.
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsm">
            <summary>
            Provides typed access to the Intel Out-Of-Band Management Services
            Module (OOBMSM) on Core Ultra (Meteor Lake and later) tile-based
            CPUs. OOBMSM is the SoC-tile telemetry/management aggregator that
            hosts Intel Platform Monitoring Technology (PMT) sub-functions
            (Telemetry, Watcher, Crashlog, SDSi, TPMI) as PCIe extended
            capabilities.
            </summary>
            <remarks>
            <para>
            The kernel-side <c>IntelOOBMSM.bin</c> is intentionally minimal —
            it only validates that we are on a supported Intel CPU and exposes
            two primitives: a PCI-config DWORD read against the canonical
            <c>00:0A.0</c> slot, and a physical-memory DWORD read. All
            capability discovery, BAR-base resolution and per-platform
            telemetry-layout decoding happens here in C#.
            </para>
            <para>
            This mirrors the split established by <see cref="T:LibreHardwareMonitor.PawnIo.IntelImc"/>
            against <c>IntelMCHBAR.bin</c>: kernel = primitives, C# = decode.
            </para>
            </remarks>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapKind">
            <summary>Common Intel ext-cap IDs used by OOBMSM.</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapKind.Unknown">
            <summary>Unspecified (cap_id is in <see cref="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.CapId"/>).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapKind.Vsec">
            <summary>PCIe Vendor-Specific Extended Capability (PMT VSEC family).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapKind.Tpmi">
            <summary>Intel Topology-Aware Power Management Interface.</summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform">
            <summary>
            Register-layout family the running CPU belongs to. Mirrors the
            OOBMSM telemetry layouts that are useful from this wrapper;
            CPUs without a known OOBMSM entry point resolve to
            <see cref="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.None"/>.
            </summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.None">
            <summary>CPU is not a tile-based Core Ultra part.</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Mtl">
            <summary>Meteor Lake (Family 6, models 0xAC/0xAA).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Arl">
            <summary>Arrow Lake mobile (Family 6, models 0xB5/0xC5).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Lnl">
            <summary>Lunar Lake (Family 6, model 0xBD).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Ptl">
            <summary>Panther Lake (Family 6, model 0xCC).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Wcl">
            <summary>Wildcat Lake (Family 6, model 0xD5).</summary>
        </member>
        <member name="F:LibreHardwareMonitor.PawnIo.IntelOobmsm.Platform.Nvl">
            <summary>Nova Lake (Family 18, models 0x01/0x03).</summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry">
            <summary>One entry in OOBMSM's PCIe ext-cap chain (decoded in C#).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.ConfigOffset">
            <summary>Byte offset of the ext-cap header in PCI config space (≥ 0x100).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.CapId">
            <summary>PCIe extended-capability ID (e.g. <c>0x000B</c> = VSEC, <c>0x0023</c> = TPMI).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.CapVersion">
            <summary>Capability version (0..15, from bits [19:16] of the header).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.VsecId">
            <summary>VSEC ID (low 16 bits of the dword at <c>ConfigOffset + 4</c>).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.VsecRevision">
            <summary>VSEC revision (4 bits at <c>ConfigOffset + 4</c>, [19:16]).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.VsecLength">
            <summary>VSEC length in bytes (12 bits at <c>ConfigOffset + 4</c>, [31:20]).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.Tbir">
            <summary>BAR Indicator (low 3 bits of the dword at <c>ConfigOffset + 8</c>).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry.DiscoveryOffset">
            <summary>Discovery byte offset within the TBIR-selected BAR (bits [31:3] of the dword at <c>ConfigOffset + 8</c>).</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.#ctor">
            <summary>
            Loads the OOBMSM PawnIO module and resolves the running CPU
            to a register-layout family. On unsupported CPUs the instance
            still constructs but every <c>Try*</c> method returns false.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.IsLoaded">
            <summary><c>true</c> when the kernel module loaded and the running CPU is in the allowlist.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.DetectedPlatform">
            <summary>Detected register-layout family.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsm.IsValidated">
            <summary><c>true</c> when this platform has been cross-validated against reference telemetry.</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.Close">
            <summary>Closes the underlying PawnIO module handle.</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryGetIdentity(System.UInt16@,System.UInt16@,System.Byte@,System.Byte@,System.Byte@,System.UInt64@,System.Int32@)">
            <summary>
            Reads OOBMSM identity (PCI VID/DID + bus/dev/fn) and the
            physical address / size of the kernel-mapped BAR0 window.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryReadConfigDword(System.Int32,System.UInt32@)">
            <summary>
            Reads a 32-bit DWORD from OOBMSM's PCI configuration space.
            </summary>
            <param name="offset">Byte offset, DW-aligned, in <c>[0, 0xFFC]</c>.</param>
            <param name="value">Value read.</param>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryReadBarDword(System.Int32,System.UInt32@)">
            <summary>
            Reads a 32-bit DWORD from the kernel-mapped BAR0 window of
            OOBMSM at the given byte offset within that window.
            </summary>
            <remarks>
            The kernel module maps OOBMSM's BAR0 (typically 64 KiB on
            shipping Core Ultra parts) at init via <c>io_space_map</c>;
            this primitive reads a DWORD inside that mapping. All TPMI
            telemetry apertures we have observed live within the upper
            part of BAR0 (0xF800+), so the full 64 KiB window covers any
            per-platform discovery offset.
            </remarks>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.EnumerateExtCaps">
            <summary>
            Walks the PCIe extended-capability chain starting at offset
            0x100 of OOBMSM's config space and returns every entry found.
            Result is cached for the lifetime of this instance.
            </summary>
            <remarks>
            <para>
            TBIR + discovery-offset position varies by capability flavour:
            </para>
            <list type="bullet">
            <item><b>VSEC (cap_id 0x000B)</b>: BIR + offset packed in the
            dword at <c>ConfigOffset + 0x08</c> — bits[2:0] = TBIR,
            bits[31:3] = byte offset within the BAR.</item>
            <item><b>TPMI (cap_id 0x0023)</b>: same layout but at
            <c>ConfigOffset + 0x0C</c> (after a 4-byte DVSEC ID slot at
            +0x08).</item>
            </list>
            <para>
            Caps that don't expose a parsable entry surface with
            <c>Tbir = -1</c>.
            </para>
            </remarks>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryFindExtCap(System.UInt16,LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry@)">
            <summary>
            Looks up the first ext-cap entry matching the requested cap-id
            (and optionally a vsec-id within VSEC/TPMI caps). Returns
            <c>false</c> if nothing matches.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryFindExtCap(System.UInt16,System.Nullable{System.UInt16},LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry@)">
            <inheritdoc cref="M:LibreHardwareMonitor.PawnIo.IntelOobmsm.TryFindExtCap(System.UInt16,LibreHardwareMonitor.PawnIo.IntelOobmsm.ExtCapEntry@)"/>
            <param name="vsecId">Optional VSEC ID filter (low 16 bits of the dword at <c>ConfigOffset + 4</c>).</param>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks">
            <summary>
            Decodes the SoC-fabric clock fields (NGU and D2D) exposed by the
            Intel OOBMSM PMT Telemetry block on Core Ultra (Meteor Lake and
            later) tile-based CPUs.
            </summary>
            <remarks>
            <para>
            All platform dispatch (telemetry-container offset, bit position,
            frequency multiplier) lives here. The <see cref="T:LibreHardwareMonitor.PawnIo.IntelOobmsm"/>
            primitive layer below this exposes only PCI-config + physical-
            memory DWORD reads; this class does the ext-cap walk, BAR-base
            resolution, and bit-field decoding.
            </para>
            <para>
            <b>Offset source: <c>github.com/intel/Intel-PMT</c></b>. Each
            platform's <c>*_aggregator.xml</c> defines bit-packed sample
            containers identified by their byte offset within the discovery
            aperture (the "Groupname 0xXXXX" descriptions). NGU and D2D are
            sub-byte slices inside an 8-byte container with a per-field MHz
            multiplier (<c>tratio_50</c> = ratio × 50 MHz, <c>tratio_100</c>
            = ratio × 100 MHz, etc.).
            </para>
            </remarks>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField">
            <summary>One field inside a PMT telemetry container.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.ContainerOffset">
            <summary>Byte offset of the 8-byte container within the discovery aperture (e.g. 0x82F8 for LNL Container_2).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.BitLsb">
            <summary>Bit lsb within the 64-bit container (0..63).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.BitMsb">
            <summary>Bit msb (inclusive) within the 64-bit container (0..63).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.MultiplierMhz">
            <summary>Frequency unit per ratio step, in MHz (50, 100, 33, …).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.IsConfigured">
            <summary><c>true</c> when this field is configured (non-zero).</summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample">
            <summary>One sample of the SoC-fabric clocks for the running platform.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.HasNgu">
            <summary><c>true</c> when <see cref="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.NguMhz"/> is populated.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.HasD2d">
            <summary><c>true</c> when <see cref="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.D2dMhz"/> is populated.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.NguMhz">
            <summary>NGU clock in MHz (0 when not available).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.D2dMhz">
            <summary>D2D clock in MHz (0 when not available).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.RawNgu">
            <summary>Raw 64-bit container reading at the NGU field (diagnostics).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample.RawD2d">
            <summary>Raw 64-bit container reading at the D2D field (diagnostics).</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.#ctor(LibreHardwareMonitor.PawnIo.IntelOobmsm)">
            <summary>
            Creates a new <see cref="T:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks"/>. Resolves the
            running CPU to a platform and locates the OOBMSM Punit
            telemetry aperture's absolute physical address via the C#-side
            ext-cap walker. Per-platform bit-field offsets come from
            <c>github.com/intel/Intel-PMT</c> XML metadata.
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.IsReady">
            <summary><c>true</c> when at least one of NGU / D2D is configured for the running platform AND the aperture base resolved.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.IsValidated">
            <summary><c>true</c> once the platform's offsets have been cross-validated against reference telemetry (HWiNFO).</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.HasNgu">
            <summary><c>true</c> when an NGU field is configured for this platform.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.HasD2d">
            <summary><c>true</c> when a D2D field is configured for this platform.</summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.SubApertureBarOffset">
            <summary>
            Byte offset of the matched Punit-telemetry sub-aperture
            within OOBMSM's BAR0 mapping. The first DWORD at this offset
            is the matched GUID. Containers in the platform table use
            absolute BAR-byte-offsets, not offsets relative to this base
            (see <see cref="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.ClockField.ContainerOffset"/>).
            </summary>
        </member>
        <member name="P:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.MatchedGuid">
            <summary>GUID confirmed at the sub-aperture header (e.g. <c>0x03086000</c> for PTL normal Punit telemetry).</summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.TryRead(LibreHardwareMonitor.PawnIo.IntelOobmsmClocks.Sample@)">
            <summary>
            Reads NGU and D2D in one pair of qword fetches. Returns
            <c>false</c> if neither field is configured or both reads
            failed. Values outside the plausibility window are dropped
            (treated as a decode mismatch rather than reported as live
            data).
            </summary>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.PawnIo">
            <summary>
            Provides functionality to interact with the PawnIO driver for executing functions in loaded PawnIO modules.
            </summary>
        </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="M:LibreHardwareMonitor.PawnIo.PawnIo.Close">
            <summary>
            Closes the underlying handle to the PawnIO driver.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.PawnIo.Execute(System.String,System.Int64[],System.Int32)">
            <summary>
            Executes a function in the loaded PawnIO module with the specified name and input parameters.
            </summary>
            <param name="name"></param>
            <param name="input"></param>
            <param name="outLength"></param>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.PawnIo.ExecuteHr(System.String,System.Int64[],System.UInt32,System.Int64[],System.UInt32,System.UInt32@)">
            <summary>
            Executes a function in the loaded PawnIO module with the specified name and input parameters,
            </summary>
            <param name="name"></param>
            <param name="inBuffer"></param>
            <param name="inSize"></param>
            <param name="outBuffer"></param>
            <param name="outSize"></param>
            <param name="returnSize"></param>
            <returns></returns>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="T:LibreHardwareMonitor.PawnIo.RyzenSmu">
            <summary>
            Provides an interface to interact with the Ryzen System Management Unit (SMU) using PawnIo.
            </summary>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.GetSmuVersion">
            <summary>
            Retrieves the version of the Ryzen SMU.
            </summary>
            <returns></returns>
            <exception cref="T:System.TimeoutException"></exception>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.GetCodeName">
            <summary>
            Retrieves the code name of the Ryzen SMU.
            </summary>
            <returns></returns>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.ReadPmTable(System.Int32)">
            <summary>
            Reads the Power Management (PM) table from the Ryzen SMU. 
            </summary>
            <param name="size"></param>
            <returns></returns>
            <exception cref="T:System.TimeoutException"></exception>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.UpdatePmTable">
            <summary>
            Updates the Power Management (PM) table in the Ryzen SMU.
            </summary>
            <exception cref="T:System.TimeoutException"></exception>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.ResolvePmTable(System.UInt32@,System.UInt32@)">
            <summary>
            Resolves the base address of the Power Management (PM) table and retrieves the version of the PM table.
            </summary>
            <param name="version"></param>
            <param name="tableBase"></param>
            <exception cref="T:System.TimeoutException"></exception>
        </member>
        <member name="M:LibreHardwareMonitor.PawnIo.RyzenSmu.Close">
            <summary>
            Closes the PawnIo module and releases any resources associated with it.
            </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="T:SafeServiceHandle">
            <summary>
            Represents a safe handle for a Windows service object.
            </summary>
        </member>
        <member name="M:SafeServiceHandle.ReleaseHandle">
            <summary>
            Releases the service handle.
            </summary>
            <returns></returns>
        </member>
        <member name="T:DriverInstaller">
            <summary>
            Production-hardened kernel driver service management for PawnIO.
            
            Policy:
            - If the device is already usable (possibly installed/started by a 3rd party): do nothing.
            - Otherwise, if the service exists: attempt to start it.
            - If start fails OR device still not usable: stop (best-effort), delete, recreate, start, verify.
            </summary>
        </member>
        <member name="F:DriverInstaller.PAWNIO_SERVICE_NAME">
            <summary>
            Default Windows service name for the PawnIO driver.
            </summary>
        </member>
        <member name="M:DriverInstaller.EnsureDriverReady(System.String,System.String,System.Nullable{System.TimeSpan})">
            <summary>
            Ensures PawnIO driver is usable. Uses an already-running 3rd party installation if present.
            </summary>
            <param name="serviceName">Windows service name for the driver (typically "PawnIO").</param>
            <param name="sysFilePath">Full path to the PawnIO.sys file (used only if install/reinstall is required).</param>
            <param name="timeout">Overall timeout for stop/start transitions.</param>
            <returns>True if the device is usable at the end; false otherwise.</returns>
        </member>
        <member name="M:DriverInstaller.IsDriverDeviceAvailable">
            <summary>
            Checks if the driver device is available.
            Prefers global driver installation via PawnIO installer.
            </summary>
        </member>
        <member name="M:DriverInstaller.TryOpenDriverDevice">
            <summary>
            Attempts to open the driver device handle.
            </summary>
        </member>
        <member name="M:DriverInstaller.TryStartGlobalPawnIOService">
            <summary>
            Checks for a global PawnIO driver installation and attempts to start it.
            Global installation is typically done via the PawnIO installer and places
            the driver in System32\drivers with a persistent service registration.
            </summary>
        </member>
        <member name="M:DriverInstaller.GetPawnIODriverPath">
            <summary>
            Gets the file path of the PawnIO driver.
            </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="M:Windows.Win32.System.Ioctl.SENDCMDINPARAMS.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="M:Windows.Win32.System.Ioctl.SENDCMDOUTPARAMS.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.System.Ioctl.STORAGE_DESCRIPTOR_HEADER">
            <summary>Used in conjunction with the IOCTL_STORAGE_QUERY_PROPERTY control code to retrieve the properties of a storage device or adapter.</summary>
            <remarks>
            <para>The data retrieved by <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ni-winioctl-ioctl_storage_query_property">IOCTL_STORAGE_QUERY_PROPERTY</a> is reported in the buffer immediately following this structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_descriptor_header#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DESCRIPTOR_HEADER.Version">
            <summary>
            <para>Contains the size of this structure, in bytes. The value of this member will change as members are added to the structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_descriptor_header#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DESCRIPTOR_HEADER.Size">
            <summary>
            <para>Specifies the total size of the data returned, in bytes. This may include data that follows this structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_descriptor_header#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR">
            <summary>Used in conjunction with the IOCTL_STORAGE_QUERY_PROPERTY control code to retrieve the storage device descriptor data for a device.</summary>
            <remarks>
            <para>An application can determine the required buffer size by issuing a <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ni-winioctl-ioctl_storage_query_property">IOCTL_STORAGE_QUERY_PROPERTY</a> control code passing a <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ns-winioctl-storage_descriptor_header">STORAGE_DESCRIPTOR_HEADER</a> structure for the output buffer, and then using the returned <b>Size</b> member of the <b>STORAGE_DESCRIPTOR_HEADER</b> structure to allocate a buffer of the proper size.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.Version">
            <summary>
            <para>Contains the size of this structure, in bytes. The value of this member will change as members are added to the structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.Size">
            <summary>
            <para>Specifies the total size of the descriptor, in bytes, which may include vendor ID, product ID, product revision, device serial number strings and bus-specific data which are appended to the structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.DeviceType">
            <summary>Specifies the device type as defined by the Small Computer Systems Interface (SCSI) specification.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.DeviceTypeModifier">
            <summary>
            <para>Specifies the device type modifier, if any, as defined by the SCSI specification. If no device type modifier exists, this member is zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.RemovableMedia">
            <summary>
            <para>Indicates when <b>TRUE</b> that the device's media (if any) is removable. If the device has no media, this member should be ignored. When <b>FALSE</b> the device's media is not removable.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.CommandQueueing">
            <summary>
            <para>Indicates when <b>TRUE</b> that the device supports multiple outstanding commands (SCSI tagged queuing or equivalent). When <b>FALSE</b>, the device does not support SCSI-tagged queuing or the equivalent.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.VendorIdOffset">
            <summary>
            <para>Specifies the byte offset from the beginning of the structure to a null-terminated ASCII string that contains the device's vendor ID. If the device has no vendor ID, this member is zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.ProductIdOffset">
            <summary>
            <para>Specifies the byte offset from the beginning of the structure to a null-terminated ASCII string that contains the device's product ID. If the device has no product ID, this member is zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.ProductRevisionOffset">
            <summary>
            <para>Specifies the byte offset from the beginning of the structure to a null-terminated ASCII string that contains the device's product revision string. If the device has no product revision string, this member is zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.SerialNumberOffset">
            <summary>
            <para>Specifies the byte offset from the beginning of the structure to a null-terminated ASCII string that contains the device's serial number. If the device has no serial number, this member is zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.BusType">
            <summary>
            <para>Specifies an enumerator value of type <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_bus_type">STORAGE_BUS_TYPE</a> that indicates the type of bus to which the device is connected. This should be used to interpret the raw device properties at the end of this structure (if any).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.RawPropertiesLength">
            <summary>Indicates the number of bytes of bus-specific data that have been appended to this descriptor.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.RawDeviceProperties">
            <summary>
            <para>Contains an array of length one that serves as a place holder for the first byte of the bus specific property data.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_device_descriptor#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="M:Windows.Win32.System.Ioctl.STORAGE_DEVICE_DESCRIPTOR.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.System.Ioctl.STORAGE_PROPERTY_ID">
            <summary>Enumerates the possible values of the PropertyId member of the STORAGE_PROPERTY_QUERY structure passed as input to the IOCTL_STORAGE_QUERY_PROPERTY request to retrieve the properties of a storage device or adapter.</summary>
            <remarks>The optional output buffer returned through the *lpOutBuffer* parameter of the [IOCTL_STORAGE_QUERY_PROPERTY](ni-winioctl-ioctl_storage_query_property.md) control code request 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. 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.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceProperty">
            <summary>Indicates that the caller is querying for the device descriptor, [STORAGE_DEVICE_DESCRIPTOR](ns-winioctl-storage_device_descriptor.md).</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterProperty">
            <summary>Indicates that the caller is querying for the adapter descriptor, [STORAGE_ADAPTER_DESCRIPTOR](ns-winioctl-storage_adapter_descriptor.md).</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceIdProperty">
            <summary>Indicates that the caller is querying for the device identifiers provided with the SCSI vital product data pages. Data is returned using the  [STORAGE_DEVICE_ID_DESCRIPTOR](ns-winioctl-storage_device_id_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceUniqueIdProperty">
            <summary>
            <para>**Intended for driver usage.** Indicates that the caller is querying for the unique device identifiers. Data is returned using the **STORAGE_DEVICE_UNIQUE_IDENTIFIER** structure (see the storduid.h header in the DDK). **Windows Server 2003 and Windows XP:**  This value is not supported before Windows Vista and Windows Server 2008.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceWriteCacheProperty">
            <summary>
            <para>Indicates that the caller is querying for the write cache property. Data is returned using the [STORAGE_WRITE_CACHE_PROPERTY](ns-winioctl-storage_write_cache_property.md) structure. **Windows Server 2003 and Windows XP:**  This value is not supported before Windows Vista and Windows Server 2008.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageMiniportProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAccessAlignmentProperty">
            <summary>
            <para>Indicates that the caller is querying for the access alignment descriptor, [STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR](ns-winioctl-storage_access_alignment_descriptor.md). **Windows Server 2003 and Windows XP:**  This value is not supported before Windows Vista and Windows Server 2008.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceSeekPenaltyProperty">
            <summary>
            <para>Indicates that the caller is querying for the seek penalty descriptor, [DEVICE_SEEK_PENALTY_DESCRIPTOR](ns-winioctl-device_seek_penalty_descriptor.md). **Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP:**  This value is not supported before Windows 7 and Windows Server 2008 R2.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceTrimProperty">
            <summary>
            <para>Indicates that the caller is querying for the trim descriptor, [DEVICE_TRIM_DESCRIPTOR](ns-winioctl-device_trim_descriptor.md). **Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP:**  This value is not supported before Windows 7 and Windows Server 2008 R2.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceWriteAggregationProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceDeviceTelemetryProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceLBProvisioningProperty">
            <summary>
            <para>Indicates that the caller is querying for the logical block provisioning property. Data is returned using the [DEVICE_LB_PROVISIONING_DESCRIPTOR](ns-winioctl-device_lb_provisioning_descriptor.md) structure. **Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP:**  This value is not supported before Windows 8 and Windows Server 2012.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDevicePowerProperty">
            <summary>
            <para>Indicates that the caller is querying for the device power descriptor. Data is returned using the [DEVICE_POWER_DESCRIPTOR](ns-winioctl-device_power_descriptor.md) structure. **Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP:**  This value is not supported before Windows 8 and Windows Server 2012.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceCopyOffloadProperty">
            <summary>
            <para>Indicates that the caller is querying for the copy offload  parameters property. Data is returned using the [DEVICE_COPY_OFFLOAD_DESCRIPTOR](ns-winioctl-device_copy_offload_descriptor.md) structure. **Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP:**  This value is not supported before Windows 8 and Windows Server 2012.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_property_id#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceResiliencyProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceMediumProductType">
            <summary>Indicates that the caller is querying for the medium product type. Data is returned using the [STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR](./ns-winioctl-storage_medium_product_type_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterRpmbProperty">
            <summary>Indicates that the caller is querying for RPMB support and properties. Data is returned using the [STORAGE_RPMB_DESCRIPTOR](ns-winioctl-storage_rpmb_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterCryptoProperty">
            <summary>Provides info on the storage adapter encryption capabilities. This is currently supported on UFS (Universal Flash Storage) adapters.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceIoCapabilityProperty">
            <summary>Indicates that the caller is querying for the device I/O capability property. Data is returned using the [DEVICE_IO_CAPABILITY_DESCRIPTOR](ns-winioctl-storage_device_io_capability_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterProtocolSpecificProperty">
            <summary>Indicates that the caller is querying for protocol-specific data from the  adapter. Data is returned using the [STORAGE_PROTOCOL_DATA_DESCRIPTOR](ns-winioctl-storage_protocol_data_descriptor.md) structure. See the remarks for more info.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceProtocolSpecificProperty">
            <summary>Indicates that the caller is querying for protocol-specific data from the device. Data is returned using the [STORAGE_PROTOCOL_DATA_DESCRIPTOR](ns-winioctl-storage_protocol_data_descriptor.md) structure. See the remarks for more info.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterTemperatureProperty">
            <summary>Indicates that the caller is querying temperature data from the adapter. Data is returned using the [STORAGE_TEMPERATURE_DATA_DESCRIPTOR](ns-winioctl-storage_temperature_data_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceTemperatureProperty">
            <summary>Indicates that the caller is querying for temperature data from the device.  Data is returned using the [STORAGE_TEMPERATURE_DATA_DESCRIPTOR](ns-winioctl-storage_temperature_data_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterPhysicalTopologyProperty">
            <summary>Indicates that the caller is querying for topology information from the adapter. Data is returned using the [STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR](ns-winioctl-storage_physical_topology_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDevicePhysicalTopologyProperty">
            <summary>Indicates that the caller is querying for topology information from the device. Data is returned using the [STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR](ns-winioctl-storage_physical_topology_descriptor.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceAttributesProperty">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceManagementStatus">
            <summary>Provides health information about the storage device (specifically for the persistent memory stack).</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageAdapterSerialNumberProperty">
            <summary>Indicates that the caller is querying for the adapter serial number. Data is returned using the [STORAGE_ADAPTER_SERIAL_NUMBER](ns-winioctl-storage_adapter_serial_number.md) structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceLocationProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceNumaProperty">
            <summary>Provides the non-uniform memory access (NUMA) node of the storage device.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceZonedDeviceProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceUnsafeShutdownCount">
            <summary>Provides the unsafe shutdown count value used to determine if the device data might have been lost during a power loss event (specifically for the persistent memory stack).</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceEnduranceProperty">
            <summary>Provides info on how many bytes have been read/write from a solid-state drive (SSD). This property is supported only for Non-Volatile Memory Express (NVMe) devices that implement a certain NVMe feature.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceLedStateProperty">
            <summary>Provides info on the state of the LED associated with a storage device. This is a server-oriented feature.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageDeviceSelfEncryptionProperty">
            <summary>Reserved for system use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_ID.StorageFruIdProperty">
            <summary>Provides identification info for a storage device that can be physically replaced with a Field Replacement Unit (FRU).</summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_QUERY">
            <summary>Indicates the properties of a storage device or adapter to retrieve as the input buffer passed to the IOCTL_STORAGE_QUERY_PROPERTY control code.</summary>
            <remarks>
            <para>The optional output buffer returned through the <i>lpOutBuffer</i> parameter of the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ni-winioctl-ioctl_storage_query_property">IOCTL_STORAGE_QUERY_PROPERTY</a> control code can be one of several structures depending on the value of the <b>PropertyId</b> member.  If the <b>QueryType</b> member is set to <b>PropertyExistsQuery</b>, then no structure is returned.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_property_query#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_QUERY.PropertyId">
            <summary>
            <para>Indicates whether the caller is requesting a device descriptor, an adapter descriptor, a write cache property, a device unique ID (DUID), or the device identifiers provided in the device's SCSI vital product data (VPD) page. For a list of the property IDs that can be assigned to this member, see <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_property_id">STORAGE_PROPERTY_ID</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_property_query#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_QUERY.QueryType">
            <summary>
            <para>Contains flags indicating the type of query to be performed as enumerated by the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_query_type">STORAGE_QUERY_TYPE</a> enumeration. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_property_query#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_QUERY.AdditionalParameters">
            <summary>Contains an array of bytes that can be used to retrieve additional parameters for specific queries.</summary>
        </member>
        <member name="M:Windows.Win32.System.Ioctl.STORAGE_PROPERTY_QUERY.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.System.Ioctl.STORAGE_PROTOCOL_DATA_DESCRIPTOR">
            <summary>This structure is used in conjunction with IOCTL_STORAGE_QUERY_PROPERTY to return protocol-specific data from a storage device or adapter.</summary>
            <remarks>
            <para>When using <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ni-winioctl-ioctl_storage_query_property">IOCTL_STORAGE_QUERY_PROPERTY</a> to retrieve protocol-specific information in the <b>STORAGE_PROTOCOL_DATA_DESCRIPTOR</b>, configure the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ns-winioctl-storage_property_query">STORAGE_PROPERTY_QUERY</a> structure as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_protocol_data_descriptor#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_DATA_DESCRIPTOR.Version">
            <summary>The version of this structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_DATA_DESCRIPTOR.Size">
            <summary>The total size of the descriptor, including the space for all protocol data.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_DATA_DESCRIPTOR.ProtocolSpecificData">
            <summary>The protocol-specific data, of type <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ns-winioctl-storage_protocol_specific_data">STORAGE_PROTOCOL_SPECIFIC_DATA</a>.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_NVME_DATA_TYPE">
            <summary>Describes the type of NVMe protocol-specific data that's to be queried during an IOCTL_STORAGE_QUERY_PROPERTY request.</summary>
            <remarks>
            <para>When using [IOCTL_STORAGE_QUERY_PROPERTY](ni-winioctl-ioctl_storage_query_property.md) to retrieve protocol-specific information in the [STORAGE_PROTOCOL_DATA_DESCRIPTOR](ns-winioctl-storage_protocol_data_descriptor.md), configure the [STORAGE_PROPERTY_QUERY](ns-winioctl-storage_property_query.md) structure as follows: * Allocate a buffer that can contains both a [STORAGE_PROPERTY_QUERY](ns-winioctl-storage_property_query.md) and a [STORAGE_PROTOCOL_SPECIFIC_DATA](ns-winioctl-storage_protocol_specific_data.md) structure. * Set the **PropertyID** field to **StorageAdapterProtocolSpecificProperty** or **StorageDeviceProtocolSpecificProperty** for a controller or device/namespace request, respectively. * Set the **QueryType** field to **PropertyStandardQuery**. * Fill the [STORAGE_PROTOCOL_SPECIFIC_DATA](ns-winioctl-storage_protocol_specific_data.md) structure with the desired values. The start of the **STORAGE_PROTOCOL_SPECIFIC_DATA** is the **AdditionalParameters** field of [STORAGE_PROPERTY_QUERY](ns-winioctl-storage_property_query.md). To specify a type of NVMe protocol-specific information,  configure the [STORAGE_PROTOCOL_SPECIFIC_DATA](ns-winioctl-storage_protocol_specific_data.md) structure as follows: * Set the **ProtocolType** field to **ProtocolTypeNVMe**. * Set the **DataType** field to an enumeration value defined by **STORAGE_PROTOCOL_NVME_DATA_TYPE**: * Use **NVMeDataTypeIdentify** to get Identify Controller data or Identify Namespace data. * Use **NVMeDataTypeLogPage** to get log pages (including SMART/health data). * Use **NVMeDataTypeFeature** to get features of the NVMe drive.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_protocol_nvme_data_type#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_NVME_DATA_TYPE.NVMeDataTypeUnknown">
            <summary>Unknown data type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_NVME_DATA_TYPE.NVMeDataTypeIdentify">
            <summary>Identify data type. This can be either Identify Controller data or Identify Namespace data. When this type of data is being queried, the ProtocolDataRequestValue field of [STORAGE_PROTOCOL_SPECIFIC_DATA](ns-winioctl-storage_protocol_specific_data.md) will have a value of **NVME_IDENTIFY_CNS_CONTROLLER** for adapter or **NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE** for namespace. If the ProtocolDataRequestValue is **NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE**, the ProtocolDataRequestSubValue field from the **STORAGE_PROTOCOL_SPECIFIC_DATA** structure will have a value of the namespace ID.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_NVME_DATA_TYPE.NVMeDataTypeLogPage">
            <summary>Log page data type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_NVME_DATA_TYPE.NVMeDataTypeFeature">
            <summary>Feature data type.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA">
            <summary>Describes protocol-specific device data, provided in the input and output buffer of an IOCTL_STORAGE_QUERY_PROPERTY request.</summary>
            <remarks>
            <para>When using <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ni-winioctl-ioctl_storage_query_property">IOCTL_STORAGE_QUERY_PROPERTY</a> to retrieve protocol-specific information in the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ns-winioctl-storage_protocol_data_descriptor">STORAGE_PROTOCOL_DATA_DESCRIPTOR</a>, configure the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ns-winioctl-storage_property_query">STORAGE_PROPERTY_QUERY</a> structure as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ns-winioctl-storage_protocol_specific_data#">Read more on learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolType">
            <summary>The protocol type. Values for this member are defined in the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_protocol_type">STORAGE_PROTOCOL_TYPE</a> enumeration.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.DataType">
            <summary>The protocol data type. Data types are defined in the <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_protocol_nvme_data_type">STORAGE_PROTOCOL_NVME_DATA_TYPE</a> and <a href="https://docs.microsoft.com/windows/desktop/api/winioctl/ne-winioctl-storage_protocol_ata_data_type">STORAGE_PROTOCOL_ATA_DATA_TYPE</a> enumerations.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataRequestValue">
            <summary>The protocol data request value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataRequestSubValue">
            <summary>The sub value of the protocol data request.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataOffset">
            <summary>The offset of the data buffer that is from the beginning of this structure. The typical value can be sizeof(<b>STORAGE_PROTOCOL_SPECIFIC_DATA</b>).</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataLength">
            <summary>The length of the protocol data.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.FixedProtocolReturnData">
            <summary>The returned data.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataRequestSubValue2">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_SPECIFIC_DATA.ProtocolDataRequestSubValue3">
            <summary></summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE">
            <summary>Specifies the protocol of a storage device.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_protocol_type">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeUnknown">
            <summary>Unknown protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeScsi">
            <summary>SCSI protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeAta">
            <summary>ATA protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeNvme">
            <summary>NVMe protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeSd">
            <summary>SD protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeUfs">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeProprietary">
            <summary>Vendor-specific protocol type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_PROTOCOL_TYPE.ProtocolTypeMaxReserved">
            <summary>Reserved.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ioctl.STORAGE_QUERY_TYPE">
            <summary>Used by the STORAGE_PROPERTY_QUERY structure passed to the IOCTL_STORAGE_QUERY_PROPERTY control code to indicate what information is returned about a property of a storage device or adapter.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_query_type">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_QUERY_TYPE.PropertyStandardQuery">
            <summary>Instructs the driver to return an appropriate descriptor.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_QUERY_TYPE.PropertyExistsQuery">
            <summary>Instructs the driver to report whether the descriptor is supported.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_QUERY_TYPE.PropertyMaskQuery">
            <summary>Not currently supported. Do not use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ioctl.STORAGE_QUERY_TYPE.PropertyQueryMaxDefined">
            <summary>Specifies the upper limit of the list of query types. This is used to validate the query type.</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_8.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_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.Win32.__byte_16.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_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.Win32.__byte_9.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_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="P:Windows.Win32.__byte_2.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_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="P:Windows.Win32.__byte_26.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_26.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_296.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_296.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_20.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_20.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_40.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_40.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_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_106.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_106.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_156.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_156.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_224.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_224.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_256.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_256.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_768.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_768.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_1024.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__byte_1024.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.Storage.FileSystem.STORAGE_BUS_TYPE">
            <summary>Specifies the various types of storage buses.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_bus_type">Learn more about this API from learn.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeUnknown">
            <summary>Unknown bus type.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeScsi">
            <summary>SCSI bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeAtapi">
            <summary>ATAPI bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeAta">
            <summary>ATA bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusType1394">
            <summary>IEEE-1394 bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSsa">
            <summary>SSA bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeFibre">
            <summary>Fibre Channel bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeUsb">
            <summary>USB bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeRAID">
            <summary>RAID bus.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeiScsi">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSas">
            <summary>
            <para>Serial Attached SCSI (SAS) bus. **Windows Server 2003:**  This is not supported before Windows Server 2003 with SP1.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_bus_type#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSata">
            <summary>
            <para>SATA bus. **Windows Server 2003:**  This is not supported before Windows Server 2003 with SP1.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winioctl/ne-winioctl-storage_bus_type#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSd">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeMmc">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeVirtual">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeFileBackedVirtual">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSpaces">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeNvme">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeSCM">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeUfs">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeMax">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Storage.FileSystem.STORAGE_BUS_TYPE.BusTypeMaxReserved">
            <summary></summary>
        </member>
        <member name="T:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG">
            <summary>Contains fields that specify the information contained in the SMART / Health Information Log page.</summary>
            <remarks>The temperature reported by a temperature sensor may be used to trigger an asynchronous event. For more information, see [NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD](ns-nvme-nvme_cdw11_feature_temperature_threshold.md).</remarks>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.CriticalWarning">
            <summary>
            <para>A Critical Warning (**CriticalWarning**) structure containing fields that indicate critical warnings for the state of the controller. Each field of the **CriticalWarning** structure is a bit that corresponds to a critical warning type; multiple bits may be set. If a bit is cleared to `0`, then that critical warning does not apply. Bits in this field represent the current associated state and are not persistent. Critical warnings may result in an asynchronous event notification to the host.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.Temperature">
            <summary>
            <para>Indicates the composite temperature, in degrees Kelvin, of the overall device, including the controller and the NVM subsystem. If the temperature in this field exceeds the temperature threshold, an asynchronous event completion may occur. For more information, see [NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD](ns-nvme-nvme_cdw11_feature_temperature_threshold.md). Warning and critical overheating composite temperature threshold values are reported by the **WCTEMP** and **CCTEMP** fields in the [Identify Controller](ns-nvme-nvme_identify_controller_data.md) data structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.AvailableSpare">
            <summary>Indicates a normalized percentage (0 to 100) of the remaining spare capacity available.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.AvailableSpareThreshold">
            <summary>
            <para>Indicates the threshold of available spare capacity. When the value of **AvailableSpare** falls below the threshold indicated in this field, an asynchronous event completion may occur. The value is indicated as a normalized percentage (0 to 100).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.PercentageUsed">
            <summary>
            <para>Indicates a vendor specific estimate of the percentage of NVM subsystem life used, based on the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100. Percentages greater than 254 are represented as 255. This value is updated once per power-on hour (when the controller is not in a sleep state).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.Reserved0">
            <summary>A reserved field.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.DataUnitRead">
            <summary>
            <para>Indicates the number of 512 byte data units the host has read from the controller, not including metadata. The value of this field is reported in thousands and is rounded up. For example, a value of 1 corresponds to 1000 units of 512 bytes read. When the Logical Block Access (LBA) size is a value other than 512 bytes, the controller converts the amount of data read to 512 byte units. For the NVM command set, logical blocks read as part of Compare and Read operations are included in this value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.DataUnitWritten">
            <summary>
            <para>Indicates the number of 512 byte data units the host has written to the controller, not including metadata. The value of this field is reported in thousands and is rounded up. For example, a value of 1 corresponds to 1000 units of 512 bytes read. When the Logical Block Access (LBA) size is a value other than 512 bytes, the controller converts the amount of data written to 512 byte units. For the NVM command set, logical blocks written as part of Write operations are included in this value. Write Uncorrectable commands do not impact this value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.HostReadCommands">
            <summary>
            <para>Indicates the number of Read commands completed by the controller. For the NVM command set, this is the number of Compare and Read commands.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.HostWrittenCommands">
            <summary>
            <para>Indicates the number of Write commands completed by the controller. For the NVM command set, this is the number of Write commands.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.ControllerBusyTime">
            <summary>
            <para>Indicates the amount of time, in minutes, that the controller is busy with I/O commands. The controller is busy when there is a command outstanding to an I/O Queue. Specifically, when a command was issued via an I/O [Submission Queue Tail doorbell](ns-nvme-nvme_submission_queue_tail_doorbell.md) write and the corresponding completion queue entry has not been posted yet to the associated I/O Completion Queue.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.PowerCycle">
            <summary>Indicates the number of power cycles.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.PowerOnHours">
            <summary>Indicates the number of power-on hours. This does not include time that the controller was powered and in a low power state condition.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.UnsafeShutdowns">
            <summary>Indicates the number of unsafe shutdowns. This count is incremented when a shutdown notification, indicated in the **SHN** filed of [Controller Configuration](ns-nvme-nvme_controller_configuration.md), is not received prior to loss of power.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.MediaErrors">
            <summary>
            <para>Indicates the number of occurrences where the controller detected an unrecovered data integrity error. [Media Errors](ne-nvme-nvme_status_media_error_codes.md) such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.ErrorInfoLogEntryCount">
            <summary>Indicates the number of [Error Information](ns-nvme-nvme_error_info_log.md) log entries over the life of the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.WarningCompositeTemperatureTime">
            <summary>
            <para>Indicates the amount of time, in minutes, that the controller is operational and the [Composite Temperature (**Temperature**)](#-field-temperature) is greater than or equal to the Warning Composite Temperature Threshold (**WCTEMP**) field and less than the Critical Composite Temperature Threshold (**CCTEMP**) field in the [Identify Controller](ns-nvme-nvme_identify_controller_data.md) data structure. If the value of the **WCTEMP** or **CCTEMP** field is `0h`, then this field is always cleared to `0h` regardless of the **Temperature** value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.CriticalCompositeTemperatureTime">
            <summary>
            <para>Indicates the amount of time in minutes that the controller is operational and the [Composite Temperature (**Temperature**)](#-field-temperature) is greater the Critical Composite Temperature Threshold (**CCTEMP**) field in the [Identify Controller](ns-nvme-nvme_identify_controller_data.md) data structure. If the value of the **CCTEMP** field is `0h`, then this field is always cleared to `0h` regardless of the **Temperature** value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_health_info_log#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor1">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 1.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor2">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 2.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor3">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 3.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor4">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 4.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor5">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 5.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor6">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 6.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor7">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 7.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.TemperatureSensor8">
            <summary>Indicates the current temperature in degrees Kelvin reported by temperature sensor 8.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG.Reserved1">
            <summary>A reserved field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.AvailableSpaceLow">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.TemperatureThreshold">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.ReliabilityDegraded">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.ReadOnly">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.VolatileMemoryBackupDeviceFailed">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct.Reserved">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_HEALTH_INFO_LOG._CriticalWarning_e__Union._Anonymous_e__Struct._bitfield" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="T:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA">
            <summary>Contains values that indicate controller capabilities, features, command set attributes, and power state descriptors.</summary>
            <remarks>The values of the **VID**, **SN**, and **MN** fields may be combined to form a globally unique value that identifies the NVM subsystem.</remarks>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.VID">
            <summary>Contains the company vendor identifier that is assigned by the [Peripheral Component Interconnect - Special Interest Group (PCI-SIG)](https://pcisig.com/).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.SSVID">
            <summary>Contains the company vendor identifier that is assigned by the PCI-SIG for the subsystem.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.SN">
            <summary>Contains the serial number for the NVM subsystem that is assigned by the vendor as an ASCII string.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.MN">
            <summary>Contains the model number for the NVM subsystem that is assigned by the vendor as an ASCII string.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.FR">
            <summary>
            <para>Contains the currently active firmware revision for the NVM subsystem. This is the same firmware revision information in the [NVME_FIRMWARE_SLOT_INFO_LOG](ns-nvme-nvme_firmware_slot_info_log.md) that can be retrieved with the Get Log Page command.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.RAB">
            <summary>Contains the recommended Arbitration Burst size.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.IEEE">
            <summary>
            <para>Contains the Organization Unique Identifier (OUI) for the controller vendor. The OUI is a valid IEEE/RAC assigned identifier that can be registered at http://standards.ieee.org/develop/regauth/oui/public.html.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.CMIC">
            <summary>A Controller Multi-Path I/O and Namespace Sharing Capabilities (CMIC) structure that specifies the multi-path I/O and namespace sharing capabilities of the controller and NVM subsystem.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.MDTS">
            <summary>
            <para>Indicates the maximum data transfer size between the host and the controller. The host should not submit a command that exceeds this transfer size. If a command is submitted that exceeds the transfer size, the command is aborted with a status of [NVME_STATUS_INVALID_FIELD_IN_COMMAND](ne-nvme-nvme_status_generic_command_codes.md#field-nvme-status-invalid-field-in-command). The value of this field is in units of the minimum memory page size specified in the **MPSMIN** field of the [Controller Capabilities](ns-nvme-nvme_controller_capabilities.md) structure, and is reported as a power of two (2^n). A value of `0h` indicates no restrictions on transfer size. The restriction includes metadata if it is interleaved with the logical block data. If SGL Bit Bucket descriptors are supported, their lengths are included in determining if a command exceeds the Maximum Data Transfer Size for destination data buffers. Their length in a source data buffer is not included for a Maximum Data Transfer Size calculation.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.CNTLID">
            <summary>Contains the NVM subsystem unique controller identifier associated with the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.VER">
            <summary>
            <para>Contains the value reported in the Version register, defined in the **VS** field of the [NVME_CONTROLLER_REGISTERS](../nvme/ns-nvme-nvme_controller_registers.md) structure. Implementations that are compliant with NVMe specification version 1.2 or later, will report a non-zero value in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.RTD3R">
            <summary>
            <para>Indicates the typical latency in microseconds when resuming from Runtime D3 (RTD3). Implementations that are compliant with NVMe specification version 1.2 or later, will report a non-zero value in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.RTD3E">
            <summary>
            <para>Indicates the typical latency in microseconds to enter Runtime D3 (RTD3). Implementations that are compliant with NVMe specification version 1.2 or later, will report a non-zero value in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.OAES">
            <summary>
            <para>An Optional Asynchronous Events Supported (OAES) structure containing fields that indicate whether optional asynchronous events are supported by the controller. A controller should not send optional asynchronous events before they are enabled by host software.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.CTRATT">
            <summary>A Controller Attributes (CTRATT) structure containing controller attribute information.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.Reserved0">
            <summary>Bits 10:31 of the **OAES** structure are reserved.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.ReservedForManagement">
            <summary>Reserved for NVMe Management.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.OACS">
            <summary>An Optional Admin Command Support (OACS) structure containing fields that indicate the optional [Admin Commands](ne-nvme-nvme_admin_commands.md) supported by the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.ACL">
            <summary>
            <para>Indicates the maximum number of concurrently outstanding [Abort](ns-nvme-nvme_cdw10_abort.md) commands supported by the controller. This is a 0’s based value. Implementations should support a minimum of four outstanding Abort commands simultaneously.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.AERL">
            <summary>
            <para>Indicates the maximum number of concurrently outstanding [Asynchronous Event Request](ne-nvme-nvme_async_event_types.md) commands supported by the controller. This is a 0’s based value. Implementations should support a minimum of four outstanding Asynchronous Event Request commands simultaneously.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.FRMW">
            <summary>A Firmware Updates (FRMW) structure containing fields that indicate capabilities regarding firmware updates.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.LPA">
            <summary>A Log Page Attributes (LPA) structure containing fields that indicate optional attributes for log pages that are accessed by using the [Get Log Page](ns-nvme-nvme_cdw10_get_log_page.md) command.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.ELPE">
            <summary>Indicates the number of Error Information log entries that are stored by the controller. This field is a 0’s based value.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.NPSS">
            <summary>
            <para>Indicates the number of NVM Express power states supported by the controller. This is a 0’s based value. Power states are numbered sequentially starting at power state 0. A controller must support at least one power state (for example, power state 0), and may support up to 31 additional power states, for a total of 32.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.AVSCC">
            <summary>An Admin Vendor Specific Command Configuration (AVSCC) structure containing fields that indicate the configuration settings for Admin Vendor Specific command handling.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.APSTA">
            <summary>An Autonomous Power State Transition Attributes (APSTA) structure containing fields that indicate the attributes of the [autonomous power state transition feature](ns-nvme-nvme_cdw11_feature_auto_power_state_transition.md).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.WCTEMP">
            <summary>
            <para>Indicates the minimum Composite Temperature field value (reported in the [SMART / Health Information](ns-nvme-nvme_health_info_log.md) log that indicates an overheating condition during which controller operation continues. Immediate remediation is recommended (for example, additional cooling or workload reduction). The platform should strive to maintain a composite temperature below this value. A value of `0h` in this field indicates that no warning temperature threshold value is reported by the controller. Implementations compliant to NVMe Spec version 1.2 or later should report a non-zero value in this field. It is recommended that implementations report a value of `0157h` in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.CCTEMP">
            <summary>
            <para>Indicates the minimum Composite Temperature field value (reported in the [SMART / Health Information](ns-nvme-nvme_health_info_log.md log) that indicates a critical overheating condition. For example, a condition that may prevent continued normal operation, possibility of data loss, automatic device shutdown, extreme performance throttling, or permanent damage. A value of `0h` in this field indicates that no critical temperature threshold value is reported by the controller. Implementations compliant to NVMe Spec version 1.2 or later should report a non-zero value in this field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.MTFA">
            <summary>
            <para>Indicates the maximum time the controller temporarily stops processing commands to activate the firmware image. This field is valid if the controller supports firmware activation without a reset. The **MFTA** value is specified in 100 millisecond units. A value of `0h` indicates that the maximum time is undefined.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.HMPRE">
            <summary>
            <para>Indicates the preferred size that the host should allocate for the [Host Memory Buffer](ns-nvme-nvme_cdw11_feature_host_memory_buffer.md) feature in 4KB units. This value must be larger than or equal to the Host Memory Buffer Minimum Size (**HMMIN**). If this field is non-zero, then the Host Memory Buffer feature is supported. When this value is cleared to `0h`, the Host Memory Buffer feature is not supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.HMMIN">
            <summary>
            <para>Indicates the minimum size that the host should allocate for the Host Memory Buffer feature in 4KB units. When this value is cleared to `0`, the host is requested to allocate any amount of host memory possible up to the **HMPRE** value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.TNVMCAP">
            <summary>
            <para>Indicates the total NVM capacity, in bytes, of the NVM subsystem. This field is supported if the Namespace Management and Namespace Attachment commands are supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.UNVMCAP">
            <summary>
            <para>Indicates the unallocated NVM capacity, in bytes, of the NVM subsystem. This field is supported if the Namespace Management and Namespace Attachment commands are supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.RPMBS">
            <summary>A Replay Protected Memory Block Support (RPMBS) structure containing fields that indicate whether the controller supports one or more Replay Protected Memory Blocks (RPMBs) and the associated capabilities.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.EDSTT">
            <summary>Indicates the Extended Device Self-test Time (EDSTT).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.DSTO">
            <summary>Indicates the Device Self-test Options (DSTO).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.FWUG">
            <summary>Indicates the Firmware Update Granularity (FWUG).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.KAS">
            <summary>Indicates the Keep Alive Support (KAS).</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.HCTMA">
            <summary>A Host Controlled Thermal Management Attributes (HCTMA) structure.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.MNTMT">
            <summary>Minimum Thermal Management Temperature (MNTMT)</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.MXTMT">
            <summary>Maximum Thermal Management Temperature (MXTMT)</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.SANICAP">
            <summary>Sanitize Capabilities (SANICAP)</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.NSETIDMAX">
            <summary>NVM Set Identifier Maximum</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.Reserved1">
            <summary>Bits 0:7 of the **OAES** structure are reserved.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.SQES">
            <summary>A Submission Queue Entry Size (SQES) structure containing fields that indicate the required and maximum Submission Queue entry size when using the NVM Command Set.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.CQES">
            <summary>A Completion Queue Entry Size (CQES) structure containing fields that indicate the required and maximum Completion Queue entry size when using the NVM Command Set.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.NN">
            <summary>Indicates the number of valid namespaces present for the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.ONCS">
            <summary>An Optional NVM Command Support (ONCS) structure containing fields that indicate the optional [NVM commands](ne-nvme-nvme_nvm_commands.md) and features supported by the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.FUSES">
            <summary>A Fused Operation Support (FUSES) structure containing fields that indicate the fused operations that the controller supports.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.FNA">
            <summary>A Format NVM Attributes (FNA) structure containing fields that indicate attributes for the [Format NVM](ns-nvme-nvme_cdw10_format_nvm.md) command.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.VWC">
            <summary>A Volatile Write Cache (VWC) structure containing fields that indicate attributes related to the presence of a volatile write cache in the implementation.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.AWUN">
            <summary>
            <para>Indicates the size of the write operation guaranteed to be written atomically to the NVM across all namespaces with any supported namespace format during normal operation.  This field is specified in logical blocks and is a 0’s based value. If a specific namespace guarantees a larger size than is reported in this field, then this namespace specific size is reported in the **NAWUN** field of the [Identify Namespace](../nvme/ns-nvme-nvme_identify_namespace_data.md) data structure. If a write command is submitted with size less than or equal to the **AWUN** value, the host is guaranteed that the write command is atomic to the NVM with respect to other read or write commands. If a write command is submitted with size greater than the **AWUN** value, then there is no guarantee of command atomicity. The **AWUN** value does not have any applicability to write errors caused by power failure. For more information, see the Atomic Write Unit Power Fail (**AWUPF**) field. A value of `FFFFh` indicates all commands are atomic as this is the largest command size. Implementations should support a minimum of 128KB, appropriately scaled based on the Logical Block Access (LBA) size.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.AWUPF">
            <summary>
            <para>Indicates the size of the write operation guaranteed to be written atomically to the NVM across all namespaces with any supported namespace format during a power fail or error condition. This field is specified in logical blocks and is a 0’s based value. If a specific namespace guarantees a larger size than is reported in this field, then this namespace specific size is reported in the **NAWUPF** field in the [Identify Namespace](../nvme/ns-nvme-nvme_identify_namespace_data.md) data structure. The **AWUPF** value must be less than or equal to the **AWUN** value. If a write command is submitted with size less than or equal to the **AWUPF** value, the host is guaranteed that the write is atomic to the NVM with respect to other read or write commands. If a write command is submitted that is greater than this size, there is no guarantee of command atomicity. If the write size is less than or equal to the **AWUPF** value and the write command fails, then subsequent read commands for the associated logical blocks will return data from the previous successful write command. If a write command is submitted with size greater than the **AWUPF** value, then there is no guarantee of data returned on subsequent reads of the associated logical blocks.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.NVSCC">
            <summary>A NVM Vendor Specific Command Configuration (NVSCC) structure containing fields that indicate the configuration settings for NVM Vendor Specific command handling.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.ACWU">
            <summary>
            <para>Indicates the size of the write operation guaranteed to be written atomically to the NVM across all namespaces with any supported namespace format for a Compare and Write fused operation. If a specific namespace guarantees a larger size than is reported in this field, then this namespace specific size is reported in the **NACWU** field in the [Identify Namespace](../nvme/ns-nvme-nvme_identify_namespace_data.md) data structure. This field will be supported if the Compare and Write fused command is supported. This field is specified in logical blocks and is a 0’s based value. If a Compare and Write is submitted that requests a transfer size larger than this value, the controller may fail the command with a status of [NVME_STATUS_INVALID_FIELD_IN_COMMAND](ne-nvme-nvme_status_generic_command_codes.md). If Compare and Write is not a supported fused command, the value of this field will be `0h`.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.Reserved4">
            <summary>A reserved field.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.SGLS">
            <summary>A SGL Support (SGLS) structure containing fields that specify whether Scatter Gather Lists (SGL) are supported for the NVM Command Set and the supported SGL types.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.Reserved6">
            <summary>Bytes 704:2047 are reserved for I/O Command Set Attributes.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.PDS">
            <summary>
            <para>Contains an array of 32 Power State Descriptors. Each member of the array is a 32 bit field that indicates the characteristics of a Power State Descriptor. The format of this field is defined in the [NVME_POWER_STATE_DESC](ns-nvme-nvme_power_state_desc.md) structure. The zero-based position of a structure in the array corresponds to the name of the Power State Descriptor, such that Power State 0 Descriptor (PSD0) is in position 0, Power State 1 Descriptor (PSD1) is in position 1, and so on, up to Power State 31 Descriptor (PSD31) in position 31.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_identify_controller_data#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA.VS">
            <summary>Bytes 3072:4095 are allocated for vendor specific usage.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct.MultiPCIePorts">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct.MultiControllers">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct.SRIOV">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct.ANAR">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct.Reserved">
            <summary>Gets or sets bits 4-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CMIC_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.Reserved0">
            <summary>Gets or sets bits 0-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field. Allowed values are [0..255].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.NamespaceAttributeChanged">
            <summary>Gets or sets bit 8 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.FirmwareActivation">
            <summary>Gets or sets bit 9 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.Reserved1">
            <summary>Gets or sets bit 10 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.AsymmetricAccessChanged">
            <summary>Gets or sets bit 11 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.PredictableLatencyAggregateLogChanged">
            <summary>Gets or sets bit 12 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.LbaStatusChanged">
            <summary>Gets or sets bit 13 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.EnduranceGroupAggregateLogChanged">
            <summary>Gets or sets bit 14 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.Reserved2">
            <summary>Gets or sets bits 15-26 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field. Allowed values are [0..4095].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.ZoneInformation">
            <summary>Gets or sets bit 27 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct.Reserved3">
            <summary>Gets or sets bits 28-31 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OAES_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.HostIdentifier128Bit">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.NOPSPMode">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.NVMSets">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.ReadRecoveryLevels">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.EnduranceGroups">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.PredictableLatencyMode">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.TBKAS">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.NamespaceGranularity">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.SQAssociations">
            <summary>Gets or sets bit 8 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.UUIDList">
            <summary>Gets or sets bit 9 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct.Reserved0">
            <summary>Gets or sets bits 10-31 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CTRATT_e__Struct._bitfield" /> field. Allowed values are [0..4194303].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel0">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel1">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel2">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel3">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel4">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel5">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel6">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel7">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel8">
            <summary>Gets or sets bit 8 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel9">
            <summary>Gets or sets bit 9 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel10">
            <summary>Gets or sets bit 10 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel11">
            <summary>Gets or sets bit 11 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel12">
            <summary>Gets or sets bit 12 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel13">
            <summary>Gets or sets bit 13 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel14">
            <summary>Gets or sets bit 14 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct.ReadRecoveryLevel15">
            <summary>Gets or sets bit 15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RRLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.SecurityCommands">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.FormatNVM">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.FirmwareCommands">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.NamespaceCommands">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.DeviceSelfTest">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.Directives">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.NVMeMICommands">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.VirtualizationMgmt">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.DoorBellBufferConfig">
            <summary>Gets or sets bit 8 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.GetLBAStatus">
            <summary>Gets or sets bit 9 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct.Reserved">
            <summary>Gets or sets bits 10-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._OACS_e__Struct._bitfield" /> field. Allowed values are [0..63].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct.Slot1ReadOnly">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct.SlotCount">
            <summary>Gets or sets bits 1-3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct._bitfield" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct.ActivationWithoutReset">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct.Reserved">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FRMW_e__Struct._bitfield" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.SmartPagePerNamespace">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.CommandEffectsLog">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.LogPageExtendedData">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.TelemetrySupport">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.PersistentEventLog">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.Reserved0">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.TelemetryDataArea4">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct.Reserved1">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._LPA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._AVSCC_e__Struct.CommandFormatInSpec">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._AVSCC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._AVSCC_e__Struct.Reserved">
            <summary>Gets or sets bits 1-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._AVSCC_e__Struct._bitfield" /> field. Allowed values are [0..127].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._APSTA_e__Struct.Supported">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._APSTA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._APSTA_e__Struct.Reserved">
            <summary>Gets or sets bits 1-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._APSTA_e__Struct._bitfield" /> field. Allowed values are [0..127].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct.RPMBUnitCount">
            <summary>Gets or sets bits 0-2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct._bitfield" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct.AuthenticationMethod">
            <summary>Gets or sets bits 3-5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct._bitfield" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct.Reserved0">
            <summary>Gets or sets bits 6-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct._bitfield" /> field. Allowed values are [0..1023].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct.TotalSize">
            <summary>Gets or sets bits 16-23 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct._bitfield" /> field. Allowed values are [0..255].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct.AccessSize">
            <summary>Gets or sets bits 24-31 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._RPMBS_e__Struct._bitfield" /> field. Allowed values are [0..255].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._HCTMA_e__Struct.Supported">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._HCTMA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._HCTMA_e__Struct.Reserved">
            <summary>Gets or sets bits 1-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._HCTMA_e__Struct._bitfield" /> field. Allowed values are [0..32767].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.CryptoErase">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.BlockErase">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.Overwrite">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.Reserved">
            <summary>Gets or sets bits 3-28 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field. Allowed values are [0..67108863].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.NDI">
            <summary>Gets or sets bit 29 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct.NODMMAS">
            <summary>Gets or sets bits 30-31 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SANICAP_e__Struct._bitfield" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.OptimizedState">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.NonOptimizedState">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.InaccessibleState">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.PersistentLossState">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.ChangeState">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.Reserved">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.StaticANAGRPID">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct.SupportNonZeroANAGRPID">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ANACAP_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SQES_e__Struct.RequiredEntrySize">
            <summary>Gets or sets bits 0-3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SQES_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SQES_e__Struct.MaxEntrySize">
            <summary>Gets or sets bits 4-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SQES_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CQES_e__Struct.RequiredEntrySize">
            <summary>Gets or sets bits 0-3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CQES_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CQES_e__Struct.MaxEntrySize">
            <summary>Gets or sets bits 4-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._CQES_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.Compare">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.WriteUncorrectable">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.DatasetManagement">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.WriteZeroes">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.FeatureField">
            <summary>Gets or sets bit 4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.Reservations">
            <summary>Gets or sets bit 5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.Timestamp">
            <summary>Gets or sets bit 6 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.Verify">
            <summary>Gets or sets bit 7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct.Reserved">
            <summary>Gets or sets bits 8-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._ONCS_e__Struct._bitfield" /> field. Allowed values are [0..255].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FUSES_e__Struct.CompareAndWrite">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FUSES_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FUSES_e__Struct.Reserved">
            <summary>Gets or sets bits 1-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FUSES_e__Struct._bitfield" /> field. Allowed values are [0..32767].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct.FormatApplyToAll">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct.SecureEraseApplyToAll">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct.CryptographicEraseSupported">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct.FormatSupportNSIDAllF">
            <summary>Gets or sets bit 3 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct.Reserved">
            <summary>Gets or sets bits 4-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._FNA_e__Struct._bitfield" /> field. Allowed values are [0..15].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct.Present">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct.FlushBehavior">
            <summary>Gets or sets bits 1-2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct._bitfield" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct.Reserved">
            <summary>Gets or sets bits 3-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._VWC_e__Struct._bitfield" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NVSCC_e__Struct.CommandFormatInSpec">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NVSCC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NVSCC_e__Struct.Reserved">
            <summary>Gets or sets bits 1-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NVSCC_e__Struct._bitfield" /> field. Allowed values are [0..127].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct.WriteProtect">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct.UntilPowerCycle">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct.Permanent">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct.Reserved">
            <summary>Gets or sets bits 3-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._NWPC_e__Struct._bitfield" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.SGLSupported">
            <summary>Gets or sets bits 0-1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.KeyedSGLData">
            <summary>Gets or sets bit 2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.Reserved0">
            <summary>Gets or sets bits 3-15 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field. Allowed values are [0..8191].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.BitBucketDescrSupported">
            <summary>Gets or sets bit 16 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.ByteAlignedContiguousPhysicalBuffer">
            <summary>Gets or sets bit 17 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.SGLLengthLargerThanDataLength">
            <summary>Gets or sets bit 18 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.MPTRSGLDescriptor">
            <summary>Gets or sets bit 19 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.AddressFieldSGLDataBlock">
            <summary>Gets or sets bit 20 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.TransportSGLData">
            <summary>Gets or sets bit 21 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct.Reserved1">
            <summary>Gets or sets bits 22-31 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_IDENTIFY_CONTROLLER_DATA._SGLS_e__Struct._bitfield" /> field. Allowed values are [0..1023].</summary>
        </member>
        <member name="T:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES">
            <summary>Contains values that indicate the log pages that can be retrieved by the Get Log Page **NVME_ADMIN_COMMAND_GET_LOG_PAGE** Admin Command.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_ERROR_INFO">
            <summary>
            <para>The Error Information log page that contains extended error information for a command that completed with an error or reported an error that is not specific to a particular command. The information contained in the Error Information log page is defined in the [NVME_ERROR_INFO_LOG](ns-nvme-nvme_error_info_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_HEALTH_INFO">
            <summary>
            <para>The SMART / Health Information log page that contains SMART and general health information. The information contained in the SMART/Health Information log page is defined in the [NVME_HEALTH_INFO_LOG](ns-nvme-nvme_health_info_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_FIRMWARE_SLOT_INFO">
            <summary>
            <para>The Firmware Slot Information log page that describes the firmware revision stored in each supported firmware slot. The information contained in the Firmware Slot Information log page is defined in the [FIRMWARE_SLOT_INFO_LOG](ns-nvme-nvme_firmware_slot_info_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_CHANGED_NAMESPACE_LIST">
            <summary>
            <para>The Changed Namespace List log page that describes namespaces in the controller that have changed [Identify Namespace](../nvme/ns-nvme-nvme_identify_namespace_data.md) information since the last time the log page was read. The information contained in the Changed Namespace List log page is defined in the [CHANGED_NAMESPACE_LIST_LOG](ns-nvme-nvme_changed_namespace_list_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_COMMAND_EFFECTS">
            <summary>
            <para>The Commands Supported and Effects log page that describes the commands that the controller supports and the effects of those commands on the state of the NVM subsystem. The information contained in the Commands Supported and Effects log page is defined in the [NVME_COMMAND_EFFECTS_LOG](ns-nvme-nvme_command_effects_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_DEVICE_SELF_TEST">
            <summary>
            <para>The Device Self-Test log page that describes the status, completion percentage, and results of a device self-test. The information contained in the Device Self Test log page is defined in the [NVME_DEVICE_SELF_TEST_LOG](ns-nvme-nvme_device_self_test_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_TELEMETRY_HOST_INITIATED">
            <summary>
            <para>The Telemetry Host-Initiated log page that describes telemetry data from the host. The information contained in the Telemetry Host-Initiated log page is defined in the [NVME_TELEMETRY_HOST_INITIATED_LOG](ns-nvme-nvme_device_self_test_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_TELEMETRY_CTLR_INITIATED">
            <summary>The Telemetry Controller-Initiated log page that describes telemetry data from the controller.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_ENDURANCE_GROUP_INFORMATION">
            <summary>
            <para>The Endurance Group Information log page that contains information about the amount of data being read from and written to an Endurance Group. The information contained in the Endurance Group Information log page is defined in the [NVME_ENDURANCE_GROUP_LOG](ns-nvme-nvme_endurance_group_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_RESERVATION_NOTIFICATION">
            <summary>
            <para>The Reservation Notification log page that is created whenever an unmasked reservation notification occurs on any namespace that may be accessed by the controller. The information contained in the Reservation Notification log page is defined in the [NVME_RESERVATION_NOTIFICATION_LOG](ns-nvme-nvme_reservation_notification_log.md) structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ne-nvme-nvme_log_pages#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_LOG_PAGES.NVME_LOG_PAGE_SANITIZE_STATUS">
            <summary>The Sanitize Status log page that is created whenever an unmasked reservation notification occurs on any namespace that may be accessed by the controller.</summary>
        </member>
        <member name="T:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC">
            <summary>Contains fields that describe the attributes of each power state.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.MP">
            <summary>
            <para>Indicates the maximum power consumed by the NVM subsystem in this power state. The power in Watts is equal to the value in this field multiplied by the scale specified in the Max Power Scale (**MPS**) field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_power_state_desc#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved0">
            <summary>Bits 16:23 are reserved.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.MPS">
            <summary>Gets or sets bit 0 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield1" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.NOPS">
            <summary>Gets or sets bit 1 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield1" /> field.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved1">
            <summary>Gets or sets bits 2-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield1" /> field. Allowed values are [0..63].</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.ENLAT">
            <summary>Indicates the maximum entry latency in microseconds associated with entering this power state.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.EXLAT">
            <summary>Indicates the maximum exit latency in microseconds associated with exiting this power state.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.RRT">
            <summary>Gets or sets bits 0-4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield2" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved2">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield2" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.RRL">
            <summary>Gets or sets bits 0-4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield3" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved3">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield3" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.RWT">
            <summary>Gets or sets bits 0-4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield4" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved4">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield4" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.RWL">
            <summary>Gets or sets bits 0-4 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield5" /> field. Allowed values are [0..31].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved5">
            <summary>Gets or sets bits 5-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield5" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.IDLP">
            <summary>
            <para>Indicates the typical power consumed by the NVM subsystem over 30 seconds in this power state when idle (for instance, there are no pending commands, register accesses, or background processes). The measurement starts after the NVM subsystem has been idle for 10 seconds. The power in Watts is equal to the value in this field multiplied by the scale indicated in the Idle Power Scale (**IPS**) field. A value of `0000h` indicates Idle Power is not reported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_power_state_desc#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved6">
            <summary>Gets or sets bits 0-5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield6" /> field. Allowed values are [0..63].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.IPS">
            <summary>Gets or sets bits 6-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield6" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved7">
            <summary>Bits 152:159 are reserved.</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.ACTP">
            <summary>
            <para>Indicates the largest average power consumed by the NVM subsystem over a 10 second period in this power state with the workload indicated in the Active Power Workload (**APW**) field. The power in Watts is equal to the value in this field multiplied by the scale indicated in the Active Power Scale (**APS**) field. A value of `0000h` indicates Active Power is not reported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/nvme/ns-nvme-nvme_power_state_desc#members">Read more on learn.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.APW">
            <summary>Gets or sets bits 0-2 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield7" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved8">
            <summary>Gets or sets bits 3-5 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield7" /> field. Allowed values are [0..7].</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.APS">
            <summary>Gets or sets bits 6-7 in the <see cref="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC._bitfield7" /> field. Allowed values are [0..3].</summary>
        </member>
        <member name="F:Windows.Win32.Storage.Nvme.NVME_POWER_STATE_DESC.Reserved9">
            <summary>Bits 184:255 are reserved.</summary>
        </member>
        <member name="P:Windows.Win32.Storage.Nvme.__NVME_POWER_STATE_DESC_32.Length">
            <summary>The length of the inline array.</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="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(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.Void*,System.UInt32,System.Void*,System.UInt32,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(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.SetupDiGetDeviceInterfaceDetail(System.Runtime.InteropServices.SafeHandle,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*)">
            <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.__uint_2.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__uint_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="P:Windows.Win32.__uint_4.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__uint_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.__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>
