<?xml version="1.0"?>
<doc>
    <assembly>
        <name>YourPhoneAppProxy.Core</name>
    </assembly>
    <members>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Boolean">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Single">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.DictionaryStringObject">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.ListUiElementAttributesDeserializeModel">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.AccessibilityMessageDeserializeModel">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.UiElementAttributesDeserializeModel">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Int32">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Int64">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Object">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.String">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.Default">
            <summary>
            The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.GeneratedSerializerOptions">
            <summary>
            The source-generated options associated with this context.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.#ctor">
            <inheritdoc/>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.#ctor(System.Text.Json.JsonSerializerOptions)">
            <inheritdoc/>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Accessibility.AccessibilityMessageDeserializeModelContext.GetTypeInfo(System.Type)">
            <inheritdoc/>
        </member>
        <member name="F:YourPhoneAppProxy.Core.AppLaunchEntryPoint.YourPhoneMultipleApps">
            <summary>
            Any app launch that is initiated from Your Phone.
            This includes AppsList, Phone screen link, and Nav bar Phone screen launch
            Only available for devices that support Part C MultipleApps entry points.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.AppLaunchEntryPoint.YourPhoneStackUnification">
            <summary>
            Any app launch that is initiated from Your Phone.
            This includes AppsList, Phone screen link, and Nav bar Phone screen launch
            Available for devices that do not support MultipleApps, but do support phone screen apps.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Common.DelegateCommand">
            <summary>
            A framework-agnostic command implementation that wraps delegates for execution and can-execute logic.
            This command does not depend on any UI framework types and can be used in Core projects.
            Use CommandAdapter to convert this to a RelayCommand for UI binding.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.AddPreviewImage(System.String,System.Boolean,YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Adding an image preview image to drag drop, depending on isMultiple and file extension
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.AddPreviewImageFromResource(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Adding an image preview when dealing with multiple images
            </summary>
            <param name="dataObject">dataObject</param>
            <param name="telemetryFactory">telemetryFactory</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.AddPreviewImageFromExtension(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,System.String,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Add an image preview form extension (when dealing with a single file)
            </summary>
            <param name="dataObject">dataObject</param>
            <param name="extension">extension including dot ex: ".jpg"</param>
            <param name="telemetryFactory">telemetryFactory</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.SetImageToDragDropSourceHelper(System.Drawing.Bitmap,YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Set the actual shadow into the dataObject
            </summary>
            <param name="bmp">bitmap</param>
            <param name="dataObject">dataObject</param>
            <param name="telemetryFactory">telemetryFactory</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.SetDropDescription(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.DropImageType,System.String,System.String)">
            <summary>
            Sets the drop description for the drag image manager.
            </summary>
            <param name="dataObject">The DataObject to set.</param>
            <param name="type">The type of the drop image.</param>
            <param name="format">The format string for the description.</param>
            <param name="insert">The parameter for the drop description.</param>
            <remarks>
            When setting the drop description, the text can be set in two part,
            which will be rendered slightly differently to distinguish the description
            from the subject. For example, the format can be set as "Move to %1" and
            the insert as "Temp". When rendered, the "%1" in format will be replaced
            with "Temp", but "Temp" will be rendered slightly different from "Move to ".
            </remarks>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.SetDropDescription(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject,YourPhoneAppProxy.Core.Interop.DragDrop.NativeStructs.DropDescription)">
            <summary>
            Sets the drop description for the drag image manager.
            </summary>
            <param name="dataObject">The DataObject to set.</param>
            <param name="dropDescription">The drop description.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.GetDropDescription(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject)">
            <summary>
            Gets the DropDescription format data.
            </summary>
            <param name="dataObject">The DataObject.</param>
            <returns>The DropDescription, if set.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.FillFormatETC(System.String,Windows.Win32.System.Com.TYMED,Windows.Win32.System.Com.FORMATETC@)">
            <summary>
            Fills a FORMATETC structure.
            </summary>
            <param name="format">The format name.</param>
            <param name="tymed">The accepted TYMED.</param>
            <param name="formatETC">The structure to fill.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.GetIconIndex(System.String,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Get icon index from extension name
            </summary>
            <param name="extension">extension with dot ex: ".jpg"</param>
            <param name="telemetryFactory">telemetryFactory</param>
            <returns>Icon index</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.GetJumboIcon(System.Int32,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Get an icon formIImage
            </summary>
            <param name="iImage">IImage</param>
            <param name="telemetryFactory">telemetryFactory</param>
            <returns>256*256 icon</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.AllowDropDescription(System.Boolean)">
            <summary>
            Showing the drop description or not, (not yet supported)
            </summary>
            <param name="allow">bool</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.InvalidateDragImage(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject)">
            <summary>
            Invalidate the image medium
            </summary>
            <param name="dataObject">dataObject</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.GetIntPtrFromMedium(System.IntPtr)">
            <summary>
            Get the pointer from medium
            </summary>
            <param name="unionmember">medium</param>
            <returns>IntPtr</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.GetExtensionFromFileName(System.Collections.Generic.List{System.String})">
            <summary>
            Gets the extension name from a path
            </summary>
            <param name="fileNames">list of file names</param>
            <returns>".multiple" if dealing with multiple files, else the extension</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.Succeeded(System.Int32)">
            <summary>
            Returns true iff the HRESULT is a success code.
            </summary>
            <param name="hr">HRESULT to check.</param>
            <returns>True if a success code.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.DataObjectUtils.CreateDragDropHelper``1">
            <summary>
            Creates a CLSID_DragDropHelper COM object and returns the requested interface.
            Uses StrategyBasedComWrappers for RCW creation compatible with DisableRuntimeMarshalling.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.DragDropManager.DragCancel">
            <summary>
            Drag-drop operation canceled
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject">
            <summary>
            Class implementing drag/drop and clipboard support for virtual files.
            Also offers an alternate interface to the IDataObject interface.
            </summary>
            <remarks>
            Uses [GeneratedComClass] with StrategyBasedComWrappers for Native AOT compatibility.
            Source generator creates vtables at compile-time for DisableRuntimeMarshalling support.
            </remarks>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.OleAdviseNotSupported">
            <summary>
            Error Ole Advise Not Supported
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.InvalidTymed">
            <summary>
            Invalid tymed
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.InvalidFormatetc">
            <summary>
            Invalid FORMATETC structure
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.InvalidAspects">
            <summary>
            Invalid aspect(s)
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DragUsedDefaultCursors">
            <summary>
            Drag Use the default cursor
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DragCancel">
            <summary>
            Drag-drop operation canceled
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DragDropSuccess">
            <summary>
            Successful drop took place
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IsAsynchronous">
            <summary>
            Gets or sets a value indicating whether the data object can be used asynchronously.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.cfFileContents">
            <summary>
            Identifier for CFSTR_FILECONTENTS.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.cfFileDescriptor">
            <summary>
            Identifier for CFSTR_FILEDESCRIPTORW.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.cfPasteSucceeded">
            <summary>
            Identifier for CFSTR_PASTESUCCEEDED.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.cfPerformedDropEffect">
            <summary>
            Identifier for CFSTR_PERFORMEDDROPEFFECT.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.cfPreferredDropEffect">
            <summary>
            Identifier for CFSTR_PREFERREDDROPEFFECT.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.dataObjects">
            <summary>
            In-order list of registered data objects.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.inOperation">
            <summary>
            Tracks whether an asynchronous operation is ongoing.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.startAction">
            <summary>
            Stores the user-specified start action.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.endAction">
            <summary>
            Stores the user-specified end action.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject"/> class.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.#ctor(System.Action{YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject},System.Action{YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject})">
            <summary>
            Initializes a new instance of the <see cref="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject"/> class.
            </summary>
            <param name="startAction">Optional action to run at the start of the data transfer.</param>
            <param name="endAction">Optional action to run at the end of the data transfer.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#DAdvise(Windows.Win32.System.Com.FORMATETC*,System.UInt32,System.IntPtr,System.UInt32@)">
            <summary>
            Creates a connection between a data object and an advisory sink.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#DUnadvise(System.UInt32)">
            <summary>
            Destroys a notification connection that had been previously established.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#EnumDAdvise(System.IntPtr@)">
            <summary>
            Creates an object that can be used to enumerate the current advisory connections.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#EnumFormatEtc(System.UInt32,YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IEnumFORMATETC@)">
            <summary>
            Creates an object for enumerating the FORMATETC structures for a data object.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#GetCanonicalFormatEtc(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.FORMATETC*)">
            <summary>
            Provides a standard FORMATETC structure that is logically equivalent to a more complex structure.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#GetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>
            Obtains data from a source data object.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#GetDataHere(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>
            Obtains data from a source data object (alternative form).
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#QueryGetData(Windows.Win32.System.Com.FORMATETC*)">
            <summary>
            Determines whether the data object is capable of rendering the data described in the FORMATETC structure.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IDataObject#SetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*,System.Int32)">
            <summary>
            Transfers data to the object that implements this method.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.SetData(System.Int16,System.Collections.Generic.IEnumerable{System.Byte})">
            <summary>
            Provides data for the specified data format (HGLOBAL).
            </summary>
            <param name="dataFormat">Data format.</param>
            <param name="data">Sequence of data.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.SetData(System.Int16,System.Int32,System.Action{YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.StreamResult})">
            <summary>
            Provides data for the specified data format and index (ISTREAM).
            </summary>
            <param name="dataFormat">Data format.</param>
            <param name="index">Index of data.</param>
            <param name="streamData">Action generating the data.</param>
            <remarks>
            Uses Stream instead of IEnumerable(T) because Stream is more likely
            to be natural for the expected scenarios.
            </remarks>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.SetData(System.Int16,System.Boolean,System.Collections.Generic.KeyValuePair{Windows.Win32.System.Com.FORMATETC,Windows.Win32.System.Com.STGMEDIUM})">
            <summary>
            SetData for objects that don't require delayed rendering
            </summary>
            <param name="dataFormat">data format</param>
            <param name="release">should we release medium</param>
            <param name="pair">The pair.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.SetData(System.Collections.Generic.IEnumerable{YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor})">
            <summary>
            Provides data for the specified data format (FILEGROUPDESCRIPTOR/FILEDESCRIPTOR)
            </summary>
            <param name="fileDescriptors">Collection of virtual files.</param>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.PasteSucceeded">
            <summary>
            Gets or sets the CFSTR_PASTESUCCEEDED value for the object.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.PerformedDropEffect">
            <summary>
            Gets or sets the CFSTR_PERFORMEDDROPEFFECT value for the object.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.PreferredDropEffect">
            <summary>
            Gets or sets the CFSTR_PREFERREDDROPEFFECT value for the object.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.GetDropEffect(System.Int16)">
            <summary>
            Gets the DROPEFFECT value (if any) previously set on the object.
            </summary>
            <param name="format">Clipboard format.</param>
            <returns>DROPEFFECT value or null.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IAsyncOperation#SetAsyncMode(System.Int32)">
            <summary>
            Called by a drop source to specify whether the data object supports asynchronous data extraction.
            </summary>
            <param name="fDoOpAsync">A Boolean value that is set to VARIANT_TRUE to indicate that an asynchronous operation is supported, or VARIANT_FALSE otherwise.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IAsyncOperation#GetAsyncMode(System.Int32@)">
            <summary>
            Called by a drop target to determine whether the data object supports asynchronous data extraction.
            </summary>
            <param name="pfIsOpAsync">A Boolean value that is set to VARIANT_TRUE to indicate that an asynchronous operation is supported, or VARIANT_FALSE otherwise.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IAsyncOperation#StartOperation(System.IntPtr)">
            <summary>
            Called by a drop target to indicate that asynchronous data extraction is starting.
            </summary>
            <param name="pbcReserved">Reserved. Set this value to NULL.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IAsyncOperation#InOperation(System.Int32@)">
            <summary>
            Called by the drop source to determine whether the target is extracting data asynchronously.
            </summary>
            <param name="pfInAsyncOp">Set to VARIANT_TRUE if data extraction is being handled asynchronously, or VARIANT_FALSE otherwise.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.YourPhoneAppProxy#Core#Interop#DragDrop#NativeInterfaces#IAsyncOperation#EndOperation(System.Int32,System.IntPtr,System.UInt32)">
            <summary>
            Notifies the data object that that asynchronous data extraction has ended.
            </summary>
            <param name="hResult">An HRESULT value that indicates the outcome of the data extraction. Set to S_OK if successful, or a COM error code otherwise.</param>
            <param name="pbcReserved">Reserved. Set to NULL.</param>
            <param name="dwEffects">A DROPEFFECT value that indicates the result of an optimized move. This should be the same value that would be passed to the data object as a CFSTR_PERFORMEDDROPEFFECT format with a normal data extraction operation.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Succeeded(System.Int32)">
            <summary>
            Returns true iff the HRESULT is a success code.
            </summary>
            <param name="hr">HRESULT to check.</param>
            <returns>True iff a success code.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.StructureBytes``1(``0)">
            <summary>
            Returns the in-memory representation of an interop structure.
            </summary>
            <typeparam name="T">The type of structure to convert.</typeparam>
            <param name="source">Structure to return.</param>
            <returns>In-memory representation of structure.</returns>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor">
            <summary>
            Class representing a virtual file for use by drag/drop or the clipboard.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor.Name">
            <summary>
            Gets or sets the name of the file.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor.Length">
            <summary>
            Gets or sets the (optional) length of the file.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor.ChangeTimeUtc">
            <summary>
            Gets or sets the (optional) change time of the file.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.FileDescriptor.StreamContents">
            <summary>
            Gets or sets an Action that returns the contents of the file.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.StreamResult">
            <summary>
            Class representing the result of writting the Stream
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DataObject">
            <summary>
            Class representing the result of a SetData call.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DataObject.FORMATETC">
            <summary>
            FORMATETC structure for the data.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DataObject.GetData">
            <summary>
            Func returning the data as an IntPtr and an HRESULT success code.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DataObject.STGMedium">
            <summary>
            Explecit Medium, when ignoring delayed rendering
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DataObject.ReleaseMedium">
            <summary>
            Should we release medium
            </summary>
        </member>
        <!-- Badly formed XML comment ignored for member "T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Tuple`2" -->
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Tuple`2.Item1">
            <summary>
            Gets the value of the current Tuple(T1, T2) object's first component.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Tuple`2.Item2">
            <summary>
            Gets the value of the current Tuple(T1, T2) object's second component.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Tuple`2.#ctor(`0,`1)">
            <summary>
            Initializes a new instance of the <see cref="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.Tuple`2"/> class.
            Initializes a new instance of the Tuple(T1, T2) class.
            </summary>
            <param name="item1">The value of the tuple's first component.</param>
            <param name="item2">The value of the tuple's second component.</param>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper">
            <summary>
            Simple class that exposes a write-only IStream as a Stream.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.iStream">
            <summary>
            IStream COM interface.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.#ctor(YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IStream)">
            <summary>
            Initializes a new instance of the <see cref="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper"/> class.
            </summary>
            <param name="iStream">IStream COM interface.</param>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.CanRead">
            <summary>
            Gets a value indicating whether the current stream supports reading.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.CanSeek">
            <summary>
            Gets a value indicating whether the current stream supports seeking.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.CanWrite">
            <summary>
            Gets a value indicating whether the current stream supports writing.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Flush">
            <summary>
            Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Length">
            <summary>
            Gets the length in bytes of the stream.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Position">
            <summary>
            Gets or sets the position within the current stream.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
            </summary>
            <param name="buffer">An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.</param>
            <param name="offset">The zero-based byte offset in buffer at which to begin storing the data read from the current stream.</param>
            <param name="count">The maximum number of bytes to be read from the current stream.</param>
            <returns>The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Sets the position within the current stream.
            </summary>
            <param name="offset">A byte offset relative to the origin parameter.</param>
            <param name="origin">A value of type SeekOrigin indicating the reference point used to obtain the new position.</param>
            <returns>The new position within the current stream.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.SetLength(System.Int64)">
            <summary>
            Sets the length of the current stream.
            </summary>
            <param name="value">The desired length of the current stream in bytes.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.IStreamWrapper.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
            </summary>
            <param name="buffer">An array of bytes. This method copies count bytes from buffer to the current stream.</param>
            <param name="offset">The zero-based byte offset in buffer at which to begin copying bytes to the current stream.</param>
            <param name="count">The number of bytes to be written to the current stream.</param>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DoDragDrop(YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject,Windows.Win32.System.Ole.DROPEFFECT,YourPhoneAppProxy.Telemetry.ITelemetryFactory)">
            <summary>
            Initiates a drag-and-drop operation.
            </summary>
            <param name="dataObject">A data object that contains the data being dragged.</param>
            <param name="allowedEffects">One of the DROPEFFECT values that specifies permitted effects of the drag-and-drop operation.</param>
            <param name="telemetryFactory">telemetryFactory</param>
            <returns>One of the DROPEFFECT values that specifies the final effect that was performed during the drag-and-drop operation.</returns>
            <remarks>
            Call this method instead of System.Windows.DragDrop.DoDragDrop because this method handles IDataObject better.
            </remarks>
        </member>
        <member name="T:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DropSource">
            <summary>
            Contains the methods for generating visual feedback to the end user and for canceling or completing the drag-and-drop operation.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DropSource.QueryContinueDrag(System.Int32,System.UInt32)">
            <summary>
            Determines whether a drag-and-drop operation should continue.
            </summary>
            <param name="fEscapePressed">Indicates whether the Esc key has been pressed since the previous call to QueryContinueDrag or to DoDragDrop if this is the first call to QueryContinueDrag. A TRUE value indicates the end user has pressed the escape key; a FALSE value indicates it has not been pressed.</param>
            <param name="grfKeyState">The current state of the keyboard modifier keys on the keyboard. Possible values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.</param>
            <returns>This method returns S_OK/DRAGDROP_S_DROP/DRAGDROP_S_CANCEL on success.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.DragDrop.VirtualFileDataObject.DropSource.GiveFeedback(System.UInt32)">
            <summary>
            Gives visual feedback to an end user during a drag-and-drop operation.
            </summary>
            <param name="dwEffect">The DROPEFFECT value returned by the most recent call to IDropTarget::DragEnter, IDropTarget::DragOver, or IDropTarget::DragLeave. </param>
            <returns>This method returns S_OK on success.</returns>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Input.ExtendedKeyHelper">
            <summary>
            Helper class containing extended key definitions that can be used across the Core project.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.Input.ExtendedKeyHelper.ExtendedKeySet">
            <summary>
            Gets a set of keys that trigger the isExtended flag.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.IKeyboardStateManager.IsAltGrOnCurrentKeyboard">
            <summary>
            Does the current keyboard contain the AltGr key
            </summary>
            <returns>bool</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.IKeyboardStateManager.IsLanguageIME">
            <summary>
            Is the current system language an IME language?
            </summary>
            <returns>bool</returns>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Input.InputHelper.IsMouseDown">
            <summary>
            Indicates if the mouse is being pressed during drag and drop. This is checked when dragging over some windows that request data on drag over.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.Input.InputHelper.ExtendedKeySet">
            <summary>
            Gets a set of keys that trigger the isExtended flag
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.InputHelper.TryGetPointerEventArgs(YourPhoneAppProxy.Core.Input.IWindowProperties,System.UIntPtr,System.UInt32,YourPhoneAppProxy.Core.Input.PointerEventArgs@)">
            <summary>
            Try to get a PointerEventArgs
            </summary>
            <param name="windowProperties">Current window properties</param>
            <param name="type">wParam from WndProc</param>
            <param name="msg">WindowMessages</param>
            <param name="pointerEventArgs">out pointerEventArgs</param>
            <returns>success/failure</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.InputHelper.CreateMouseArgsFromWinUI(YourPhoneAppProxy.Core.Input.IWindowProperties,System.UInt32,System.Numerics.Vector2,Windows.UI.Input.PointerUpdateKind,System.Int32,System.Int32)">
            <summary>
            Creates a mouse PointerEventArgs directly from WinUI event data.
            No Win32 GetPointerInfo call is made; the update kind and position are provided by the caller.
            The wheel deltas are adjusted for the system scroll-lines setting.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.InputHelper.CreateTouchArgsFromWinUI(YourPhoneAppProxy.Core.Input.IWindowProperties,System.UInt32,System.Numerics.Vector2,System.Boolean,System.Single,System.Single,System.Int32,System.Int32)">
            <summary>
            Creates a touch PointerEventArgs directly from WinUI event data.
            No Win32 GetPointerTouchInfo call is made.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.InputHelper.CreatePenArgsFromWinUI(YourPhoneAppProxy.Core.Input.IWindowProperties,System.UInt32,System.Numerics.Vector2,System.Boolean,System.Boolean,System.Single,System.Single)">
            <summary>
            Creates a pen PointerEventArgs directly from WinUI event data.
            No Win32 GetPointerPenInfo call is made.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Input.KeyboardEventArgs">
            <summary>
            Base class for keyboard event arguments that works across both WPF and WinUI3.
            This class contains the essential keyboard event information needed for input handling.
            This class wraps System.Windows.Input.KeyEventArgs for WPF.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Input.Key">
            <summary>
            Represents the key enumeration for keyboard inputs.
            These are common key values used across different UI frameworks.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Input.KeyStates">
            <summary>
            Represents the different key states.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Input.ModifierKeys">
            <summary>
            Represents modifier keys that can be pressed along with other keys.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.PointerInputService.GetFreeFingerId">
            <summary>
            Gets the first free index in the map
            </summary>
            <returns>int</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.PointerInputService.TryGetFingerId(System.UInt32,System.Int32@)">
            <summary>
            Tries to retrieve the fingerId associated with the Pointer Id
            </summary>
            <param name="windowsFingerId">Pointer Id</param>
            <param name="fingerId">out fingerId result</param>
            <returns>success / failure</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.PointerInputService.TryRemoveFinger(System.UInt32,System.Int32@)">
            <summary>
            Tries to remove the fingerId from the finger map
            </summary>
            <param name="windowsFingerId">PointerId</param>
            <param name="fingerId">out fingerId removed</param>
            <returns>success / failure</returns>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject">
            <summary>
            Source-generated IDataObject COM interface for Native AOT and DisableRuntimeMarshalling.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IAsyncOperation">
            <summary>
            Definition of the IAsyncOperation COM interface.
            </summary>
            <remarks>
            Pseudo-public because VirtualFileDataObject implements it.
            </remarks>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDragSourceHelper.InitializeFromBitmap(Windows.Win32.UI.Shell.SHDRAGIMAGE*,YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDataObject)">
            <summary>
            Initializes the drag-image manager for a control with a bitmap.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IDragSourceHelper.InitializeFromWindow(System.IntPtr,System.Drawing.Point@,System.IntPtr)">
            <summary>
            Initializes the drag-image manager for a control with a window.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeInterfaces.IStream">
            <summary>
            IStream interface for reading and writing data to stream objects.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeMethods">
            <summary>
            Native methods for drag and drop functionality.
            Refactored to use CsWin32-generated APIs where possible.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Interop.DragDrop.NativeMethods.GetComPointerForRCW(System.Object)">
            <summary>
            Gets the COM interface pointer from an RCW created by UniqueComInterfaceMarshaller.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeStructs.FILETIME">
            <summary>
            Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Interop.DragDrop.NativeStructs.DropDescriptionNative">
            <summary>
            Native-compatible DropDescription struct using fixed char buffers.
            Use this when DisableRuntimeMarshallingAttribute is applied.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Interop.SpiUtils.WindowArranging">
            <summary>
            Window arrangement reduces the number of mouse, pen, or touch interactions
            needed to move and size top-level windows by simplifying the default
            behavior of a window when it is dragged or sized
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Interop.SpiUtils.SnapSizing">
            <summary>
            Allow a window to be vertically maximized when it is sized to the top
            or bottom of the monitor
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Interop.SpiUtils.DockMoving">
            <summary>
            Allow a window to be docked when it is moved to the top, left, or right
            docking targets on a monitor or monitor array
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Interop.SpiUtils.DragFromMaximize">
            <summary>
            Allow a maximized window to be restored when its caption bar is dragged
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Lifecycle.AppLifecycleCore.CleanUpBeforeShutdownAsync(YourPhoneAppProxy.Core.ExitReason,System.Boolean)">
            <summary>
            Used to shutdown app and call Current.Shutdown at the end to avoid any time limits when closing the app
            </summary>
            <param name="exitReason">Exit reason</param>
            <param name="callShutdown">If should call Application.Shutdown after cleanup. Default value is true.</param>
            <returns>Task</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Lifecycle.AppLifecycleCore.CurrentDomain_UnhandledException(System.Object,System.UnhandledExceptionEventArgs)">
            <summary>
            For background threads unhandled exceptions
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Theme.AppTheme">
            <summary>
            Mapping for app theme represented at Shell.MMX\apps\yourphone\uap\YourPhone\YourPhone.Contracts.Shell\AppTheme.idl
            Keep in sync if possible
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.ActionExtensions.LogAndContinueInCurrentContext(YourPhoneAppProxy.Telemetry.ITelemetryFactory,System.Action,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an Action logs and continues on failures.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.StringExtensions.AppendIfNotNullOrEmpty(System.String,System.String,System.String,System.String)">
            <summary>
            Helper extension method for building out logging strings. This method will only append the new string if it is not null or empty.
            Else it will return the original string. Has optional parameters for a label and a separator as well.
            (e.g. AppendIfNotNullOrEmpty("workflow: permission", "blob", "channel") returns "workflow: permission, channel: blob")
            </summary>
            <param name="original">the original string as extended</param>
            <param name="newString">the string to be appended if not null or empty</param>
            <param name="label">the label that will come before the appended string, default is null which would be omitted</param>
            <param name="separator">the separator used between appending, default is ","</param>
            <returns>the original string plus the appended string with optional label if not null or empty, otherwise the original string</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndContinueOnFaulted(System.Threading.Tasks.Task,YourPhoneAppProxy.Telemetry.ITelemetryFactory,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed logs and continues on failures.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndContinueOnFaulted(System.Threading.Tasks.Task,YourPhoneAppProxy.Telemetry.ITelemetryFactory,YourPhoneAppProxy.Telemetry.IHealthActivity,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed logs and continues on failures.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndContinueOnFaulted(System.Threading.Tasks.Task{System.Threading.Tasks.Task},YourPhoneAppProxy.Telemetry.ITelemetryFactory,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed logs and continues on failures
            </summary>
            <remarks>
            When using await in a ContinueWith, the return is a Task{Task} and it needs to be unwrapped.
            </remarks>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndFailFastOnFaulted(System.Threading.Tasks.Task,YourPhoneAppProxy.Telemetry.ITelemetryFactory,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed FailsFast on failures
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndFailFastOnFaulted(System.Threading.Tasks.Task,YourPhoneAppProxy.Telemetry.ITelemetryFactory,YourPhoneAppProxy.Telemetry.IHealthActivity,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed FailsFast on failures and stops the provided health activity
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndFailFastOnFaulted(System.Threading.Tasks.Task{System.Threading.Tasks.Task},YourPhoneAppProxy.Telemetry.ITelemetryFactory,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed FailsFast on failures
            </summary>
            <remarks>
            When using await in a ContinueWith, the return is a Task{Task} and it needs to be unwrapped.
            </remarks>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Utils.TaskExtensions.LogAndFailFastOnFaulted(System.Threading.Tasks.Task{System.Threading.Tasks.Task},YourPhoneAppProxy.Telemetry.ITelemetryFactory,YourPhoneAppProxy.Telemetry.IHealthActivity,System.String,System.String,System.String,System.Int32)">
            <summary>
            Ensures that an async operation that is not await'ed FailsFast on failures and stops the provided health activity
            </summary>
            <remarks>
            When using await in a ContinueWith, the return is a Task{Task} and it needs to be unwrapped.
            </remarks>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs">
            <summary>
            Carries pre-computed display transform state for the SwapChainPanel path,
            mirroring the DCompositionHelper rotate * translate * scale matrix chain.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.Angle">
            <summary>Rotation angle in degrees (0, -90, -180, -270).</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.TranslateXPixels">
            <summary>Pre-scale X translation in physical pixels.</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.TranslateYPixels">
            <summary>Pre-scale Y translation in physical pixels.</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.ScaleX">
            <summary>Horizontal scale factor (container width px / effective video width px).</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.ScaleY">
            <summary>Vertical scale factor (container height px / effective video height px).</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.NativeVideoWidth">
            <summary>Native (pre-rotation) video width in physical pixels.</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Core.Video.VideoTransformEventArgs.NativeVideoHeight">
            <summary>Native (pre-rotation) video height in physical pixels.</summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Boolean">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Single">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ListClipDataItem">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ListInt64">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ListString">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Stream">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ScreenLayout">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AppLaunchType">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ClipDataItem">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ClipDataItems">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragCancelReason">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ExitReason">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ScreenLayoutChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.PermissionStatus">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.NullablePermissionStatus">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AppProxyVisualState">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ClosedVisualStateArgs">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ErrorVisualStateArgs">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.LockedVisualStateArgs">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.NearbyConnectionVisualStateArgs">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.RestartReason">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.RestartVisualStateArgs">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AppTheme">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AccessibilityEventMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ActionType">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ActivateAppMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AppThemeChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AudioPermissionChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.AudioVolumeChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ShowAudioCaptureNotAllowedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ShowAudioTitlebarButtonMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.BringToForegroundMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ChannelState">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ChannelStatusMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ChannelType">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.CloseAppMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ClosingMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ConnectSessionMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DeviceFriendlyNameMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragCancelMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragClipDataMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragCompleteMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragDropPcMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragRequestDataIdMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragRequestOwnershipMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragStartPcMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DragStartPhoneMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.HeartbeatMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.InputKeyUpdateMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.InputPointerUpdateMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.KeyPressFlag">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.PointerUpdateType">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.InvokeActionMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.LaunchAppMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.LaunchCustomIntentMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.LaunchInPreProcessMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.NearbyConnectionPinCodeMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SaveLastNotificationCountMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.OrientationType">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.RelaunchAllAppsMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.RequestCloseMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ResumeAppMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SessionConnectedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SetVisualStateMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.ShowWindowMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SwapSessionAttributesMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SwapChainChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.TargetDeviceSizeChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.UpdateAppHandoffContextMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DevicePostureChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.DeviceResolutionChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.GetVideoChannelStatusMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.NavigationChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.OrientationChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.RequestScreenLayoutMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.SaveLastWindowPositionMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.VideoChannelStatusMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.VideoSizeChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.VideoStartMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.WindowOptimizedStateChangedMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.WindowFocusableStateMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.WindowShowingMessage">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Int32">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Int64">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.String">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.UInt32">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.Default">
            <summary>
            The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.GeneratedSerializerOptions">
            <summary>
            The source-generated options associated with this context.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.#ctor">
            <inheritdoc/>
        </member>
        <member name="M:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.#ctor(System.Text.Json.JsonSerializerOptions)">
            <inheritdoc/>
        </member>
        <member name="M:YourPhoneAppProxy.Messages.JsonMessageSerializerContext.GetTypeInfo(System.Type)">
            <inheritdoc/>
        </member>
        <member name="T:Windows.Win32.System.Com.BIND_OPTS">
            <summary>Contains parameters used during a moniker-binding operation.</summary>
            <remarks>
            <para>A <b>BIND_OPTS</b> structure is stored in a bind context; the same bind context is used by each component of a composite moniker during binding, allowing the same parameters to be passed to all components of a composite moniker. See <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> for more information about bind contexts. Moniker clients (use a moniker to acquire an interface pointer to an object) typically do not need to specify values for the members of this structure. The <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createbindctx">CreateBindCtx</a> function creates a bind context with the bind options set to default values that are suitable for most situations; the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-bindmoniker">BindMoniker</a> function does the same thing when creating a bind context for use in binding a moniker. If you want to modify the values of these bind options, you can do so by passing a <b>BIND_OPTS</b> structure to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-setbindoptions">IBindCtx::SetBindOptions</a> method. Moniker implementers can pass a <b>BIND_OPTS</b> structure to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-getbindoptions">IBindCtx::GetBindOptions</a> method to retrieve the values of these bind options.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-bind_opts#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.BIND_OPTS.cbStruct">
            <summary>The size of this structure, in bytes.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.BIND_OPTS.grfFlags">
            <summary>Flags that control aspects of moniker binding operations. This value is any combination of the bit flags in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-bind_flags">BIND_FLAGS</a> enumeration. The <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createbindctx">CreateBindCtx</a> function initializes this member to zero.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.BIND_OPTS.grfMode">
            <summary>Flags that should be used when opening the file that contains the object identified by the moniker. Possible values  are the <a href="https://docs.microsoft.com/windows/desktop/Stg/stgm-constants">STGM constants</a>. The binding operation uses these flags in the call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersistfile-load">IPersistFile::Load</a> when loading the file. If the object is already running, these flags are ignored by the binding operation. The <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createbindctx">CreateBindCtx</a> function initializes this field to STGM_READWRITE.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.BIND_OPTS.dwTickCountDeadline">
            <summary>
            <para>The clock time by which the caller would like the binding operation to be completed, in milliseconds. This member lets the caller limit the execution time of an operation when speed is of primary importance. A value of zero indicates that there is no deadline. Callers most often use this capability when calling the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-gettimeoflastchange">IMoniker::GetTimeOfLastChange</a> method, though it can be usefully applied to other operations as well. The <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createbindctx">CreateBindCtx</a> function initializes this field to zero. Typical deadlines allow for a few hundred milliseconds of execution. This deadline is a recommendation, not a requirement; however, operations that exceed their deadline by a large amount may cause delays for the end user. Each moniker implementation should try to complete its operation by the deadline, or fail with the error MK_E_EXCEEDEDDEADLINE. If a binding operation exceeds its deadline because one or more objects that it needs are not running, the moniker implementation should register the objects responsible in the bind context using the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-registerobjectparam">IBindCtx::RegisterObjectParam</a>. The objects should be registered under the parameter names "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2", and so on. If the caller later finds the object in the running object table, the caller can retry the binding operation. The <a href="https://docs.microsoft.com/windows/desktop/api/sysinfoapi/nf-sysinfoapi-gettickcount">GetTickCount</a> function indicates the number of milliseconds since system startup, and wraps back to zero after 2^31 milliseconds. Consequently, callers should be careful not to inadvertently pass a zero value (which indicates no deadline), and moniker implementations should be aware of clock wrapping problems.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-bind_opts#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Com.CLSCTX">
            <summary>Values that are used in activation calls to indicate the execution contexts in which an object is to be run.</summary>
            <remarks>
            <para>Values from the <b>CLSCTX</b> enumeration are used in activation calls (<a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cocreateinstance">CoCreateInstance</a>, <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cocreateinstanceex">CoCreateInstanceEx</a>, <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cogetclassobject">CoGetClassObject</a>, and so on) to indicate the preferred execution contexts (in-process, local, or remote) in which an object is to be run. They are also used in calls to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coregisterclassobject">CoRegisterClassObject</a> to indicate the set of execution contexts in which a class object is to be made available for requests to construct instances (<b>IClassFactory::CreateInstance</b>). To indicate that more than one context is acceptable, you can combine multiple values with Boolean ORs. The contexts are tried in the order in which they are listed.</para>
            <para>Given a set of <b>CLSCTX</b> flags, the execution context to be used depends on the availability of registered class codes and other parameters according to the following algorithm.</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_INPROC_SERVER">
            <summary>The code that creates and manages objects of this class is a DLL that runs in the same process as the caller of the function specifying the class context.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_INPROC_HANDLER">
            <summary>The code that manages objects of this class is an in-process handler. This is a DLL that runs in the client process and implements client-side structures of this class when instances of the class are accessed remotely.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_LOCAL_SERVER">
            <summary>The EXE code that creates and manages objects of this class runs on same machine but is loaded in a separate process space.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_INPROC_SERVER16">
            <summary>Obsolete.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_REMOTE_SERVER">
            <summary>A remote context. The <a href="https://docs.microsoft.com/windows/desktop/com/localserver32">LocalServer32</a> or <a href="https://docs.microsoft.com/windows/desktop/com/localservice">LocalService</a> code that creates and manages objects of this class is run on a different computer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_INPROC_HANDLER16">
            <summary>Obsolete.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED1">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED2">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED3">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED4">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_NO_CODE_DOWNLOAD">
            <summary>Disables the downloading of code from the directory service or the Internet. This flag cannot be set at the same time as CLSCTX_ENABLE_CODE_DOWNLOAD.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED5">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_NO_CUSTOM_MARSHAL">
            <summary>Specify if you want the activation to fail if it uses custom marshalling.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ENABLE_CODE_DOWNLOAD">
            <summary>Enables the downloading of code from the directory service or the Internet. This flag cannot be set at the same time as CLSCTX_NO_CODE_DOWNLOAD.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_NO_FAILURE_LOG">
            <summary>
            <para>The CLSCTX_NO_FAILURE_LOG can be used to override the logging of failures in <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cocreateinstanceex">CoCreateInstanceEx</a>. If the ActivationFailureLoggingLevel is created, the following values can determine the status of event logging: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_DISABLE_AAA">
            <summary>
            <para>Disables activate-as-activator (AAA) activations for this activation only. This flag overrides the setting of the EOAC_DISABLE_AAA flag from the EOLE_AUTHENTICATION_CAPABILITIES enumeration. This flag cannot be set at the same time as CLSCTX_ENABLE_AAA. Any activation where a server process would be launched under the caller's identity is known as an activate-as-activator (AAA) activation. Disabling AAA activations allows an application that runs under a privileged account (such as LocalSystem) to help prevent its identity from being used to launch untrusted components. Library applications that use activation calls should always set this flag during those calls. This helps prevent the library application from being used in an escalation-of-privilege security attack. This is the only way to disable AAA activations in a library application because the EOAC_DISABLE_AAA flag from the EOLE_AUTHENTICATION_CAPABILITIES enumeration is applied only to the server process and not to the library application. <b>Windows 2000:  </b>This flag is not supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ENABLE_AAA">
            <summary>
            <para>Enables activate-as-activator (AAA) activations for this activation only. This flag overrides the setting of the EOAC_DISABLE_AAA flag from the EOLE_AUTHENTICATION_CAPABILITIES enumeration. This flag cannot be set at the same time as CLSCTX_DISABLE_AAA. Any activation where a server process would be launched under the caller's identity is known as an activate-as-activator (AAA) activation. Enabling this flag allows an application to transfer its identity to an activated component. <b>Windows 2000:  </b>This flag is not supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_FROM_DEFAULT_CONTEXT">
            <summary>Begin this activation from the default context of the current apartment.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ACTIVATE_X86_SERVER">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ACTIVATE_32_BIT_SERVER">
            <summary>Activate or connect to a 32-bit version of the server; fail if one is not registered.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ACTIVATE_64_BIT_SERVER">
            <summary>Activate or connect to a 64 bit version of the server; fail if one is not registered.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ENABLE_CLOAKING">
            <summary>
            <para>When this flag is specified, COM uses the impersonation token of the thread, if one is present, for the activation request made by the thread. When this flag is not specified or if the thread does not have an impersonation token, COM uses the process token of the thread's process for the activation request made by the thread.</para>
            <para><b>Windows Vista or later:  </b>This flag is supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_APPCONTAINER">
            <summary>
            <para>Indicates activation is for an app container.</para>
            <para><div class="alert"><b>Note</b>  This flag is reserved for internal use and is not intended to be used directly from your code.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ACTIVATE_AAA_AS_IU">
            <summary>
            <para>Specify this flag for Interactive User activation behavior for As-Activator servers. A strongly named Medium IL Windows Store app can use this flag to launch an "As Activator" COM server without a strong name. Also, you can use this flag to bind to a running instance of the COM server that's launched by a desktop application. The client must be Medium IL, it must be strongly named, which means that it has a SysAppID in the client token, it can't be in session 0,  and it must have the same user as the session ID's user in the client token. If  the server is out-of-process and "As Activator", it launches the server with the token of the client token's session user. This token won't be strongly named. If the server is out-of-process and RunAs "Interactive User", this flag has no effect. If the server is out-of-process and is any other RunAs type, the activation fails. This flag has no effect for in-process servers. Off-machine activations fail when they use this flag.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_RESERVED6">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_ACTIVATE_ARM32_SERVER">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CLSCTX.CLSCTX_PS_DLL">
            <summary>
            <para>Used for loading Proxy/Stub DLLs.</para>
            <para><div class="alert"><b>Note</b>  This flag is reserved for internal use and is not intended to be used directly from your code.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Com.DVTARGETDEVICE">
            <summary>Specifies information about the target device for which data is being composed. DVTARGETDEVICE contains enough information about a Windows target device so a handle to a device context (HDC) can be created using the CreateDC function.</summary>
            <remarks>Some OLE 1 client applications incorrectly construct target devices by allocating too few bytes in the <a href="https://docs.microsoft.com/windows/win32/api/wingdi/ns-wingdi-devmodea">DEVMODE</a> structure for the <b>DVTARGETDEVICE</b>. They typically only supply the number of bytes in the <b>dmSize</b> member of <b>DEVMODE</b>. The number of bytes to be allocated should be the sum of <b>dmSize</b> + <b>dmDriverExtra</b>. When a call is made to the <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-createdca">CreateDC</a> function with an incorrect target device, the printer driver tries to access the additional bytes and unpredictable results can occur. To help protect against a crash and make the additional bytes available, OLE pads the size of OLE 2 target devices created from OLE 1 target devices.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdSize">
            <summary>The size, in bytes, of the <b>DVTARGETDEVICE</b> structure. The initial size is included so the structure can be copied more easily.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdDriverNameOffset">
            <summary>The offset, in bytes, from the beginning of the structure to the device driver name, which is stored as a NULL-terminated string in the <b>tdData</b> buffer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdDeviceNameOffset">
            <summary>The offset, in bytes, from the beginning of the structure to the device name, which is stored as a NULL-terminated string in the <b>tdData</b> buffer. This value can be zero to indicate no device name.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdPortNameOffset">
            <summary>The offset, in bytes, from the beginning of the structure to the port name, which is stored as a NULL-terminated string in the <b>tdData</b> buffer. This value can be zero to indicate no port name.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdExtDevmodeOffset">
            <summary>The offset, in bytes, from the beginning of the structure to the <a href="https://docs.microsoft.com/windows/win32/api/wingdi/ns-wingdi-devmodea">DEVMODE</a> structure retrieved by calling <a href="https://docs.microsoft.com/windows/desktop/printdocs/documentproperties">DocumentProperties</a>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DVTARGETDEVICE.tdData">
            <summary>An array of bytes containing data for the target device. It is not necessary to include empty strings in <b>tdData</b> (for names where the offset value is zero).</summary>
        </member>
        <member name="M:Windows.Win32.System.Com.DVTARGETDEVICE.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.Com.FORMATETC">
            <summary>Represents a generalized clipboard format.</summary>
            <remarks>The <b>FORMATETC</b> structure is used by methods in the data transfer and presentation interfaces as a parameter specifying the data being transferred. For example, the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a> method uses the <b>FORMATETC</b> structure to indicate exactly what kind of data the caller is requesting.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.FORMATETC.cfFormat">
            <summary>
            <para>The clipboard format of interest. There are three types of formats recognized by OLE:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-formatetc#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FORMATETC.ptd">
            <summary>A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-dvtargetdevice">DVTARGETDEVICE</a> structure containing information about the target device for which the data is being composed. A <b>NULL</b> value is used whenever the specified data format is independent of the target device or when the caller doesn't care what device is used. In the latter case, if the data requires a target device, the object should pick an appropriate default device (often the display for visual components). Data obtained from an object with a <b>NULL</b> target device, such as most metafiles, is independent of the target device. The resulting data is usually the same as it would be if the user chose the <b>Save As</b> command from the <b>File</b> menu and selected an interchange format.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FORMATETC.dwAspect">
            <summary>Indicates how much detail should be contained in the rendering. This parameter should be one of the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-dvaspect">DVASPECT</a> enumeration values. A single clipboard format can support multiple aspects or views of the object. Most data and presentation transfer and caching methods pass aspect information. For example, a caller might request an object's iconic picture, using the metafile clipboard format to retrieve it. Note that only one <b>DVASPECT</b> value can be used in <b>dwAspect</b>. That is, <b>dwAspect</b> cannot be the result of a Boolean OR operation on several <b>DVASPECT</b> values.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FORMATETC.lindex">
            <summary>Part of the aspect when the data must be split across page boundaries. The most common value is -1, which identifies all of the data. For the aspects DVASPECT_THUMBNAIL and DVASPECT_ICON, lindex is ignored.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FORMATETC.tymed">
            <summary>One of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-tymed">TYMED</a> enumeration constants which indicate the type of storage medium used to transfer the object's data. Data can be transferred using whatever medium makes sense for the object. For example, data can be passed using global memory, a disk file, or structured storage objects. For more information, see the <b>TYMED</b> enumeration.</summary>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IAdviseSink.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnDataChange(Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IAdviseSink.OnDataChange(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnDataChange(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>Called by the server to notify a data object's currently registered advise sinks that data in the object has changed.</summary>
            <param name="pFormatetc">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure, which describes the format, target device, rendering, and storage information of the calling data object.</param>
            <param name="pStgmed">A pointer to a <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure, which defines the storage medium (global memory, disk file, storage object, stream object, GDI object, or undefined) and ownership of that medium for the calling data object.</param>
            <remarks>
            <para>Object handlers and containers of link objects implement <b>IAdviseSink::OnDataChange</b> to take appropriate steps when notified that data in the object has changed. They also must call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dadvise">IDataObject::DAdvise</a> to set up advisory connections with the objects in whose data they are interested. Containers that take advantage of OLE's caching support do not need to register for data-change notifications, because the information necessary to update the container's presentation of the object, including any changes in its data, are maintained in the object's cache. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> If you implement <b>IAdviseSink::OnDataChange</b> for a container, remember that this method is asynchronous and that making synchronous calls within asynchronous methods is not valid. Therefore, you cannot call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a> to obtain the data you need to update your object. Instead, you either post an internal message, or invalidate the rectangle for the changed data by calling <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-invalidaterect">InvalidateRect</a> and waiting for a <a href="https://docs.microsoft.com/windows/desktop/gdi/wm-paint">WM_PAINT</a> message, at which point you are free to get the data and update the object. The data itself, which is valid only for the duration of the call, is passed using the storage medium pointed to by <i>pStgmed</i>. Since the caller owns the medium, the advise sink should not free it. Also, if <i>pStgmed</i> points to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> interface, the sink must not increment the reference count.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-iadvisesink-ondatachange#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnViewChange(System.UInt32,System.Int32)">
            <summary>Notifies an object's registered advise sinks that its view has changed.</summary>
            <param name="dwAspect">The aspect, or view, of the object. Contains a value taken from the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-dvaspect">DVASPECT</a> enumeration.</param>
            <param name="lindex">The portion of the view that has changed. Currently only -1 is valid.</param>
            <remarks>
            <para>Containers register to be notified when an object's view changes by calling <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-iviewobject-setadvise">IViewObject::SetAdvise</a>. After it is registered, the object will call the sink's <b>IAdviseSink::OnViewChange</b> method when appropriate. <b>OnViewChange</b> can be called when the object is in either the loaded or running state. Even though <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-dvaspect">DVASPECT</a> values are individual flag bits, <i>dwAspect</i> may represent only one value. That is, <i>dwAspect</i> cannot contain the result of an OR operation combining two or more <b>DVASPECT</b> values. The <i>lindex</i> parameter represents the part of the aspect that is of interest. The value of <i>lindex</i> depends on the value of <i>dwAspect</i>. If <i>dwAspect</i> is either DVASPECT_THUMBNAIL or DVASPECT_ICON, <i>lindex</i> is ignored. If <i>dwAspect</i> is DVASPECT_CONTENT, <i>lindex</i> must be -1, which indicates that the entire view is of interest and is the only value that is currently valid.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-iadvisesink-onviewchange#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnRename(Windows.Win32.System.Com.IMoniker*)">
            <summary>Called by the server to notify all registered advisory sinks that the object has been renamed.</summary>
            <param name="pmk">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the new full moniker of the object.</param>
            <remarks>OLE link objects normally implement <b>IAdviseSink::OnRename</b> to receive notification of a change in the name of a link source or its container. The object serving as the link source calls <b>OnRename</b> and passes its new full moniker to the object handler, which forwards the notification to the link object. In response, the link object must update its moniker. The link object, in turn, forwards the notification to its own container.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnSave">
            <summary>Called by the server to notify all registered advisory sinks that the object has been saved.</summary>
            <remarks>Object handlers and link objects normally implement <b>IAdviseSink::OnSave</b> to receive notifications of when an object is saved to disk, either to its original storage (through a <b>Save</b> operation) or to new storage (through a <b>Save As</b> operation). Object Handlers and link objects register to be notified when an object is saved for the purpose of updating their caches, but then only if the advise flag passed during registration specifies ADVFCACHE_ONSAVE. Object handlers and link objects forward these notifications to their containers.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IAdviseSink.OnClose">
            <summary>Called by the server to notify all registered advisory sinks that the object has changed from the running to the loaded state.</summary>
            <remarks>
            <para>The <b>OnClose</b> notification indicates that an object is making the transition from the running to the loaded state, so its container can take appropriate measures to ensure an orderly shutdown. For example, an object handler must release its pointer to the object. If the object that is closing is the last open object supported by its OLE server application, the application can also shut down. In the case of a link object, the notification that the object is closing should always be interpreted to mean that the connection to the link source has broken.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-iadvisesink-onclose#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IAdviseSink.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000010f-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IBindCtx.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.RegisterObjectBound(Windows.Win32.System.Com.IUnknown*)">
            <summary>Registers an object with the bind context to ensure that the object remains active until the bind context is released.</summary>
            <param name="punk">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> interface on the object that is being registered as bound.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY and S_OK.</returns>
            <remarks>
            <para>Those writing a new moniker class (through an implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface) should call this method whenever the implementation activates an object. This happens most often in the course of binding a moniker, but it can also happen while retrieving a moniker's display name, parsing a display name into a moniker, or retrieving the time that an object was last modified. <b>RegisterObjectBound</b> calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> to create an additional reference to the object. You must, however, still release your own copy of the pointer. Calling this method twice for the same object creates two references to that object. You can release a reference obtained through a call to this method by calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-revokeobjectbound">IBindCtx::RevokeObjectBound</a>. All references held by the bind context are released when the bind context itself is released. Calling <b>RegisterObjectBound</b> to register an object with a bind context keeps the object active until the bind context is released. Reusing a bind context in a subsequent binding operation (either for another piece of the same composite moniker or for a different moniker) can make the subsequent binding operation more efficient because it doesn't have to reload that object. This, however, improves performance only if the subsequent binding operation requires some of the same objects as the original one, so you need to balance the possible performance improvement of reusing a bind context against the costs of keeping objects activated unnecessarily.</para>
            <para><a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> does not provide a method to retrieve a pointer to an object registered using <b>RegisterObjectBound</b>. Assuming the object has registered itself with the running object table, moniker implementations can call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-getobject">IRunningObjectTable::GetObject</a> to retrieve a pointer to the object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-registerobjectbound#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.RevokeObjectBound(Windows.Win32.System.Com.IUnknown*)">
            <summary>Removes the object from the bind context, undoing a previous call to RegisterObjectBound.</summary>
            <param name="punk">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/com/iunknown-and-interface-inheritance">IUnknown</a> interface on the object to be removed.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>You would rarely call this method. It is documented primarily for completeness.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.ReleaseBoundObjects">
            <summary>Releases all pointers to all objects that were previously registered by calls to RegisterObjectBound.</summary>
            <returns>If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</returns>
            <remarks>
            <para>You rarely call this method directly. The system's <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> implementation calls this method when the pointer to the <b>IBindCtx</b> interface on the bind context is released (the bind context is released). If a bind context is not released, all of the registered objects remain active. If the same object has been registered more than once, this method calls the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> method on the object the number of times it was registered.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-releaseboundobjects#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.SetBindOptions(Windows.Win32.System.Com.BIND_OPTS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IBindCtx.SetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.SetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)">
            <summary>Sets new values for the binding parameters stored in the bind context.</summary>
            <param name="pbindopts">A pointer to a [BIND_OPTS3](/windows/win32/api/objidl/ns-objidl-bind_opts3-r1) structure containing the binding parameters.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY and S_OK.</returns>
            <remarks>
            <para>A bind context contains a block of parameters that are common to most <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> operations. These parameters do not change as the operation moves from piece to piece of a composite moniker. Subsequent binding operations can call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-getbindoptions">IBindCtx::GetBindOptions</a> to retrieve these parameters. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> This method can be called by moniker clients (those who use monikers to acquire interface pointers to objects). When you first create a bind context by using the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createbindctx">CreateBindCtx</a> function, the fields of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-bind_opts">BIND_OPTS</a> structure are initialized to the following values:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-setbindoptions#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.GetBindOptions(Windows.Win32.System.Com.BIND_OPTS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IBindCtx.GetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.GetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)">
            <summary>Retrieves the binding options stored in this bind context.</summary>
            <param name="pbindopts">A pointer to an initialized structure that receives the current binding parameters on return. See [BIND_OPTS3](/windows/win32/api/objidl/ns-objidl-bind_opts3-r1).</param>
            <returns>This method can return the standard return values E_UNEXPECTED and S_OK.</returns>
            <remarks>
            <para>A bind context contains a block of parameters that are common to most <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> operations and that do not change as the operation moves from piece to piece of a composite moniker. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> You typically call this method if you are writing your own moniker class. (This requires that you implement the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface.) You call this method to retrieve the parameters specified by the moniker client. You must initialize the structure that is filled in by this method. Before calling this method, you must initialize the <b>cbStruct</b> member to the size of the structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-getbindoptions#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.GetRunningObjectTable(Windows.Win32.System.Com.IRunningObjectTable**)">
            <summary>Retrieves an interface pointer to the running object table (ROT) for the computer on which this bind context is running.</summary>
            <param name="pprot">The address of a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-irunningobjecttable">IRunningObjectTable</a>* pointer variable that receives the interface pointer to the running object table. If an error occurs, *<i>pprot</i> is set to <b>NULL</b>. If *<i>pprot</i> is non-<b>NULL</b>, the implementation calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the running table object; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY, E_UNEXPECTED, and S_OK.</returns>
            <remarks>
            <para>The running object table is a globally accessible table on each computer. It keeps track of all the objects that are currently running on the computer. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Typically, those implementing a new moniker class (through an implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface) call <b>GetRunningObjectTable</b>. It is useful to call this method in an implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-bindtoobject">IMoniker::BindToObject</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-isrunning">IMoniker::IsRunning</a> to check whether an object is currently running. You can also call this method in the implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-gettimeoflastchange">IMoniker::GetTimeOfLastChange</a> to learn when a running object was last modified. Moniker implementations should call this method instead of using the <b>GetRunningObjectTable</b> function. This makes it possible for future implementations of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> to modify binding behavior.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-getrunningobjecttable#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.RegisterObjectParam(Windows.Win32.Foundation.PWSTR,Windows.Win32.System.Com.IUnknown*)">
            <summary>Associates an object with a string key in the bind context's string-keyed table of pointers.</summary>
            <param name="pszKey">The <a href="https://docs.microsoft.com/windows/desktop/shell/str-constants">bind context string key</a> under which the object is being registered. Key string comparison is case-sensitive.</param>
            <param name="punk">
            <para>A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> interface on the object that is to be registered. The method calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the pointer.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-registerobjectparam#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>This method can return the standard return values E_OUTOFMEMORY and S_OK.</returns>
            <remarks>
            <para>A bind context maintains a table of interface pointers, each associated with a string key. This enables communication between a moniker implementation and the caller that initiated the binding operation. One party can store an interface pointer under a string known to both parties so that the other party can later retrieve it from the bind context. Binding operations subsequent to the use of this method can use <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-getobjectparam">IBindCtx::GetObjectParam</a> to retrieve the stored pointer. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> <b>RegisterObjectParam</b> is useful to those implementing a new moniker class (through an implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a>) and to moniker clients (those who use monikers to bind to objects). In implementing a new moniker class, you call this method when an error occurs during moniker binding to inform the caller of the cause of the error. The key that you would obtain with a call to this method would depend on the error condition. Following is a list of common moniker binding errors, describing for each the keys that would be appropriate: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-registerobjectparam#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.GetObjectParam(Windows.Win32.Foundation.PWSTR,Windows.Win32.System.Com.IUnknown**)">
            <summary>Retrieves an interface pointer to the object associated with the specified key in the bind context's string-keyed table of pointers.</summary>
            <param name="pszKey">The <a href="https://docs.microsoft.com/windows/desktop/shell/str-constants">bind context string key</a> to be searched for. Key string comparison is case-sensitive.</param>
            <param name="ppunk">The address of an <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a>* pointer variable that receives the interface pointer to the object associated with <i>pszKey</i>. When successful, the implementation calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on *<i>ppunk</i>. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, the implementation sets *<i>ppunk</i> to <b>NULL</b>.</param>
            <returns>If the method succeeds, the return value is S_OK. Otherwise, it is E_FAIL.</returns>
            <remarks>
            <para>A bind context maintains a table of interface pointers, each associated with a string key. This enables communication between a moniker implementation and the caller that initiated the binding operation. One party can store an interface pointer under a string known to both parties so that the other party can later retrieve it from the bind context. The pointer this method retrieves must have previously been inserted into the table using the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-registerobjectparam">IBindCtx::RegisterObjectParam</a> method. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Objects using monikers to locate other objects can call this method when a binding operation fails to get specific information about the error that occurred. Depending on the error, it may be possible to correct the situation and retry the binding operation. See <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-registerobjectparam">IBindCtx::RegisterObjectParam</a> for more information. Moniker implementations can call this method to handle situations where a caller initiates a binding operation and requests specific information. By convention, the implementer should use key names that begin with the string form of the CLSID of a moniker class. (See the <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-stringfromclsid">StringFromCLSID</a> function.)</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-getobjectparam#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.EnumObjectParam(Windows.Win32.System.Com.IEnumString**)">
            <summary>Retrieves a pointer to an interface that can be used to enumerate the keys of the bind context's string-keyed table of pointers.</summary>
            <param name="ppenum">The address of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstring">IEnumString</a>* pointer variable that receives the interface pointer to the enumerator. If an error occurs, *<i>ppenum</i> is set to <b>NULL</b>. If *<i>ppenum</i> is non-<b>NULL</b>, the implementation calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on *<i>ppenum</i>; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY and S_OK.</returns>
            <remarks>
            <para>The keys returned by the enumerator are the ones previously specified in calls to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-registerobjectparam">IBindCtx::RegisterObjectParam</a>. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> A bind context maintains a table of interface pointers, each associated with a string key. This enables communication between a moniker implementation and the caller that initiated the binding operation. One party can store an interface pointer under a string known to both parties so that the other party can later retrieve it from the bind context. In the system implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface, this method is not implemented. Therefore, calling this method results in a return value of E_NOTIMPL.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-enumobjectparam#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IBindCtx.RevokeObjectParam(Windows.Win32.Foundation.PWSTR)">
            <summary>Removes the specified key and its associated pointer from the bind context's string-keyed table of objects. The key must have previously been inserted into the table with a call to RegisterObjectParam.</summary>
            <param name="pszKey">The <a href="https://docs.microsoft.com/windows/desktop/shell/str-constants">bind context string key</a> to be removed. Key string comparison is case-sensitive.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>A bind context maintains a table of interface pointers, each associated with a string key. This enables communication between a moniker implementation and the caller that initiated the binding operation. One party can store an interface pointer under a string known to both parties so that the other party can later retrieve it from the bind context. This method is used to remove an entry from the table. If the specified key is found, the bind context also releases its reference to the object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ibindctx-revokeobjectparam#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IBindCtx.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000000e-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetData(Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.GetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>Called by a data consumer to obtain data from a source data object.</summary>
            <param name="pformatetcIn">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure that defines the format, medium, and target device to use when passing the data. It is possible to specify more than one medium by using the Boolean OR operator, allowing the method to choose the best medium among those specified.</param>
            <param name="pmedium">A pointer to the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure that indicates the storage medium containing the returned data through its tymed member, and the responsibility for releasing the medium through the value of its <b>pUnkForRelease</b> member. If <b>pUnkForRelease</b> is <b>NULL</b>, the receiver of the medium is responsible for releasing it; otherwise, <b>pUnkForRelease</b> points to the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> on the appropriate object so its <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> method can be called. The medium must be allocated and filled in by <b>GetData</b>.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>A data consumer calls <b>GetData</b> to retrieve data from a data object, conveyed through a storage medium (defined through the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure). <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> You can specify more than one acceptable <b>tymed</b> medium with the Boolean OR operator. <b>GetData</b> must choose from the OR'd values the medium that best represents the data, do the allocation, and indicate responsibility for releasing the medium. Data transferred across a stream extends from position zero of the stream pointer through to the position immediately before the current stream pointer (that is, the stream pointer position upon exit). <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> <b>GetData</b> must check all fields in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure. It is important that <b>GetData</b> render the requested aspect and, if possible, use the requested medium. If the data object cannot comply with the information specified in the <b>FORMATETC</b>, the method should return DV_E_FORMATETC. If an attempt to allocate the medium fails, the method should return STG_E_MEDIUMFULL. It is important to fill in all of the fields in the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure. Although the caller can specify more than one medium for returning the data, <b>GetData</b> can provide only one medium. If the initial transfer fails with the selected medium, this method can be implemented to try one of the other media specified before returning an error.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-getdata#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetDataHere(Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.GetDataHere(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetDataHere(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>Called by a data consumer to obtain data from a source data object. This method differs from the GetData method in that the caller must allocate and free the specified storage medium.</summary>
            <param name="pformatetc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure that defines the format, medium, and target device to use when passing the data. Only one medium can be specified in <b>tymed</b>, and only the following values are valid: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL, or TYMED_FILE.</param>
            <param name="pmedium">A pointer to the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure that defines the storage medium containing the data being transferred. The medium must be allocated by the caller and filled in by <b>GetDataHere</b>. The caller must also free the medium. The implementation of this method must always supply a value of <b>NULL</b> for the <b>punkForRelease</b> member of the <b>STGMEDIUM</b> structure to which this parameter points.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The <b>GetDataHere</b> method is similar to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a>, except that the caller must both allocate and free the medium specified in <i>pmedium</i>. <b>GetDataHere</b> renders the data described in a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure and copies the data into that caller-provided <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure. For example, if the medium is TYMED_HGLOBAL, this method cannot resize the medium or allocate a new hGlobal. Some media are not appropriate in a call to <b>GetDataHere</b>, including GDI types such as metafiles. The <b>GetDataHere</b> method cannot put data into a caller-provided metafile. In general, the only storage media it is necessary to support in this method are TYMED_ISTORAGE, TYMED_ISTREAM, and TYMED_FILE. When the transfer medium is a stream, OLE makes assumptions about where the data is being returned and the position of the stream's seek pointer. In a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">GetData</a> call, the data returned is from stream position zero through just before the current seek pointer of the stream (that is, the position on exit). For <b>GetDataHere</b>, the data returned is from the stream position on entry through just before the position on exit.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-getdatahere#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.QueryGetData(Windows.Win32.System.Com.FORMATETC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.QueryGetData(Windows.Win32.System.Com.FORMATETC*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.QueryGetData(Windows.Win32.System.Com.FORMATETC*)">
            <summary>Determines whether the data object is capable of rendering the data as specified. Objects attempting a paste or drop operation can call this method before calling IDataObject::GetData to get an indication of whether the operation may be successful.</summary>
            <param name="pformatetc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure defining the format, medium, and target device to use for the query.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The client of a data object calls <b>QueryGetData</b> to determine whether passing the specified <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure to a subsequent call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a> is likely to be successful. A successful return from this method does not necessarily ensure the success of the subsequent paste or drop operation.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetCanonicalFormatEtc(Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.FORMATETC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.GetCanonicalFormatEtc(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.FORMATETC*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.GetCanonicalFormatEtc(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.FORMATETC*)">
            <summary>Provides a potentially different but logically equivalent FORMATETC structure. You use this method to determine whether two different FORMATETC structures would return the same data, removing the need for duplicate rendering.</summary>
            <param name="pformatectIn">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure that defines the format, medium, and target device that the caller would like to use to retrieve data in a subsequent call such as <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a>. The <b>tymed</b> member is not significant in this case and should be ignored.</param>
            <param name="pformatetcOut">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure that contains the most general information possible for a specific rendering, making it canonically equivalent to <i>pformatetcIn</i>. The caller must allocate this structure and the <b>GetCanonicalFormatEtc</b> method must fill in the data. To retrieve data in a subsequent call like <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a>, the caller uses the specified value of <i>pformatetcOut</i>, unless the value specified is <b>NULL</b>. This value is <b>NULL</b> if the method returns DATA_S_SAMEFORMATETC. The <b>tymed</b> member is not significant in this case and should be ignored.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>If a data object can supply exactly the same data for more than one requested <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure, <b>GetCanonicalFormatEtc</b> can supply a "canonical", or standard <b>FORMATETC</b> that gives the same rendering as a set of more complicated <b>FORMATETC</b> structures. For example, it is common for the data returned to be insensitive to the target device specified in any one of a set of otherwise similar <b>FORMATETC</b> structures. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> A call to this method can determine whether two calls to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a> on a data object, specifying two different <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structures, would actually produce the same renderings, thus eliminating the need for the second call and improving performance. If the call to <b>GetCanonicalFormatEtc</b> results in a canonical format being written to the <i>pformatetcOut</i> parameter, the caller then uses that structure in a subsequent call to <b>IDataObject::GetData</b>. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Conceptually, it is possible to think of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structures in groups defined by a canonical <b>FORMATETC</b> that provides the same results as each of the group members. In constructing the canonical <b>FORMATETC</b>, you should make sure it contains the most general information possible that still produces a specific rendering. For data objects that never provide device-specific renderings, the simplest implementation of this method is to copy the input <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> to the output <b>FORMATETC</b>, store a <b>NULL</b> in the <b>ptd</b> member of the output <b>FORMATETC</b>, and return DATA_S_SAMEFORMATETC.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-getcanonicalformatetc#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.SetData(Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@,Windows.Win32.Foundation.BOOL)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.SetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*,Windows.Win32.Foundation.BOOL)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.SetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*,Windows.Win32.Foundation.BOOL)">
            <summary>Called by an object containing a data source to transfer data to the object that implements this method.</summary>
            <param name="pformatetc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure defining the format used by the data object when interpreting the data contained in the storage medium.</param>
            <param name="pmedium">A pointer to the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure defining the storage medium in which the data is being passed.</param>
            <param name="fRelease">If <b>TRUE</b>, the data object called, which implements <b>SetData</b>, owns the storage medium after the call returns. This means it must free the medium after it has been used by calling the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-releasestgmedium">ReleaseStgMedium</a> function. If <b>FALSE</b>, the caller retains ownership of the storage medium and the data object called uses the storage medium for the duration of the call only.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>SetData</b> allows another object to attempt to send data to the implementing data object. A data object implements this method if it supports receiving data from another object. If it does not support this, it should be implemented to return E_NOTIMPL. The caller allocates the storage medium indicated by the <i>pmedium</i> parameter, in which the data is passed. The data object called does not take ownership of the data until it has successfully received it and no error code is returned. The value of the <i>fRelease</i> parameter indicates the ownership of the medium after the call returns. <b>FALSE</b> indicates the caller still owns the medium, and the data object only has the use of it during the call; <b>TRUE</b> indicates that the data object now owns it and must release it when it is no longer needed. The type of medium specified in the <i>pformatetc</i> and <i>pmedium</i> parameters must be the same. For example, one cannot be a global handle and the other a stream.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-setdata#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.EnumFormatEtc(System.UInt32,Windows.Win32.System.Com.IEnumFORMATETC**)">
            <summary>Creates an object to enumerate the formats supported by a data object.</summary>
            <param name="dwDirection">
            <para>The direction of the data.  Possible values come from the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-datadir">DATADIR</a> enumeration. The value DATADIR_GET enumerates the formats that can be passed in to a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a>. The value DATADIR_SET enumerates those formats that can be passed in to a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-setdata">IDataObject::SetData</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-enumformatetc#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ppenumFormatEtc">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a> pointer variable that receives the interface pointer to the new enumerator object.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>EnumFormatEtc</b> creates an enumerator object that can be used to determine all of the ways the data object can describe data in a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure, and provides a pointer to its <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a> interface. This is one of the standard enumerator interfaces. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Having obtained the pointer, the caller can enumerate the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structures by calling the enumeration methods of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a>. Because the formats can change over time, there is no guarantee that an enumerated format is currently supported because the formats can change over time. Accordingly, applications should treat the enumeration as a hint of the format types that can be passed. The caller is responsible for calling <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> when it is finished with the enumerator. <b>EnumFormatEtc</b> is called when one of the following actions occurs: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-enumformatetc#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.DAdvise(Windows.Win32.System.Com.FORMATETC@,System.UInt32,Windows.Win32.System.Com.IAdviseSink*,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.DAdvise(Windows.Win32.System.Com.FORMATETC*,System.UInt32,Windows.Win32.System.Com.IAdviseSink*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.DAdvise(Windows.Win32.System.Com.FORMATETC*,System.UInt32,Windows.Win32.System.Com.IAdviseSink*,System.UInt32*)">
            <summary>Called by an object supporting an advise sink to create a connection between a data object and the advise sink. This enables the advise sink to be notified of changes in the data of the object.</summary>
            <param name="pformatetc">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure that defines the format, target device, aspect, and medium that will be used for future notifications. For example, one sink may want to know only when the bitmap representation of the data in the data object changes. Another sink may be interested in only the metafile format of the same object. Each advise sink is notified when the data of interest changes. This data is passed back to the advise sink when notification occurs.</param>
            <param name="advf">
            <para>A group of flags for controlling the advisory connection. Possible values are from the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-advf">ADVF</a> enumeration. However, only some of the possible <b>ADVF</b> values are relevant for this method. The following table briefly describes the relevant values. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-dadvise#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pAdvSink">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-iadvisesink">IAdviseSink</a> interface on the advisory sink that will receive the change notification.</param>
            <param name="pdwConnection">A token that identifies this connection. You can use this token later to delete the advisory connection (by passing it to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dunadvise">IDataObject::DUnadvise</a>). If this value is 0, the connection was not established.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>DAdvise</b> creates a change notification connection between a data object and the caller. The caller provides an advisory sink to which the notifications can be sent when the object's data changes. Objects used simply for data transfer typically do not support advisory notifications and return OLE_E_ADVISENOTSUPPORTED from <b>DAdvise</b>. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> The object supporting the advise sink calls <b>DAdvise</b> to set up the connection, specifying the format, aspect, medium, and/or target device of interest in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure passed in. If the data object does not support one or more of the requested attributes or the sending of notifications at all, it can refuse the connection by returning OLE_E_ADVISENOTSUPPORTED. Containers of linked objects can set up advisory connections directly with the bound link source or indirectly through the standard OLE link object that manages the connection. Connections set up with the bound link source are not automatically deleted. The container must explicitly call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dunadvise">IDataObject::DUnadvise</a> on the bound link source to delete an advisory connection. The OLE link object, manipulated through the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-iolelink">IOleLink</a> interface, is implemented in the default handler. Connections set up through the OLE link object are destroyed when the link object is deleted. The OLE default link object creates a "wildcard advise" with the link source so OLE can maintain the time of last change. This advise is specifically used to note the time that anything changed. OLE ignores all data formats that may have changed, noting only the time of last change. To allow wildcard advises, set the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> members as follows before calling <b>DAdvise</b>:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-dadvise#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.DUnadvise(System.UInt32)">
            <summary>Destroys a notification connection that had been previously set up.</summary>
            <param name="dwConnection">A token that specifies the connection to be removed. Use the value returned by <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dadvise">IDataObject::DAdvise</a> when the connection was originally established.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This methods destroys a notification created with a call to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dadvise">IDataObject::DAdvise</a> method. If the advisory connection being deleted was initially set up by delegating the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-dadvise">IDataObject::DAdvise</a> call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataadviseholder-advise">IDataAdviseHolder::Advise</a>, you must delegate this call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataadviseholder-unadvise">IDataAdviseHolder::Unadvise</a> to delete it.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-dunadvise#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDataObject.EnumDAdvise(Windows.Win32.System.Com.IEnumSTATDATA**)">
            <summary>Creates an object that can be used to enumerate the current advisory connections.</summary>
            <param name="ppenumAdvise">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatdata">IEnumSTATDATA</a> pointer variable that receives the interface pointer to the new enumerator object. If the implementation sets *<i>ppenumAdvise</i> to <b>NULL</b>, there are no connections to advise sinks at this time.</param>
            <returns>
            <para>This method returns S_OK if the enumerator object is successfully instantiated or there are no connections. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The enumerator object created by this method implements the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatdata">IEnumSTATDATA</a> interface. <b>IEnumSTATDATA</b> permits the enumeration of the data stored in an array of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statdata">STATDATA</a> structures. Each of these structures provides information on a single advisory connection, and includes <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-advf">ADVF</a> information, as well as the pointer to the advise sink and the token representing the connection. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> It is recommended that you use the OLE data advise holder object to handle advisory connections. With the pointer obtained through a call to <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-createdataadviseholder">CreateDataAdviseHolder</a>, implementing <b>IDataObject::EnumDAdvise</b> becomes a simple matter of delegating the call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataadviseholder-enumadvise">IDataAdviseHolder::EnumAdvise</a>. This creates the enumerator and supplies the pointer to the OLE implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatdata">IEnumSTATDATA</a>. At that point, you can call its methods to enumerate the current advisory connections.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-idataobject-enumdadvise#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IDataObject.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000010e-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumFORMATETC.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.Next(System.Span{Windows.Win32.System.Com.FORMATETC},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumFORMATETC.Next(System.UInt32,Windows.Win32.System.Com.FORMATETC*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.Next(System.UInt32,Windows.Win32.System.Com.FORMATETC*,System.UInt32*)">
            <summary>Retrieves the specified number of items in the enumeration sequence. (IEnumFORMATETC.Next)</summary>
            <param name="celt">The number of items to be retrieved. If there are fewer than the requested number of items left in the sequence, this method retrieves the remaining elements.</param>
            <param name="rgelt">
            <para>An array of enumerated items. The enumerator is responsible for allocating any memory, and the caller is responsible for freeing it. If <i>celt</i> is greater than 1, the caller must also pass a non-<b>NULL</b> pointer passed to <i>pceltFetched</i> to know how many pointers to release.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumformatetc-next#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pceltFetched">The number of items that were retrieved. This parameter is always less than or equal to the number of items requested. This parameter can be <b>NULL</b> if <i>celt</i> is 1.</param>
            <returns>If the method retrieves the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumformatetc-next">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.Skip(System.UInt32)">
            <summary>Skips over the specified number of items in the enumeration sequence. (IEnumFORMATETC.Skip)</summary>
            <param name="celt">The number of items to be skipped.</param>
            <returns>If the method skips the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumformatetc-skip">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.Reset">
            <summary>Resets the enumeration sequence to the beginning. (IEnumFORMATETC.Reset)</summary>
            <returns>This method returns S_OK on success.</returns>
            <remarks>There is no guarantee that the same set of objects will be enumerated after the reset operation has completed. A static collection is reset to the beginning, but it can be too expensive for some collections, such as files in a directory, to guarantee this condition.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumFORMATETC.Clone(Windows.Win32.System.Com.IEnumFORMATETC**)">
            <summary>Creates a new enumerator that contains the same enumeration state as the current one. (IEnumFORMATETC.Clone)</summary>
            <param name="ppenum">Address of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a> pointer variable that receives the interface pointer to the enumeration object. If the method is unsuccessful, the value of this output variable is undefined.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumformatetc-clone">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IEnumFORMATETC.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000103-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumMoniker.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumMoniker.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumMoniker.Next(System.UInt32,Windows.Win32.System.Com.IMoniker**,System.UInt32*)">
            <summary>Retrieves the specified number of items in the enumeration sequence. (IEnumMoniker.Next)</summary>
            <param name="celt">The number of items to be retrieved. If there are fewer than the requested number of items left in the sequence, this method retrieves the remaining elements.</param>
            <param name="rgelt">
            <para>An array of enumerated items. The enumerator is responsible for calling <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a>, and the caller is responsible for calling <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> through each pointer enumerated. If <i>celt</i> is greater than 1, the caller must also pass a non-<b>NULL</b> pointer passed to <i>pceltFetched</i> to know how many pointers to release.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienummoniker-next#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pceltFetched">The number of items that were retrieved. This parameter is always less than or equal to the number of items requested. This parameter can be <b>NULL</b> if <i>celt</i> is 1.</param>
            <returns>If the method retrieves the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienummoniker-next">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumMoniker.Skip(System.UInt32)">
            <summary>Skips over the specified number of items in the enumeration sequence. (IEnumMoniker.Skip)</summary>
            <param name="celt">The number of items to be skipped.</param>
            <returns>If the method skips the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienummoniker-skip">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumMoniker.Reset">
            <summary>Resets the enumeration sequence to the beginning. (IEnumMoniker.Reset)</summary>
            <returns>This method returns S_OK on success.</returns>
            <remarks>There is no guarantee that the same set of objects will be enumerated after the reset operation has completed. A static collection is reset to the beginning, but it can be too expensive for some collections, such as files in a directory, to guarantee this condition.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumMoniker.Clone(Windows.Win32.System.Com.IEnumMoniker**)">
            <summary>Creates a new enumerator that contains the same enumeration state as the current one. (IEnumMoniker.Clone)</summary>
            <param name="ppenum">Address of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienummoniker">IEnumMoniker</a> pointer variable that receives the interface pointer to the enumeration object. If the method is unsuccessful, the value of this output variable is undefined.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienummoniker-clone">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IEnumMoniker.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000102-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumSTATDATA.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.Next(System.Span{Windows.Win32.System.Com.STATDATA},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumSTATDATA.Next(System.UInt32,Windows.Win32.System.Com.STATDATA*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.Next(System.UInt32,Windows.Win32.System.Com.STATDATA*,System.UInt32*)">
            <summary>Retrieves the specified number of items in the enumeration sequence. (IEnumSTATDATA.Next)</summary>
            <param name="celt">The number of items to be retrieved. If there are fewer than the requested number of items left in the sequence, this method retrieves the remaining elements.</param>
            <param name="rgelt">
            <para>An array of enumerated items. The enumerator is responsible for allocating any memory, and the caller is responsible for freeing it. If <i>celt</i> is greater than 1, the caller must also pass a non-<b>NULL</b> pointer passed to <i>pceltFetched</i> to know how many pointers to release.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatdata-next#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pceltFetched">The number of items that were retrieved. This parameter is always less than or equal to the number of items requested. This parameter can be <b>NULL</b> if <i>celt</i> is 1.</param>
            <returns>If the method retrieves the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatdata-next">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.Skip(System.UInt32)">
            <summary>Skips over the specified number of items in the enumeration sequence. (IEnumSTATDATA.Skip)</summary>
            <param name="celt">The number of items to be skipped.</param>
            <returns>If the method skips the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatdata-skip">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.Reset">
            <summary>Resets the enumeration sequence to the beginning. (IEnumSTATDATA.Reset)</summary>
            <returns>This method returns S_OK on success.</returns>
            <remarks>There is no guarantee that the same set of objects will be enumerated after the reset operation has completed. A static collection is reset to the beginning, but it can be too expensive for some collections, such as files in a directory, to guarantee this condition.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumSTATDATA.Clone(Windows.Win32.System.Com.IEnumSTATDATA**)">
            <summary>Creates a new enumerator that contains the same enumeration state as the current one. (IEnumSTATDATA.Clone)</summary>
            <param name="ppenum">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatdata">IEnumSTATDATA</a> pointer variable that receives the interface pointer to the enumeration object. If the method is unsuccessful, the value of this output variable is undefined.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatdata-clone">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IEnumSTATDATA.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000105-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Next(System.Span{Windows.Win32.System.Com.STATSTG},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Next(System.UInt32,Windows.Win32.System.Com.STATSTG*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Next(System.UInt32,Windows.Win32.System.Com.STATSTG*,System.UInt32*)">
            <summary>Retrieves a specified number of STATSTG structures, that follow in the enumeration sequence.</summary>
            <param name="celt">The number of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structures requested.</param>
            <param name="rgelt">An array of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structures returned.</param>
            <param name="pceltFetched">The number of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structures  retrieved in the <i>rgelt</i> parameter.</param>
            <returns>
            <para>This method supports the following return values: </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatstg-next">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Skip(System.UInt32)">
            <summary>Skips a specified number of STATSTG structures in the enumeration sequence.</summary>
            <param name="celt">The number of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structures to skip.</param>
            <returns>
            <para>This method supports the following return values: | Return code | Description | |----------------|---------------| | S_OK | The specified number of **STATSTG** structures that were successfully skipped. | | S_FALSE | The number of **STATSTG** structures skipped is less than the *celt* parameter. |</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatstg-skip">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Reset">
            <summary>Resets the enumeration sequence to the beginning of the STATSTG structure array.</summary>
            <returns>
            <para>This method supports the S_OK return value. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatstg-reset">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Clone(Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)">
            <summary>Creates a new enumerator that contains the same enumeration state as the current STATSTG structure enumerator.</summary>
            <param name="ppenum">
            <para>A pointer to the variable that receives the  <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG</a> interface pointer. If the method is unsuccessful, the value of the <i>ppenum</i> parameter is undefined.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatstg-clone#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method supports the following return values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ienumstatstg-clone">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000000d-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStream(System.String,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStream(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.IStream**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStream(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <summary>Creates and opens a stream object with the specified name contained in this storage object.</summary>
            <param name="pwcsName">A pointer to a wide character null-terminated Unicode string that contains the name of the newly created stream. The name can be used later to open or reopen the stream. The name must not exceed 31 characters in length, not including the string terminator. The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction.</param>
            <param name="grfMode">Specifies the access mode to use when opening the newly created stream. For more information and descriptions of the possible values, see <a href="https://docs.microsoft.com/windows/desktop/Stg/stgm-constants">STGM Constants</a>.</param>
            <param name="reserved1">Reserved for future use; must be zero.</param>
            <param name="reserved2">Reserved for future use; must be zero.</param>
            <param name="ppstm">
            <para>On return, pointer to the location of the new <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> interface pointer. This is only valid if the operation is successful. When an error occurs, this parameter is set to <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-createstream#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The new stream was successfully created.| |E_PENDING | Asynchronous Storage only: Part or all of the necessary data is currently unavailable. | |STG_E_ACCESSDENIED | Not enough permissions to create stream.| |STG_E_FILEALREADYEXISTS | The name specified for the stream already exists in the storage object and the *grfMode* parameter includes the value STGM_FAILIFTHERE.| |STG_E_INSUFFICIENTMEMORY | The stream was not created due to a lack of memory.| |STG_E_INVALIDFLAG | The value specified for the *grfMode* parameter is not a valid **STGM** constants value.| |STG_E_INVALIDFUNCTION | The specified combination of flags in the *grfMode* parameter is not supported; for example, when this method is called without the STGM_SHARE_EXCLUSIVE flag.| |STG_E_INVALIDNAME | Invalid value for *pwcsName*.| |STG_E_INVALIDPOINTER | The pointer specified for the stream object was invalid.| |STG_E_INVALIDPARAMETER | One of the parameters was invalid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_TOOMANYOPENFILES | The stream was not created because there are too many open files.|</para>
            </returns>
            <remarks>
            <para>If a stream with the name specified in the <i>pwcsName</i> parameter already exists and the <i>grfMode</i> parameter includes the STGM_CREATE flag, the existing stream is replaced by a newly created one. Both the destruction of the old stream and the creation of the new stream object are subject to the transaction mode on the parent storage object. The COM-provided compound file implementation of the <b>IStorage::CreateStream</b> method does not support the following behaviors: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-createstream#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStream(System.String,Windows.Win32.System.Com.STGM,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStream(Windows.Win32.Foundation.PCWSTR,System.Void*,Windows.Win32.System.Com.STGM,System.UInt32,Windows.Win32.System.Com.IStream**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStream(Windows.Win32.Foundation.PCWSTR,System.Void*,Windows.Win32.System.Com.STGM,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <summary>Opens an existing stream object within this storage object in the specified access mode.</summary>
            <param name="pwcsName">A pointer to a wide character null-terminated Unicode string that contains the name of the stream to open. The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction.</param>
            <param name="reserved1">Reserved for future use; must be <b>NULL</b>.</param>
            <param name="grfMode">Specifies the access mode to be assigned to the open stream. For more information and descriptions of possible values, see <a href="https://docs.microsoft.com/windows/desktop/Stg/stgm-constants">STGM Constants</a>.  Other modes you choose must at least specify STGM_SHARE_EXCLUSIVE when calling this method in the compound file implementation.</param>
            <param name="reserved2">Reserved for future use; must be zero.</param>
            <param name="ppstm">
            <para>A pointer to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> pointer variable that receives the interface pointer to the newly opened stream object. If an error occurs, *<i>ppstm</i> must be set to <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-openstream#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The stream was successfully opened.| |E_PENDING | Asynchronous Storage only: Part or all of the stream data is currently unavailable. | |STG_E_ACCESSDENIED | Not enough permissions to open stream.| |STG_E_FILENOTFOUND | The stream with specified name does not exist.| |STG_E_INSUFFICIENTMEMORY | The stream was not opened due to a lack of memory.| |STG_E_INVALIDFLAG | The value specified for the *grfMode* parameter is not a valid **STGM** constants value.| |STG_E_INVALIDFUNCTION | The specified combination of flags in the *grfMode* parameter is not supported; for example, when this method is called without the STGM_SHARE_EXCLUSIVE flag.| |STG_E_INVALIDNAME | Invalid value for *pwcsName*.| |STG_E_INVALIDPOINTER | The pointer specified for the stream object was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_TOOMANYOPENFILES | The stream was not opened because there are too many open files.|</para>
            </returns>
            <remarks><b>IStorage::OpenStream</b> opens an existing stream object within this storage object in the access mode specified in <i>grfMode</i>. There are restrictions on the permissions that can be given in <i>grfMode</i>. For example, the permissions on this storage object restrict the permissions on its streams. In general, access restrictions on streams need to be stricter than those on their parent storages. Compound-file streams must be opened with STGM_SHARE_EXCLUSIVE.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStorage(System.String,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)"/>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Windows.Win32.System.Com.StructuredStorage.IStorage.CreateStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)" -->
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStorage(System.String,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.System.Com.STGM,System.UInt16*@,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.System.Com.STGM,System.UInt16**,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.OpenStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.System.Com.STGM,System.UInt16**,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)">
            <summary>Opens an existing storage object with the specified name in the specified access mode.</summary>
            <param name="pwcsName">A pointer to a wide character null-terminated Unicode string that contains the name of the storage object to open. The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction. It is ignored if <i>pstgPriority</i> is non-<b>NULL</b>.</param>
            <param name="pstgPriority">Must be <b>NULL</b>. A non-<b>NULL</b> value will return STG_E_INVALIDPARAMETER.</param>
            <param name="grfMode">Specifies the access mode to use when opening the storage object. For descriptions of the possible values, see <a href="https://docs.microsoft.com/windows/desktop/Stg/stgm-constants">STGM Constants</a>. Other modes you choose must at least specify STGM_SHARE_EXCLUSIVE when calling this method.</param>
            <param name="snbExclude">Must be <b>NULL</b>. A non-<b>NULL</b> value will return STG_E_INVALIDPARAMETER.</param>
            <param name="reserved">Reserved for future use; must be zero.</param>
            <param name="ppstg">
            <para>When successful, pointer to the location of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> pointer to the opened storage object. This parameter is set to <b>NULL</b> if an error occurs.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-openstorage#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The storage object was opened successfully.| |E_PENDING | Asynchronous Storage only: Part or all of the storage's data is currently unavailable. | |STG_E_ACCESSDENIED | Not enough permissions to open storage object.| |STG_E_FILENOTFOUND | The storage object with the specified name does not exist.| |STG_E_INSUFFICIENTMEMORY | The storage object was not opened due to a lack of memory.| |STG_E_INVALIDFLAG | The value specified for the *grfMode* parameter is not a valid **STGM** constants value.| |STG_E_INVALIDFUNCTION | The specified combination of flags in the *grfMode* parameter is not supported.| |STG_E_INVALIDNAME | Not a valid value for *pwcsName*.| |STG_E_INVALIDPOINTER | The pointer specified for the storage object was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_TOOMANYOPENFILES | The storage object was not created because there are too many open files.| |STG_S_CONVERTED | The existing stream with the specified name was replaced with a new storage object containing a single stream called CONTENTS. In direct mode, the new storage is immediately written to disk. In transacted mode, the new storage is written to a temporary storage in memory and later written to disk when it is committed.|</para>
            </returns>
            <remarks>
            <para>If the <i>pstgPriority</i> parameter is <b>NULL</b>, it is ignored. If the <i>pstgPriority</i> parameter is not <b>NULL</b>, it is an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> pointer to a previous opening of an element of the storage object, usually one that was opened in priority mode. The storage object should be closed and reopened according to <i>grfMode</i>. When the <b>IStorage::OpenStorage</b> method returns, <i>pstgPriority</i> is no longer valid. Use the value supplied in the <i>ppstg</i> parameter. Storage objects can be opened with STGM_DELETEONRELEASE, in which case the object is destroyed when it receives its final release. This is useful for creating temporary storage objects.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-openstorage#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CopyTo(System.ReadOnlySpan{System.Guid},System.UInt16**,Windows.Win32.System.Com.StructuredStorage.IStorage*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CopyTo(System.UInt32,System.Guid*,System.UInt16**,Windows.Win32.System.Com.StructuredStorage.IStorage*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.CopyTo(System.UInt32,System.Guid*,System.UInt16**,Windows.Win32.System.Com.StructuredStorage.IStorage*)">
            <summary>Copies the entire contents of an open storage object to another storage object.</summary>
            <param name="ciidExclude">The number of elements in the array pointed to by <i>rgiidExclude</i>. If <i>rgiidExclude</i> is <b>NULL</b>, then <i>ciidExclude</i> is ignored.</param>
            <param name="rgiidExclude">
            <para>An array of interface identifiers (IIDs) that either the caller knows about and does not want copied or that the storage object does not support, but whose state the caller will later explicitly copy. The array can include <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a>, indicating that only stream objects are to be copied, and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a>, indicating that only storage objects are to be copied. An array length of zero indicates that only the state exposed by the <b>IStorage</b> object is to be copied; all other interfaces on the object are to be ignored. Passing <b>NULL</b> indicates that all interfaces on the object are to be copied.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-copyto#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="snbExclude">
            <para>A string name block (refer to <a href="https://docs.microsoft.com/windows/desktop/Stg/snb">SNB</a>) that specifies a block of storage or stream objects that are not to be copied to the destination. These elements are not created at the destination. If <b>IID_IStorage</b> is in the <i>rgiidExclude</i> array, this parameter is ignored. This parameter may be <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-copyto#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pstgDest">
            <para>A pointer to the open storage object into which this storage object is to be copied. The destination storage object can be a different implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> interface from the source storage object. Thus, <b>IStorage::CopyTo</b> can use only publicly available methods of the destination storage object. If <i>pstgDest</i> is open in transacted mode, it can be reverted by calling its <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-revert">IStorage::Revert</a> method.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-copyto#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The storage object was successfully copied.| |E_PENDING | Asynchronous Storage only: Part or all of the data to be copied is currently unavailable. | |STG_E_ACCESSDENIED | The destination storage object is a child of the source storage object.| |STG_E_INSUFFICIENTMEMORY | The copy was not completed due to a lack of memory.| |STG_E_INVALIDPOINTER | The pointer specified for the storage object was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_TOOMANYOPENFILES | The copy was not completed because there are too many open files.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_MEDIUMFULL | The copy was not completed because the storage medium is full.|</para>
            </returns>
            <remarks>
            <para>This method merges elements contained in the source storage object with those already present in the destination. The layout of the destination storage object may differ from the source storage object. The copy process is recursive, invoking <b>IStorage::CopyTo</b> and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-copyto">IStream::CopyTo</a> on the elements nested inside the source. When copying a stream on top of an existing stream with the same name, the existing stream is first removed and then replaced with the source stream. When copying a storage on top of an existing storage with the same name, the existing storage is not removed. As a result, after the copy operation, the destination <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> contains older elements, unless they were replaced by newer ones with the same names. A storage object may expose interfaces other than <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a>, including <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-irootstorage">IRootStorage</a>, <a href="https://docs.microsoft.com/windows/desktop/api/propidl/nn-propidl-ipropertystorage">IPropertyStorage</a>, or <a href="https://docs.microsoft.com/windows/desktop/api/propidl/nn-propidl-ipropertysetstorage">IPropertySetStorage</a>. The <i>rgiidExclude</i> parameter permits the exclusion of any or all of these additional interfaces from the copy operation. A caller with a newer or more efficient copy of an existing substorage or stream object may want to exclude the current versions of these objects from the copy operation. The <i>snbExclude</i> and <i>rgiidExclude</i> parameters provide two ways of excluding a storage objects existing storages or streams. <h3><a id="Note_to_Callers"></a><a id="note_to_callers"></a><a id="NOTE_TO_CALLERS"></a>Note to Callers</h3> The most common way to use the <b>IStorage::CopyTo</b> method is to copy everything from the source to the destination, as in most full-save and save-as operations. The following  example code shows how to copy everything  from the source storage object to the destination storage object.</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-copyto#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.MoveElementTo(System.String,Windows.Win32.System.Com.StructuredStorage.IStorage*,System.String,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.MoveElementTo(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.Foundation.PCWSTR,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.MoveElementTo(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.Foundation.PCWSTR,System.UInt32)">
            <summary>The MoveElementTo method copies or moves a substorage or stream from this storage object to another storage object.</summary>
            <param name="pwcsName">Pointer to a wide character null-terminated Unicode string that contains the name of the element in this storage object to be moved or copied.</param>
            <param name="pstgDest"><a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> pointer to the destination storage object.</param>
            <param name="pwcsNewName">Pointer to a wide character null-terminated unicode string that contains the new name for the element in its new storage object.</param>
            <param name="grfFlags">
            <para>Specifies whether the operation should be a move (STGMOVE_MOVE) or a copy (STGMOVE_COPY). See the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-stgmove">STGMOVE</a> enumeration.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-moveelementto#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The storage object was successfully copied or moved.| |E_PENDING | Asynchronous Storage only: Part or all of the element's data is currently unavailable. | |STG_E_ACCESSDENIED | The destination storage object is a child of the source storage object. Or, the destination object and element name are the same as the source object and element name. In other words, you cannot move an element to itself.| |STG_E_FILENOTFOUND | The element with the specified name does not exist.| |STG_E_FILEALREADYEXISTS | The specified file already exists.| |STG_E_INSUFFICIENTMEMORY | The copy or move was not completed due to a lack of memory.| |STG_E_INVALIDFLAG | The value for the *grfFlags* parameter is not valid.| |STG_E_INVALIDNAME | Not a valid value for *pwcsName*.| |STG_E_INVALIDPOINTER | The pointer specified for the storage object was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_TOOMANYOPENFILES | The copy or move was not completed because there are too many open files.|</para>
            </returns>
            <remarks>
            <para>The <b>IStorage::MoveElementTo</b> method is typically the same as invoking the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-copyto">IStorage::CopyTo</a> method on the indicated element and then removing the source element. In this case, the <b>MoveElementTo</b> method uses only the publicly available functions of the destination storage object to carry out the move. If the source and destination storage objects have special knowledge about each other's implementation (they could, for example, be different instances of the same implementation), this method can be implemented more efficiently. Before calling this method, the element to be moved must be closed, and the destination storage must be open. Also, the destination object and element cannot be the same storage object/element name as the source of the move. That is, you cannot move an element to itself.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-moveelementto#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Commit(System.UInt32)">
            <summary>The Commit method ensures that any changes made to a storage object open in transacted mode are reflected in the parent storage.</summary>
            <param name="grfCommitFlags">
            <para>Controls how the changes are committed to the storage object. See the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-stgc">STGC</a> enumeration for a definition of these values.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-commit#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | Changes to the storage object were successfully committed to the parent level. If STGC_CONSOLIDATE was specified, the storage was successfully consolidated, or the storage was already too compact to consolidate further.| |STG_S_MULTIPLEOPENS | The commit operation succeeded, but the storage could not be consolidated because it had been opened multiple times using the STGM_NOSNAPSHOT flag.| |STG_S_CANNOTCONSOLIDATE | The commit operation succeeded, but the storage could not be consolidated due to an incorrect storage mode. For compound files, the storage may have been opened using the STGM_NOSCRATCH flag, or the storage may not be the outermost transacted level.| |STG_S_CONSOLIDATIONFAILED | The commit operation succeeded, but the storage could not be consolidated due to an internal error (for example, a memory allocation failure).| |E_PENDING | Asynchronous storage only: Part or all of the data to be committed is currently unavailable.| |STG_E_INVALIDFLAG | The value for the *grfCommitFlags* parameter is not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_NOTCURRENT | Another open instance of the storage object has committed changes. As a result, the current commit operation may overwrite previous changes.| |STG_E_MEDIUMFULL | No space left on device to commit.| |STG_E_TOOMANYOPENFILES | The commit operation could not be completed because there are too many open files.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>IStorage::Commit</b> makes permanent changes to a storage object that is in transacted mode, in which changes are accumulated in a buffer, and not reflected in the storage object until there is a call to this method. The alternative is to open an object in direct mode, in which changes are immediately reflected in the storage object. An object opened in the direct mode does not require calling <b>IStorage::Commit</b> to make permanent changes in the storage object. Calling the <b>IStorage::Commit</b> method on a nonroot storage opened in direct mode has no effect. Opening a root storage object in direct mode ensures that changes in memory buffers are written to the underlying storage device. The commit operation publishes the current changes in this storage object and its children to the next level up in the storage hierarchy. To undo current changes before committing them, call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-revert">IStorage::Revert</a> to roll back to the last-committed version. Calling <b>IStorage::Commit</b> has no effect on currently opened nested elements of this storage object. They remain valid and can be used. However, the <b>IStorage::Commit</b> method does not automatically commit changes to these nested elements. The commit operation publishes only known changes to the next higher level in the storage hierarchy. Thus, transactions to nested levels must be committed to this storage object before they can be committed to higher levels. In commit operations, you need to take steps to ensure that data is protected during the commit process: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-commit#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Revert">
            <summary>The Revert method discards all changes that have been made to the storage object since the last commit operation.</summary>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The revert operation was successful.| |E_PENDING | Asynchronous Storage only: Part or all of the storage's data is currently unavailable. | |STG_E_INSUFFICIENTMEMORY | The revert operation could not be completed due to a lack of memory.| |STG_E_TOOMANYOPENFILES | The revert operation could not be completed because there are too many open files.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>For storage objects opened in transacted mode, the <b>IStorage::Revert</b> method discards any uncommitted changes to this storage object or changes that have been committed to this storage object from nested elements. After this method returns, any existing elements (substorages or streams) that were opened from the reverted storage object are invalid and can no longer be used. Specifying these reverted elements in any call except <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">IUnknown::Release</a> returns the error STG_E_REVERTED This method has no effect on storage objects opened in direct mode.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-revert#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.EnumElements(Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.EnumElements(System.UInt32,System.Void*,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.EnumElements(System.UInt32,System.Void*,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)">
            <summary>The EnumElements method retrieves a pointer to an enumerator object that can be used to enumerate the storage and stream objects contained within this storage object.</summary>
            <param name="reserved1">Reserved for future use; must be zero.</param>
            <param name="reserved2">Reserved for future use; must be <b>NULL</b>.</param>
            <param name="reserved3">Reserved for future use; must be zero.</param>
            <param name="ppenum">
            <para>Pointer to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG</a>* pointer variable that receives the interface pointer to the new enumerator object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-enumelements#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The enumerator object was successfully returned.| |E_PENDING | Asynchronous Storage only: Part or all of the element's data is currently unavailable.| |STG_E_INSUFFICIENTMEMORY | The enumerator object could not be created due to lack of memory.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>The enumerator object returned by this method implements the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG</a> interface, one of the standard enumerator interfaces that contain the <b>Next</b>, <b>Reset</b>, <b>Clone</b>, and <b>Skip</b> methods. <b>IEnumSTATSTG</b> enumerates the data stored in an array of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structures. The storage object must be open in read mode to allow the enumeration of its elements. The enumerator object is permitted to enumerate the elements in any order. The enumerator object is also permitted to treat the enumeration as a snapshot or to have the enumeration reflect the current state of the storage object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-enumelements#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.DestroyElement(System.String)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.DestroyElement(Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Windows.Win32.System.Com.StructuredStorage.IStorage.DestroyElement(Windows.Win32.Foundation.PCWSTR)" -->
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.RenameElement(System.String,System.String)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.RenameElement(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.RenameElement(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR)">
            <summary>The RenameElement method renames the specified substorage or stream in this storage object.</summary>
            <param name="pwcsOldName">
            <para>Pointer to a wide character null-terminated Unicode string that contains the name of the substorage or stream to be changed. <div class="alert"><b>Note</b>  The <i>pwcsName</i>, created in <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-createstorage">CreateStorage</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-createstream">CreateStream</a> must not exceed 31 characters in length, not including the string terminator.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-renameelement#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pwcsNewName">
            <para>Pointer to a wide character null-terminated unicode string that contains the new name for the specified substorage or stream. <div class="alert"><b>Note</b>  The <i>pwcsName</i>, created in <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-createstorage">CreateStorage</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-createstream">CreateStream</a> must not exceed 31 characters in length, not including the string terminator.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-renameelement#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The element was successfully renamed.| |E_PENDING | Asynchronous Storage only: Part or all of the element's data is currently unavailable.| |STG_E_ACCESSDENIED | The caller does not have enough permissions for renaming the element.| |STG_E_FILENOTFOUND | The element with the specified old name does not exist.| |STG_E_FILEALREADYEXISTS | The element specified by the new name already exists.| |STG_E_INSUFFICIENTMEMORY | The element was not renamed due to a lack of memory.| |STG_E_INVALIDNAME | Invalid value for one of the names.| |STG_E_INVALIDPOINTER | The pointer specified for the element was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_TOOMANYOPENFILES | The element was not renamed because there are too many open files.|</para>
            </returns>
            <remarks>
            <para><b>IStorage::RenameElement</b> renames the specified substorage or stream in this storage object. An element in a storage object cannot be renamed while it is open. The rename operation is subject to committing the changes if the storage is open in transacted mode. The <b>IStorage::RenameElement</b> method is not guaranteed to work in low memory with storage objects open in transacted mode. It may work in direct mode.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-renameelement#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetElementTimes(System.String,System.Runtime.InteropServices.ComTypes.FILETIME@,System.Runtime.InteropServices.ComTypes.FILETIME@,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetElementTimes(Windows.Win32.Foundation.PCWSTR,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetElementTimes(Windows.Win32.Foundation.PCWSTR,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*)">
            <summary>The SetElementTimes method sets the modification, access, and creation times of the specified storage element, if the underlying file system supports this method.</summary>
            <param name="pwcsName">The name of the storage object element whose times are to be modified. If <b>NULL</b>, the time is set on the root storage rather than one of its elements.</param>
            <param name="pctime">Either the new creation time for the element or <b>NULL</b> if the creation time is not to be modified.</param>
            <param name="patime">Either the new access time for the element or <b>NULL</b> if the access time is not to be modified.</param>
            <param name="pmtime">Either the new modification time for the element or <b>NULL</b> if the modification time is not to be modified.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The time values were successfully set.| |E_PENDING | Asynchronous Storage only: Part or all of the element's data is currently unavailable.| |STG_E_ACCESSDENIED | The caller does not have enough permissions for changing the element.| |STG_E_FILENOTFOUND | The element with the specified name does not exist.| |STG_E_INSUFFICIENTMEMORY | The element was not changed due to a lack of memory.| |STG_E_INVALIDNAME | Not a valid value for the element name.| |STG_E_INVALIDPOINTER | The pointer specified for the element was not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.| |STG_E_TOOMANYOPENFILES | The element was not changed because there are too many open files.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>SetElementTimes</b>  sets time statistics for the specified storage element within this storage object. Not all file systems support all the time values. This method sets those times that are supported and ignores the rest. Each time-value parameter can be <b>NULL</b>; indicating that no modification should occur. Call the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-stat">IStorage::Stat</a> method to retrieve these time values.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-setelementtimes#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetClass(System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetClass(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetClass(System.Guid*)">
            <summary>The SetClass method assigns the specified class identifier (CLSID) to this storage object.</summary>
            <param name="clsid">The CLSID that is to be associated with the storage object.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The CLSID was successfully assigned.| |E_PENDING | Asynchronous Storage only: Part or all of the storage's data is currently unavailable.| |STG_E_ACCESSDENIED | The caller does not have enough permissions for assigning a CLSID to the storage object.| |STG_E_MEDIUMFULL | Not enough space was left on device to complete the operation.| |STG_E_REVERTED | The storage object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>When first created, a storage object has an associated CLSID of CLSID_NULL. Call <b>SetClass</b> to assign a CLSID to the storage object. Call the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-stat">IStorage::Stat</a> method to retrieve the current CLSID of a storage object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-setclass#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.SetStateBits(System.UInt32,System.UInt32)">
            <summary>The SetStateBits method stores up to 32 bits of state information in this storage object.</summary>
            <param name="grfStateBits">Specifies the new values of the bits to set. No legal values are defined for these bits; they are all reserved for future use and must not be used by applications.</param>
            <param name="grfMask">A binary mask indicating which bits in <i>grfStateBits</i> are significant in this call.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The state information was successfully set.| |E_PENDING | Asynchronous Storage only: Part or all of the storage's data is currently unavailable. | |STG_E_ACCESSDENIED | The caller does not have enough permissions for changing this storage object.| |STG_E_INVALIDFLAG | The value for the grfStateBits or *grfMask* parameter is not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.|</para>
            </returns>
            <remarks>The values for the state bits are not currently defined.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Stat(Windows.Win32.System.Com.STATSTG@,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)">
            <summary>The Stat method retrieves the STATSTG structure for this open storage object.</summary>
            <param name="pstatstg">
            <para>On return, pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure where this method places information about the open storage object. This parameter is <b>NULL</b> if an error occurs.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-stat#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="grfStatFlag">
            <para>Specifies that some of the members in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure are not returned, thus saving a memory allocation operation. Values are taken from the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-statflag">STATFLAG</a> enumeration.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-stat#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The STATSTG structure was successfully returned at the specified location.| |E_PENDING | Asynchronous Storage only: Part or all of the storage's data is currently unavailable.| |STG_E_ACCESSDENIED | The caller does not have enough permissions for accessing statistics for this storage object.| |STG_E_INSUFFICIENTMEMORY | The STATSTG structure was not returned due to a lack of memory.| |STG_E_INVALIDFLAG | The value for the *grfStateFlag* parameter is not valid.| |STG_E_INVALIDPARAMETER | One of the parameters was not valid.|</para>
            </returns>
            <remarks>
            <para><b>IStorage::Stat</b> retrieves the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure for the current storage object. The <b>STATSTG</b> structure contains statistical information about the storage object. <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-enumelements">IStorage::EnumElements</a> returns a pointer to an enumerator object. The enumerator object returned by this method implements the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG</a> interface, through which the data stored in the array of the <b>STATSTG</b> structures is enumerated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istorage-stat#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.StructuredStorage.IStorage.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000000b-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumString.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.Next(System.Span{Windows.Win32.Foundation.PWSTR},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumString.Next(System.UInt32,Windows.Win32.Foundation.PWSTR*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.Next(System.UInt32,Windows.Win32.Foundation.PWSTR*,System.UInt32*)">
            <summary>The IEnumString::Next (objidlbase.h) method retrieves the specified number of items in the enumeration sequence.</summary>
            <param name="celt">The number of items to be retrieved. If there are fewer than the requested number of items left in the sequence, this method retrieves the remaining elements.</param>
            <param name="rgelt">
            <para>An array of enumerated items. The enumerator is responsible for allocating any memory, and the caller is responsible for freeing it. If <i>celt</i> is greater than 1, the caller must also pass a non-NULL pointer passed to <i>pceltFetched</i> to know how many pointers to release.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidlbase/nf-objidlbase-ienumstring-next#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pceltFetched">The number of items that were retrieved. This parameter is always less than or equal to the number of items requested.</param>
            <returns>If the method retrieves the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidlbase/nf-objidlbase-ienumstring-next">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.Skip(System.UInt32)">
            <summary>The IEnumString::Skip (objidlbase.h) method skips over the specified number of items in the enumeration sequence.</summary>
            <param name="celt">The number of items to be skipped.</param>
            <returns>If the method skips the number of items requested, the return value is S_OK. Otherwise, it is S_FALSE.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidlbase/nf-objidlbase-ienumstring-skip">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.Reset">
            <summary>The IEnumString::Reset (objidlbase.h) method resets the enumeration sequence to the beginning.</summary>
            <returns>The return value is S_OK.</returns>
            <remarks>There is no guarantee that the same set of objects will be enumerated after the reset operation has completed. A static collection is reset to the beginning, but it can be too expensive for some collections, such as files in a directory, to guarantee this condition.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IEnumString.Clone(Windows.Win32.System.Com.IEnumString**)">
            <summary>The IEnumString::Clone (objidlbase.h) method creates a new enumerator that contains the same enumeration state as the current one.</summary>
            <param name="ppenum">A pointer to the cloned enumerator object.</param>
            <returns>This method can return the standard return values E_INVALIDARG, E_OUTOFMEMORY, E_UNEXPECTED, and S_OK.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidlbase/nf-objidlbase-ienumstring-clone">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IEnumString.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000101-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetClassID(System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetSizeMax(System.UInt64@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.GetSizeMax(System.UInt64*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.BindToObject(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.BindToObject(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.BindToObject(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)">
            <summary>Binds to the specified object. The binding process involves finding the object, putting it into the running state if necessary, and providing the caller with a pointer to a specified interface on the identified object.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context object, which is used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="pmkToLeft">If the moniker is part of a composite moniker, pointer to the moniker to the left of this moniker. This parameter is primarily used by moniker implementers to enable cooperation between the various components of a composite moniker. Moniker clients should use <b>NULL</b>.</param>
            <param name="riidResult">The IID of the interface the client wishes to use to communicate with the object that the moniker identifies.</param>
            <param name="ppvResult">The address of pointer variable that receives the interface pointer requested in <i>riid</i>. Upon successful return, *<i>ppvResult</i> contains the requested interface pointer to the object the moniker identifies. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the moniker. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, *<i>ppvResult</i> should be <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY and E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>BindToObject</b> implements the primary function of a moniker, which is to locate the object identified by the moniker and return a pointer to one of its interfaces. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> If you are using a moniker as a persistent connection between two objects, you activate the connection by calling <b>BindToObject</b>. You typically call <b>BindToObject</b> during the following process: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-bindtoobject#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.BindToStorage(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.BindToStorage(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.BindToStorage(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)">
            <summary>Binds to the storage for the specified object. Unlike the IMoniker::BindToObject method, this method does not activate the object identified by the moniker.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context object, which is used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="pmkToLeft">If the moniker is part of a composite moniker, pointer to the moniker to the left of this moniker. This parameter is primarily used by moniker implementers to enable cooperation between the various components of a composite moniker. Moniker clients should use <b>NULL</b>.</param>
            <param name="riid">A reference to the identifier of the storage interface requested, whose pointer will be returned in <i>ppvObj</i>. Storage interfaces commonly requested include <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a>, <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a>, and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ilockbytes">ILockBytes</a>.</param>
            <param name="ppvObj">The address of pointer variable that receives the interface pointer requested in <i>riid</i>. Upon successful return, *<i>ppvObj</i> contains the requested interface pointer to the storage of the object the moniker identifies. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the storage. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, *<i>ppvObj</i> should be <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>There is an important difference between the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-bindtoobject">BindToObject</a> and <b>BindToStorage</b> methods. If, for example, you have a moniker that identifies a spreadsheet object, calling <b>BindToObject</b> provides access to the spreadsheet object itself, while calling <b>BindToStorage</b> provides access to the storage object in which the spreadsheet resides. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Although none of the COM moniker classes call this method in their binding operations, it might be appropriate to call it in the implementation of a new moniker class. You could call this method in an implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-bindtoobject">BindToObject</a> that requires information from the object identified by the <i>pmkToLeft</i> parameter and can get it from the persistent storage of the object without activation. For example, if your monikers are used to identify objects that can be activated without activating their containers, you may find this method useful. A client that can read the storage of the object its moniker identifies could also call this method. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation should locate the persistent storage for the object identified by the current moniker and return the desired interface pointer. Some types of monikers represent pseudo-objects, which are objects that do not have their own persistent storage. Such objects comprise some portion of the internal state of its container, for example, a range of cells in a spreadsheet. If your moniker class identifies this type of object, your implementation of <b>BindToStorage</b> should return the error MK_E_NOSTORAGE. If the bind context's <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-bind_opts">BIND_OPTS</a> structure specifies the BINDFLAGS_JUSTTESTEXISTENCE flag, your implementation has the option of returning <b>NULL</b> in <i>ppvObj</i> (although you can also ignore the flag and perform the complete binding operation). <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-bindtostorage#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.Reduce(Windows.Win32.System.Com.IBindCtx*,System.UInt32,Windows.Win32.System.Com.IMoniker**,Windows.Win32.System.Com.IMoniker**)">
            <summary>Reduces a moniker to its simplest form.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context to be used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="dwReduceHowFar">Specifies how far this moniker should be reduced. This parameter must be one of the values from the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ne-objidl-mkrreduce">MKRREDUCE</a> enumeration.</param>
            <param name="ppmkToLeft">
            <para>On entry, a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that contains the interface pointer to moniker to the left of this moniker. This parameter is used primarily by moniker implementers to enable cooperation between the various components of a composite moniker; moniker clients can usually pass <b>NULL</b>. On return, *<i>ppmkToLeft</i> is usually set to <b>NULL</b>, indicating no change in the original moniker to the left. In rare situations, *<i>ppmkToLeft</i> indicates a moniker, indicating that the previous moniker to the left should be disregarded and the moniker returned through *<i>ppmkToLeft</i> is the replacement. In such a situation, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> on the old moniker to the left of this moniker and must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the new returned moniker; the caller must release it later. If an error occurs, the implementation can either leave the interface pointer unchanged or set it to <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-reduce#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ppmkReduced">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that receives the interface pointer to the reduced form of this moniker, which can be <b>NULL</b> if an error occurs or if this moniker is reduced to nothing. If this moniker cannot be reduced, *<i>ppmkReduced</i> is simply set to this moniker and the return value is MK_S_REDUCED_TO_SELF. If *<i>ppmkReduced</i> is non-<b>NULL</b>, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the new moniker; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. (This is true even if *<i>ppmkReduced</i> is set to this moniker.)</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY and E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This method is intended for the following uses: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-reduce#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.ComposeWith(Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.BOOL,Windows.Win32.System.Com.IMoniker**)">
            <summary>Creates a new composite moniker by combining the current moniker with the specified moniker.</summary>
            <param name="pmkRight">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker to compose onto the end of this moniker.</param>
            <param name="fOnlyIfNotGeneric">If <b>TRUE</b>, the caller requires a nongeneric composition, so the operation should proceed only if <i>pmkRight</i> is a moniker class that this moniker can compose with in some way other than forming a generic composite. If <b>FALSE</b>, the method can create a generic composite if necessary. Most callers should set this parameter to <b>FALSE</b>.</param>
            <param name="ppmkComposite">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that receives the composite moniker pointer. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the resulting moniker; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs or if the monikers compose to nothing (for example, composing an anti-moniker with an item moniker or a file moniker), *<i>ppmkComposite</i> should be set to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY and E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Joining two monikers together is called <i>composition</i>. Sometimes two monikers of the same class can be combined in what is called nongeneric composition. For example, a file moniker representing an incomplete path and another file moniker representing a relative path can be combined to form a single file moniker representing the complete path. Nongeneric composition for a given moniker class can be handled only in the implementation of <b>ComposeWith</b> for that moniker class. Combining two monikers of any class is called <i>generic composition</i>, which can be accomplished through a call to the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-creategenericcomposite">CreateGenericComposite</a> function. Composition of monikers is an associative operation. That is, if A, B, and C are monikers, then, where Comp() represents the composition operation, Comp( Comp( A, B ), C ) is always equal to Comp( A, Comp( B, C ) ). <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> To combine two monikers, you should call <b>ComposeWith</b> rather than calling the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-creategenericcomposite">CreateGenericComposite</a> function to give the first moniker a chance to perform a nongeneric composition. An object that provides item monikers to identify its objects would call <b>ComposeWith</b> to provide a moniker that completely identifies the location of the object. This would apply, for example, to a server that supports linking to portions of a document, or to a container that supports linking to embedded objects within its documents. In such a situation, you would do the following: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-composewith#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.Enum(Windows.Win32.Foundation.BOOL,Windows.Win32.System.Com.IEnumMoniker**)">
            <summary>Retrieves a pointer to an enumerator for the components of a composite moniker.</summary>
            <param name="fForward">If <b>TRUE</b>, enumerates the monikers from left to right. If <b>FALSE</b>, enumerates from right to left.</param>
            <param name="ppenumMoniker">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienummoniker">IEnumMoniker</a> pointer variable that receives the interface pointer to the enumerator object for the moniker. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the enumerator object. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs or if the moniker has no enumerable components, the implementation sets *<i>ppenumMoniker</i> to <b>NULL</b>.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY, E_UNEXPECTED, and S_OK.</returns>
            <remarks>
            <para>This method must supply an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienummoniker">IEnumMoniker</a> pointer to an enumerator that can enumerate the components of a moniker. For example, the implementation of the <b>IMoniker::Enum</b> method for a generic composite moniker creates an enumerator that can determine the individual monikers that make up the composite, while the <b>IMoniker::Enum</b> method for a file moniker creates an enumerator that returns monikers representing each of the components in the path. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Call this method to examine the components that make up a composite moniker. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> If the new moniker class has no discernible internal structure, your implementation of this method can simply return S_OK and set <i>ppenumMoniker</i> to <b>NULL</b>. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-enum#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.IsEqual(Windows.Win32.System.Com.IMoniker*)">
            <summary>Determines whether this moniker is identical to the specified moniker.</summary>
            <param name="pmkOtherMoniker">A  pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker to be used for comparison with this one (the one from which this method is called).</param>
            <returns>This method returns S_OK to indicate that the two monikers are identical, and S_FALSE otherwise.</returns>
            <remarks>
            <para>Previous implementations of the running object table (ROT) called this method. The current implementation of the ROT uses the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-irotdata">IROTData</a> interface instead. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Call this method to determine whether two monikers are identical. The reduced form of a moniker is considered different from the unreduced form. You should call the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-reduce">IMoniker::Reduce</a> method before calling <b>IsEqual</b>, because a reduced moniker is in its most specific form. <b>IsEqual</b> may return S_FALSE on two monikers before they are reduced, and S_OK after they are reduced. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation should not reduce the current moniker before performing the comparison. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-reduce">IMoniker::Reduce</a> to compare reduced monikers. Two monikers that compare as equal must hash to the same value using <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-hash">IMoniker::Hash</a>. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-isequal#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.Hash(System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Hash(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.Hash(System.UInt32*)">
            <summary>Creates a hash value using the internal state of the moniker.</summary>
            <param name="pdwHash">A pointer to a variable that receives the hash value.</param>
            <returns>This method returns S_OK to indicate that the hash value was retrieved successfully.</returns>
            <remarks>
            <para><h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> You can use the value returned by this method to maintain a hash table of monikers. The hash value determines a hash bucket in the table. To search such a table for a specified moniker, calculate its hash value and then compare it to the monikers in that hash bucket using <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-isequal">IMoniker::IsEqual</a>. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> The hash value must be constant for the lifetime of the moniker. Two monikers that compare as equal using <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-isequal">IMoniker::IsEqual</a> must hash to the same value. Marshaling and then unmarshaling a moniker should have no effect on its hash value. Consequently, your implementation of <b>IMoniker::Hash</b> should rely only on the internal state of the moniker, not on its memory address. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-hash#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.IsRunning(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.System.Com.IMoniker*)">
            <summary>Determines whether the object identified by this moniker is currently loaded and running.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context to be used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="pmkToLeft">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker to the left of this moniker if this moniker is part of a composite. This parameter is used primarily by moniker implementers to enable cooperation between the various components of a composite moniker; moniker clients can usually pass <b>NULL</b>.</param>
            <param name="pmkNewlyRunning">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker most recently added to the running object table (ROT). This can be <b>NULL</b>. If non-<b>NULL</b>, the implementation can return the results of calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-isequal">IMoniker::IsEqual</a> on the <i>pmkNewlyRunning</i> parameter, passing the current moniker. This parameter is intended to enable <b>IsRunning</b> implementations that are more efficient than just searching the ROT, but the implementation can choose to ignore <i>pmkNewlyRunning</i> without causing any harm.</param>
            <returns>
            <para>This method can return the standard return values E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> If speed is important when you're requesting services from the object identified by the moniker, you may want those services only if the object is already running (because loading an object into the running state may be time-consuming). In such a situation, you should call <b>IsRunning</b> to determine whether the object is running. For the monikers stored within linked objects, <b>IsRunning</b> is primarily called by the default handler's implementation of <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-iolelink-bindifrunning">IOleLink::BindIfRunning</a>. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> To get a pointer to the ROT, your implementation should call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ibindctx-getrunningobjecttable">IBindCtx::GetRunningObjectTable</a> on the <i>pbc</i> parameter. Your implementation can then call <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-isrunning">IRunningObjectTable::IsRunning</a> to determine whether the object identified by the moniker is running. The object identified by the moniker must have registered itself with the ROT when it first began running. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-isrunning#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetTimeOfLastChange(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.GetTimeOfLastChange(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetTimeOfLastChange(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)">
            <summary>Retrieves the time at which the object identified by this moniker was last changed.</summary>
            <param name="pbc">A pointer to the bind context to be used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment. For more information, see <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a>.</param>
            <param name="pmkToLeft">If the moniker is part of a composite moniker, pointer to the moniker to the left of this moniker. This parameter is primarily used by moniker implementers to enable cooperation between the various components of a composite moniker. Moniker clients should pass <b>NULL</b>.</param>
            <param name="pFileTime">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure that receives the time of last change. A value of {0xFFFFFFFF,0x7FFFFFFF} indicates an error (for example, exceeded time limit, information not available).</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>To be precise, the time returned is the earliest time COM can identify after which no change has occurred, so this time may be later than the time of the last change to the object. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> If you're caching information returned by the object identified by the moniker, you may want to ensure that your information is up-to-date. To do so, you would call <b>GetTimeOfLastChange</b> and compare the time returned with the time you last retrieved information from the object.</para>
            <para>For the monikers stored within linked objects, <b>GetTimeOfLastChange</b> is primarily called by the default handler's implementation of <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleobject-isuptodate">IOleObject::IsUpToDate</a>. Container applications call <b>IOleObject::IsUpToDate</b> to determine if a linked object (or an embedded object containing linked objects) is up-to-date without actually binding to the object. This enables an application to determine quickly which linked objects require updating when the end user opens a document. The application can then bind only those linked objects that need updating (after prompting the end user to determine whether they should be updated) instead of binding every linked object in the document. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> It is important to perform this operation quickly because, for linked objects, this method is called when a user first opens a compound document. Consequently, your <b>GetTimeOfLastChange</b> implementation should not bind to any objects. In addition, your implementation should check the deadline parameter in the bind context and return MK_E_EXCEEDEDDEADLINE if the operation cannot be completed by the specified time. Following are some strategies you can use in your implementations:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-gettimeoflastchange#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.Inverse(Windows.Win32.System.Com.IMoniker**)">
            <summary>Creates a moniker that is the inverse of this moniker. When composed to the right of this moniker or one of similar structure, the moniker will compose to nothing.</summary>
            <param name="ppmk">The address of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that receives the interface pointer to a moniker that is the inverse of this moniker. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the new inverse moniker. It is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, the implementation should set *<i>ppmk</i> to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The inverse of a moniker is analogous to the ".." directory in MS-DOS file systems; the ".." directory acts as the inverse to any other directory name, because appending ".." to a directory name results in an empty path. In the same way, the inverse of a moniker typically is also the inverse of all monikers in the same class. However, it is not necessarily the inverse of a moniker of a different class. The inverse of a composite moniker is a composite consisting of the inverses of the components of the original moniker, arranged in reverse order. For example, if the inverse of A is Inv( A ) and the composite of A, B, and C is Comp( A, B, C ), then Inv( Comp( A, B, C ) ) is equal to Comp( Inv( C ), Inv( B ), Inv( A ) ). Not all monikers have inverses. Most monikers that are themselves inverses, such as anti-monikers, do not have inverses. Monikers that have no inverse cannot have relative monikers formed from inside the objects they identify to other objects outside. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> An object that is using a moniker to locate another object usually does not know the class of the moniker it is using. To get the inverse of a moniker, you should always call <b>IMoniker::Inverse</b> rather than the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createantimoniker">CreateAntiMoniker</a> function, because you cannot be certain that the moniker you're using considers an anti-moniker to be its inverse.</para>
            <para>The <b>Inverse</b> method is also called by the implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-relativepathto">IMoniker::RelativePathTo</a> method, to assist in constructing a relative moniker. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> If your monikers have no internal structure, you can call the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createantimoniker">CreateAntiMoniker</a> function in to get an anti-moniker in your implementation of <b>IMoniker::Inverse</b>. In your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-composewith">IMoniker::ComposeWith</a>, you need to check for the inverse you supply in the implementation of <b>Inverse</b>. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-inverse#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.CommonPrefixWith(Windows.Win32.System.Com.IMoniker*,Windows.Win32.System.Com.IMoniker**)">
            <summary>Creates a new moniker based on the prefix that this moniker has in common with the specified moniker.</summary>
            <param name="pmkOther">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on another moniker to be compared with this one to determine whether there is a common prefix.</param>
            <param name="ppmkPrefix">The address of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a>* pointer variable that receives the interface pointer to the moniker that is the common prefix of this moniker and pmkOther. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the resulting moniker; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs or if there is no common prefix, the implementation should set *<i>ppmkPrefix</i> to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>CommonPrefixWith</b> creates a new moniker that consists of the common prefixes of the moniker on this moniker object and another moniker. For example, if one moniker represents the path "c:\projects\secret\art\pict1.bmp" and another moniker represents the path "c:\projects\secret\docs\chap1.txt", the common prefix of these two monikers would be a moniker representing the path "c:\projects\secret". <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> The <b>CommonPrefixWith</b> method is primarily called in the implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-relativepathto">IMoniker::RelativePathTo</a> method. Clients using a moniker to locate an object rarely need to call this method.</para>
            <para>Call this method only if <i>pmkOther</i> and this moniker are both absolute monikers. An absolute moniker is either a file moniker or a generic composite whose leftmost component is a file moniker that represents an absolute path. Do not call this method on relative monikers because it would not produce meaningful results.</para>
            <para><h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation should first determine whether <i>pmkOther</i> is a moniker of a class that you recognize and for which you can provide special handling (for example, if it is of the same class as this moniker). If so, your implementation should determine the common prefix of the two monikers. Otherwise, it should pass both monikers in a call to the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-monikercommonprefixwith">MonikerCommonPrefixWith</a> function, which correctly handles the generic case.</para>
            <para><h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-commonprefixwith#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.RelativePathTo(Windows.Win32.System.Com.IMoniker*,Windows.Win32.System.Com.IMoniker**)">
            <summary>Creates a relative moniker between this moniker and the specified moniker.</summary>
            <param name="pmkOther">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker to which a relative path should be taken.</param>
            <param name="ppmkRelPath">A pointer to an  <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that receives the interface pointer to the relative moniker. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the new moniker; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, the implementation sets *<i>ppmkRelPath</i> to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY and E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>A relative moniker is analogous to a relative path (such as "..\backup"). For example, suppose you have one moniker that represents the path "c:\projects\secret\art\pict1.bmp" and another moniker that represents the path "c:\projects\secret\docs\chap1.txt". Calling <b>RelativePathTo</b> on the first moniker, passing the second one as the <i>pmkOther</i> parameter, would create a relative moniker representing the path "..\docs\chap1.txt". <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Moniker clients typically do not need to call <b>RelativePathTo</b>. This method is called primarily by the default handler for linked objects. Linked objects contain both an absolute and a relative moniker to identify the link source. (This enables link tracking if the user moves a directory tree containing both the container and source files.) The default handler calls this method to create a relative moniker from the container document to the link source. (That is, it calls <b>RelativePathTo</b> on the moniker identifying the container document, passing the moniker identifying the link source as the <i>pmkOther</i> parameter.) If you do call <b>RelativePathTo</b>, call it only on absolute monikers, for example, a file moniker or a composite moniker whose leftmost component is a file moniker, where the file moniker represents an absolute path. Do not call this method on relative monikers. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation of <b>RelativePathTo</b> should first determine whether <i>pmkOther</i> is a moniker of a class that you recognize and for which you can provide special handling (for example, if it is of the same class as this moniker). If so, your implementation should determine the relative path. Otherwise, it should pass both monikers in a call to the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-monikerrelativepathto">MonikerRelativePathTo</a> function, which correctly handles the generic case. The first step in determining a relative path is determining the common prefix of this moniker and <i>pmkOther</i>. The next step is to break this moniker and <i>pmkOther</i> into two parts each, say (P, myTail) and (P, otherTail) respectively, where P is the common prefix. The correct relative path is then the inverse of myTail composed with otherTail: Comp( Inv( myTail ), otherTail ) where Comp() represents the composition operation and Inv() represents the inverse operation. For certain types of monikers, you cannot use your <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-inverse">IMoniker::Inverse</a> method to construct the inverse of myTail. For example, a file moniker returns an anti-moniker as an inverse, while its <b>RelativePathTo</b> method must use one or more file monikers that each represent the path ".." to construct the inverse of myTail. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-relativepathto#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.GetDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.GetDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR*)">
            <summary>Retrieves the display name for the moniker.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context to be used in this operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="pmkToLeft">If the moniker is part of a composite moniker, pointer to the moniker to the left of this moniker. This parameter is used primarily by moniker implementers to enable cooperation between the various components of a composite moniker. Moniker clients should pass <b>NULL</b>.</param>
            <param name="ppszDisplayName">The address of a pointer variable that receives a pointer to the display name string for the moniker. The implementation must use <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imalloc-alloc">IMalloc::Alloc</a> to allocate the string returned in <i>ppszDisplayName</i>, and the caller is responsible for calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imalloc-free">IMalloc::Free</a> to free it. Both the caller and the implementation of this method use the COM task allocator returned by <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cogetmalloc">CoGetMalloc</a>. If an error occurs, the implementation must set *<i>ppszDisplayName</i> should be set to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return values E_OUTOFMEMORY, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>GetDisplayName</b> provides a string that is a displayable representation of the moniker. A display name is not a complete representation of a moniker's internal state; it is simply a form that can be read by users. As a result, it is possible (though rare) for two different monikers to have the same display name. While there is no guarantee that the display name of a moniker can be parsed back into that moniker when calling the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-mkparsedisplayname">MkParseDisplayName</a> function with it, failure to do so is rare. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> It is possible that retrieving a moniker's display name may be an expensive operation. For efficiency, you may want to cache the results of the first successful call to <b>GetDisplayName</b>, rather than making repeated calls. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> If you are writing a moniker class in which the display name does not change, simply cache the display name and supply the cached name when requested. If the display name can change over time, getting the current display name might mean that the moniker has to access the object's storage or bind to the object, either of which can be expensive operations. If this is the case, your implementation of <b>GetDisplayName</b> should return MK_E_EXCEEDEDDEADLINE if the name cannot be retrieved by the time specified in the bind context's <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-bind_opts">BIND_OPTS</a> structure. A moniker that is intended to be part of a generic composite moniker should include any preceding delimiter (such as '\') as part of its display name. For example, the display name returned by an item moniker includes the delimiter specified when it was created with the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-createitemmoniker">CreateItemMoniker</a> function. The display name for a file moniker does not include a delimiter because file monikers are always expected to be the leftmost component of a composite. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-getdisplayname#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.ParseDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR,System.UInt32@,Windows.Win32.System.Com.IMoniker**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.ParseDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR,System.UInt32*,Windows.Win32.System.Com.IMoniker**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.ParseDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR,System.UInt32*,Windows.Win32.System.Com.IMoniker**)">
            <summary>Converts a display name into a moniker.</summary>
            <param name="pbc">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ibindctx">IBindCtx</a> interface on the bind context to be used in this binding operation. The bind context caches objects bound during the binding process, contains parameters that apply to all operations using the bind context, and provides the means by which the moniker implementation should retrieve information about its environment.</param>
            <param name="pmkToLeft">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker that has been built out of the display name up to this point.</param>
            <param name="pszDisplayName">The remaining display name to be parsed.</param>
            <param name="pchEaten">A pointer to a variable that receives the number of characters in <i>pszDisplayName</i> that were consumed in this step.</param>
            <param name="ppmkOut">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> pointer variable that receives the interface pointer to the moniker that was built from <i>pszDisplayName</i>. When successful, the implementation must call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the new moniker; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs, the implementation sets *<i>ppmkOut</i> to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the standard return valuesE_OUTOFMEMORY and E_UNEXPECTED, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Moniker clients do not typically call <b>ParseDisplayName</b> directly. Instead, they call the <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-mkparsedisplayname">MkParseDisplayName</a> function when they want to convert a display name into a moniker (for example, in implementing the <b>Links</b> dialog box for a container application, or for implementing a macro language that supports references to objects outside the document). That function first parses the initial portion of the display name itself. It then calls <b>ParseDisplayName</b> on the moniker it has just created, passing the remainder of the display name and getting a new moniker in return; this step is repeated until the entire display name has been parsed. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation may be able to perform this parsing by itself if your moniker class is designed to designate only certain kinds of objects. Otherwise, you must get an <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-iparsedisplayname">IParseDisplayName</a> interface pointer for the object identified by the moniker-so-far (that is, the composition of <i>pmkToLeft</i> and this moniker) and then return the results of calling <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-iparsedisplayname-parsedisplayname">IParseDisplayName::ParseDisplayName</a>. There are different strategies for getting an <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-iparsedisplayname">IParseDisplayName</a> pointer, as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-parsedisplayname#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.IsSystemMoniker(System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.IsSystemMoniker(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IMoniker.IsSystemMoniker(System.UInt32*)">
            <summary>Determines whether this moniker is one of the system-provided moniker classes.</summary>
            <param name="pdwMksys">A pointer to a variables that receives one of the values from the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-mksys">MKSYS</a> enumeration and refers to one of the COM moniker classes. This parameter cannot be <b>NULL</b>.</param>
            <returns>This method returns S_OK to indicate that the moniker is a system moniker, and S_FALSE otherwise.</returns>
            <remarks>
            <para><h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> New values of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-mksys">MKSYS</a> enumeration may be defined in the future; therefore, you should explicitly test for each value you are interested in. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Your implementation of this method must return MKSYS_NONE. You cannot use this function to identify your own monikers (for example, in your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-composewith">IMoniker::ComposeWith</a>). Instead, you should use your moniker's implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersist-getclassid">IPersist::GetClassID</a> or use <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-queryinterface(q)">QueryInterface</a> to test for your own private interface. <h3><a id="Implementation-specific_Notes"></a><a id="implementation-specific_notes"></a><a id="IMPLEMENTATION-SPECIFIC_NOTES"></a>Implementation-specific Notes</h3> </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-imoniker-issystemmoniker#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IMoniker.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000000f-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersist.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersist.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersist.GetClassID(System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersist.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersist.GetClassID(System.Guid*)">
            <summary>Retrieves the class identifier (CLSID) of the object.</summary>
            <param name="pClassID">A pointer to the location that receives the CLSID on return. The CLSID is a globally unique identifier (GUID) that uniquely represents an object class that defines the code that can manipulate the object's data.</param>
            <returns>If the method succeeds, the return value is S_OK. Otherwise, it is E_FAIL.</returns>
            <remarks>
            <para>The <b>GetClassID</b> method retrieves the class identifier (CLSID) for an object, used in later operations to load object-specific code into the caller's context. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> A container application might call this method to retrieve the original CLSID of an object that it is treating as a different class. Such a call would be necessary if a user performed an editing operation that required the object to be saved. If the container were to save it using the treat-as CLSID, the original application would no longer be able to edit the object. Typically, in this case, the container calls the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-olesave">OleSave</a> helper function, which performs all the necessary steps. For this reason, most container applications have no need to call this method directly. The exception would be a container that provides an object handler for certain objects. In particular, a container application should not get an object's CLSID and then use it to retrieve class specific information from the registry. Instead, the container should use <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-ioleobject">IOleObject</a> and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a> interfaces to retrieve such class-specific information directly from the object. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Typically, implementations of this method simply supply a constant CLSID for an object. If, however, the object's <b><a href="https://docs.microsoft.com/windows/desktop/com/treatas">TreatAs</a></b> registry key has been set by an application that supports emulation (and so is treating the object as one of a different class), a call to <b>GetClassID</b> must supply the CLSID specified in the <b><a href="https://docs.microsoft.com/windows/desktop/com/treatas">TreatAs</a></b> key. For more information on emulation, see <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-cotreatasclass">CoTreatAsClass</a>. When an object is in the running state, the default handler calls an implementation of <b>GetClassID</b> that delegates the call to the implementation in the object. When the object is not running, the default handler instead calls the <a href="https://docs.microsoft.com/windows/desktop/api/coml2api/nf-coml2api-readclassstg">ReadClassStg</a> function to read the CLSID that is saved in the object's storage. If you are writing a custom object handler for your object, you might want to simply delegate this method to the default handler implementation (see <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-olecreatedefaulthandler">OleCreateDefaultHandler</a>).</para>
            <para><h3><a id="URL_Moniker_Notes"></a><a id="url_moniker_notes"></a><a id="URL_MONIKER_NOTES"></a>URL Moniker Notes</h3> This method returns CLSID_StdURLMoniker.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ipersist-getclassid#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IPersist.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000010c-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersistStream.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.GetClassID(System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersistStream.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.IsDirty">
            <summary>Determines whether an object has changed since it was last saved to its stream. (IPersistStream.IsDirty)</summary>
            <returns>This method returns S_OK to indicate that the object has changed. Otherwise, it returns S_FALSE.</returns>
            <remarks>
            <para>Use this method to determine whether an object should be saved before closing it. The dirty flag for an object is conditionally cleared in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersiststream-save">IPersistStream::Save</a> method. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> You should treat any error return codes as an indication that the object has changed. Unless this method explicitly returns S_FALSE, assume that the object must be saved. Note that the OLE-provided implementations of the <b>IPersistStream::IsDirty</b> method in the OLE-provided moniker interfaces always return S_FALSE because their internal state never changes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ipersiststream-isdirty#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.Load(Windows.Win32.System.Com.IStream*)">
            <summary>Initializes an object from the stream where it was saved previously. (IPersistStream.Load)</summary>
            <param name="pStm">An <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> pointer to the stream from which the object should be loaded.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This method loads an object from its associated stream. The seek pointer is set as it was in the most recent <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersiststream-save">IPersistStream::Save</a> method. This method can seek and read from the stream, but cannot write to it. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Rather than calling <b>IPersistStream::Load</b> directly, you typically call the <a href="https://docs.microsoft.com/windows/desktop/api/ole/nf-ole-oleloadfromstream">OleLoadFromStream</a> function does the following: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ipersiststream-load#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.Save(Windows.Win32.System.Com.IStream*,Windows.Win32.Foundation.BOOL)">
            <summary>Saves an object to the specified stream. (IPersistStream.Save)</summary>
            <param name="pStm">An <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> pointer to the stream into which the object should be saved.</param>
            <param name="fClearDirty">Indicates whether to clear the dirty flag after the save is complete. If <b>TRUE</b>, the flag should be cleared. If <b>FALSE</b>, the flag should be left unchanged.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><b>IPersistStream::Save</b> saves an object into the specified stream and indicates whether the object should reset its dirty flag. The seek pointer is positioned at the location in the stream at which the object should begin writing its data. The object calls the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-isequentialstream-write">ISequentialStream::Write</a> method to write its data. On exit, the seek pointer must be positioned immediately past the object data. The position of the seek pointer is undefined if an error returns. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Rather than calling <b>IPersistStream::Save</b> directly, you typically call the <a href="https://docs.microsoft.com/windows/desktop/api/ole/nf-ole-olesavetostream">OleSaveToStream</a> helper function which does the following: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ipersiststream-save#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.GetSizeMax(System.UInt64@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersistStream.GetSizeMax(System.UInt64*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IPersistStream.GetSizeMax(System.UInt64*)">
            <summary>Retrieves the size of the stream needed to save the object. (IPersistStream.GetSizeMax)</summary>
            <param name="pcbSize">The size in bytes of the stream needed to save this object, in bytes.</param>
            <returns>This method returns S_OK to indicate that the size was retrieved successfully.</returns>
            <remarks>
            <para>This method returns the size needed to save an object. You can call this method to determine the size and set the necessary buffers before calling the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersiststream-save">IPersistStream::Save</a> method. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> The <b>GetSizeMax</b> implementation should return a conservative estimate of the necessary size because the caller might call the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersiststream-save">IPersistStream::Save</a> method with a non-growable stream. <h3><a id="URL_Moniker_Notes"></a><a id="url_moniker_notes"></a><a id="URL_MONIKER_NOTES"></a>URL Moniker Notes</h3> This method retrieves the maximum number of bytes in the stream that will be required by a subsequent call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-ipersiststream-save">IPersistStream::Save</a>. This value is sizeof(ULONG)==4 plus sizeof(WCHAR)*n where n is the length of the full or partial URL string, including the NULL terminator.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-ipersiststream-getsizemax#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IPersistStream.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000109-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.Register(Windows.Win32.System.Com.ROT_FLAGS,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.IMoniker*,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.Register(Windows.Win32.System.Com.ROT_FLAGS,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.IMoniker*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.Register(Windows.Win32.System.Com.ROT_FLAGS,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.IMoniker*,System.UInt32*)">
            <summary>Registers an object and its identifying moniker in the running object table (ROT).</summary>
            <param name="grfFlags">
            <para>Specifies whether the ROT's reference to punkObject is weak or strong and controls access to the object through its entry in the ROT. For details, see the Remarks section. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-register#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="punkObject">A pointer to the object that is being registered as running.</param>
            <param name="pmkObjectName">A pointer to the moniker that identifies <i>punkObject</i>.</param>
            <param name="pdwRegister">An identifier for this ROT entry that can be used in subsequent calls to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-revoke">IRunningObjectTable::Revoke</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-notechangetime">IRunningObjectTable::NoteChangeTime</a>. The caller cannot specify <b>NULL</b> for this parameter. If an error occurs, *<i>pdwRegister</i> is set to zero.</param>
            <returns>
            <para>This method can return the standard return values E_INVALIDARG and E_OUTOFMEMORY, as well as the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This method registers a pointer to an object under a moniker that identifies the object. The moniker is used as the key when the table is searched with <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-getobject">IRunningObjectTable::GetObject</a>. When an object is registered, the ROT always calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the object. For a weak registration (ROTFLAGS_REGISTRATIONKEEPSALIVE not set), the ROT will release the object whenever the last strong reference to the object is released. For a strong registration (ROTFLAGS_REGISTRATIONKEEPSALIVE set), the ROT prevents the object from being destroyed until the object's registration is explicitly revoked. A server registered as either LocalService or RunAs can set the ROTFLAGS_ALLOWANYCLIENT flag in its call to <b>Register</b> to allow any client to connect to it. A server setting this bit must have its executable name in the AppID section of the registry that refers to the AppID for the executable. An "activate as activator" server (not registered as LocalService or RunAs) must not set this flag in its call to <b>Register</b>. For details on installing services, see <a href="https://docs.microsoft.com/windows/desktop/com/installing-as-a-service-application">Installing as a Service Application</a>. Registering a second object with the same moniker, or re-registering the same object with the same moniker, creates a second entry in the ROT. In this case, <b>Register</b> returns MK_S_MONIKERALREADYREGISTERED. Each call to <b>Register</b> must be matched by a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-revoke">IRunningObjectTable::Revoke</a> because even duplicate entries have different <i>pdwRegister</i> identifiers. A problem with duplicate registrations is that there is no way to determine which object will be returned if the moniker is specified in a subsequent call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-isrunning">IRunningObjectTable::IsRunning</a>. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> If you are a moniker provider (that is, you hand out monikers identifying your objects to make them accessible to others), you must call the <b>Register</b> method to register your objects when they begin running. You must also call this method if you rename your objects while they are loaded.</para>
            <para>The most common type of moniker provider is a compound-document link source. This includes server applications that support linking to their documents (or portions of a document) and container applications that support linking to embeddings within their documents. Server applications that do not support linking can also use the ROT to cooperate with container applications that support linking to embeddings.</para>
            <para>If you are writing a server application, you should register an object with the ROT when it begins running, typically in your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleobject-doverb">IOleObject::DoVerb</a>. The object must be registered under its full moniker, which requires getting the moniker of its container document using <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleclientsite-getmoniker">IOleClientSite::GetMoniker</a>. You should also revoke and re-register the object in your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleobject-setmoniker">IOleObject::SetMoniker</a>, which is called if the container document is renamed. If you are writing a container application that supports linking to embeddings, you should register your document with the ROT when it is loaded. If your document is renamed, you should revoke and re-register it with the ROT and call <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleobject-setmoniker">IOleObject::SetMoniker</a> for any embedded objects in the document to give them an opportunity to re-register themselves. Objects registered in the ROT must be explicitly revoked when the object is no longer running or when its moniker changes. This revocation is important because there is no way for the system to automatically remove entries from the ROT. You must cache the identifier that is written through pdwRegister and use it in a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-revoke">IRunningObjectTable::Revoke</a> to revoke the registration. For a strong registration, a strong reference is released when the objects registration is revoked. As of Windows Server 2003, if there are stale entries that remain in the ROT due to unexpected server problems, COM will automatically remove these stale entries from the ROT. The system's implementation of <b>Register</b> calls <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-reduce">IMoniker::Reduce</a> on the <i>pmkObjectName</i> parameter to ensure that the moniker is fully reduced before registration. If an object is known by more than one fully reduced moniker, it should be registered under all such monikers.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-register#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.Revoke(System.UInt32)">
            <summary>Removes an entry from the running object table (ROT) that was previously registered by a call to IRunningObjectTable::Register.</summary>
            <param name="dwRegister">The identifier of the ROT entry to be revoked.</param>
            <returns>This method can return the standard return values E_INVALIDARG and S_OK.</returns>
            <remarks>
            <para>This method undoes the effect of a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-register">IRunningObjectTable::Register</a>, removing both the moniker and the pointer to the object identified by that moniker. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> A moniker provider (hands out monikers identifying its objects to make them accessible to others) must call the <b>Revoke</b> method to revoke the registration of its objects when it stops running. It must have previously called <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-register">IRunningObjectTable::Register</a> and stored the identifier returned by that method; it uses that identifier when calling <b>Revoke</b>. The most common type of moniker provider is a compound-document link source. This includes server applications that support linking to their documents (or portions of a document) and container applications that support linking to embeddings within their documents. Server applications that do not support linking can also use the ROT to cooperate with container applications that support linking to embeddings. If you are writing a container application, you must revoke a document's registration when the document is closed. You must also revoke a document's registration before re-registering it when it is renamed.</para>
            <para>If you are writing a server application, you must revoke an object's registration when the object is closed. You must also revoke an object's registration before re-registering it when its container document is renamed (see <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-ioleobject-setmoniker">IOleObject::SetMoniker</a>).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-revoke#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.IsRunning(Windows.Win32.System.Com.IMoniker*)">
            <summary>Determines whether the object identified by the specified moniker is currently running.</summary>
            <param name="pmkObjectName">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker.</param>
            <returns>If the object is in the running state, the return value is <b>TRUE</b>. Otherwise, it is <b>FALSE</b>.</returns>
            <remarks>
            <para>This method simply indicates whether a object is running. To retrieve a pointer to a running object, use the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-getobject">IRunningObjectTable::GetObject</a> method. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Generally, you call the <b>IsRunning</b> method only if you are writing your own moniker class (that is, implementing the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface). You typically call this method from your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-isrunning">IMoniker::IsRunning</a>. However, you should do so only if the <i>pmkToLeft</i> parameter of <b>IMoniker::IsRunning</b> is <b>NULL</b>. Otherwise, you should call <b>IMoniker::IsRunning</b> on your <i>pmkToLeft</i> parameter instead.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-isrunning#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.GetObject(Windows.Win32.System.Com.IMoniker*,Windows.Win32.System.Com.IUnknown**)">
            <summary>Determines whether the object identified by the specified moniker is running, and if it is, retrieves a pointer to that object.</summary>
            <param name="pmkObjectName">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker.</param>
            <param name="ppunkObject">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> pointer variable that receives the interface pointer to the running object. When successful, the implementation calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the object; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If the object is not running or if an error occurs, the implementation sets *<i>ppunkObject</i> to <b>NULL</b>.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This method checks the ROT for the moniker specified by <i>pmkObjectName</i>. If that moniker had previously been registered with a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-register">IRunningObjectTable::Register</a>, this method returns the pointer that was registered at that time. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Generally, you call the <b>IRunningObjectTable::GetObject</b> method only if you are writing your own moniker class (that is, implementing the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface). You typically call this method from your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-bindtoobject">IMoniker::BindToObject</a>. However, note that not all implementations of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-bindtoobject">IMoniker::BindToObject</a> need to call this method. If you expect your moniker to have a prefix (indicated by a non-<b>NULL</b><i>pmkToLeft</i> parameter to <b>IMoniker::BindToObject</b>), you should not check the ROT. The reason for this is that only complete monikers are registered with the ROT, and if your moniker has a prefix, your moniker is part of a composite and thus not complete. Instead, your moniker should request services from the object identified by the prefix (for example, the container of the object identified by your moniker).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-getobject#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.NoteChangeTime(System.UInt32,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.NoteChangeTime(System.UInt32,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.NoteChangeTime(System.UInt32,System.Runtime.InteropServices.ComTypes.FILETIME*)">
            <summary>Records the time that a running object was last modified. The object must have previously been registered with the running object table (ROT). This method stores the time of last change in the ROT.</summary>
            <param name="dwRegister">The identifier of the ROT entry of the changed object. This value was previously returned by <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-register">IRunningObjectTable::Register</a>.</param>
            <param name="pfiletime">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure containing the object's last change time.</param>
            <returns>This method can return the standard return values E_INVALIDARG and S_OK.</returns>
            <remarks>
            <para>The time recorded by this method can be retrieved by calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-gettimeoflastchange">IRunningObjectTable::GetTimeOfLastChange</a>. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> A moniker provider (hands out monikers identifying its objects to make them accessible to others) must call the <b>NoteChangeTime</b> method whenever its objects are modified. It must have previously called <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-register">IRunningObjectTable::Register</a> and stored the identifier returned by that method; it uses that identifier when calling <b>NoteChangeTime</b>.</para>
            <para>The most common type of moniker provider is a compound-document link source. This includes server applications that support linking to their documents (or portions of a document) and container applications that support linking to embeddings within their documents. Server applications that do not support linking can also use the ROT to cooperate with container applications that support linking to embeddings.</para>
            <para>When an object is first registered in the ROT, the ROT records its last change time as the value returned by calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-gettimeoflastchange">IMoniker::GetTimeOfLastChange</a> on the moniker being registered.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-notechangetime#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.GetTimeOfLastChange(Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.GetTimeOfLastChange(Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.GetTimeOfLastChange(Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)">
            <summary>Retrieves the time that an object was last modified.</summary>
            <param name="pmkObjectName">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface on the moniker.</param>
            <param name="pfiletime">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure that receives the object's last change time.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This method returns the change time that was last reported for this object by a call to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-irunningobjecttable-notechangetime">IRunningObjectTable::NoteChangeTime</a>. If <b>NoteChangeTime</b> has not been called previously, the method returns the time that was recorded when the object was registered. This method is provided to enable checking whether a connection between two objects (represented by one object holding a moniker that identifies the other) is up-to-date. For example, if one object is holding cached information about the other object, this method can be used to check whether the object has been modified since the cache was last updated. See <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-gettimeoflastchange">IMoniker::GetTimeOfLastChange</a>. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Generally, you call <b>GetTimeOfLastChange</b> only if you are writing your own moniker class (that is, implementing the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-imoniker">IMoniker</a> interface). You typically call this method from your implementation of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-imoniker-gettimeoflastchange">IMoniker::GetTimeOfLastChange</a>. However, you should do so only if the <i>pmkToLeft</i> parameter of <b>IMoniker::GetTimeOfLastChange</b> is <b>NULL</b>. Otherwise, you should call <b>IMoniker::GetTimeOfLastChange</b> on your <i>pmkToLeft</i> parameter instead.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-gettimeoflastchange#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IRunningObjectTable.EnumRunning(Windows.Win32.System.Com.IEnumMoniker**)">
            <summary>Creates and returns a pointer to an enumerator that can list the monikers of all the objects currently registered in the running object table (ROT).</summary>
            <param name="ppenumMoniker">A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienummoniker">IEnumMoniker</a> pointer variable that receives the interface pointer to the new enumerator for the ROT. When successful, the implementation calls <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">AddRef</a> on the enumerator; it is the caller's responsibility to call <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a>. If an error occurs; the implementation sets *<i>ppenumMoniker</i> to <b>NULL</b>.</param>
            <returns>This method can return the standard return values E_OUTOFMEMORY and S_OK.</returns>
            <remarks>
            <para><b>IRunningObjectTable::EnumRunning</b> must create and return a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienummoniker">IEnumMoniker</a> interface on an enumerator object. The standard enumerator methods can then be called to enumerate the monikers currently registered in the registry. The enumerator cannot be used to enumerate monikers that are registered in the ROT after the enumerator has been created. The <b>EnumRunning</b> method is intended primarily for the use by the system in implementing the alert object table. Note that OLE 2 does not include an implementation of the alert object table.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-irunningobjecttable-enumrunning#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IRunningObjectTable.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000010-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.ISequentialStream.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ISequentialStream.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ISequentialStream.Read(System.Void*,System.UInt32,System.UInt32*)">
            <summary>Reads a specified number of bytes from the stream object into memory, starting at the current seek pointer.</summary>
            <param name="pv">A pointer to the buffer which the stream data is read into.</param>
            <param name="cb">The number of bytes of data to read from the stream object.</param>
            <param name="pcbRead">
            <para>A pointer to a <b>ULONG</b> variable that receives the actual number of bytes read from the stream object. <div class="alert"><b>Note</b>  The number of bytes read may be zero.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-isequentialstream-read#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | All of the requested data was successfully read from the stream object; the number of bytes requested in *cb* is the same as the number of bytes returned in *pcbRead*.| |S_FALSE | The value returned in *pcbRead* is less than the number of bytes requested in *cb*. This indicates the end of the stream has been reached. The number of bytes read indicates how much of the *pv* buffer has been filled.| |E_PENDING | Asynchronous storage only: Part or all of the data to be read is currently unavailable. | |STG_E_ACCESSDENIED | The caller does not have permissions required to read this stream object.| |STG_E_INVALIDPOINTER | One of the pointer values is invalid.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>This method reads bytes from this stream object into memory. The stream object must be opened in <b>STGM_READ</b> mode. This method adjusts the seek pointer by the actual number of bytes read. The number of bytes actually read is also returned in the <i>pcbRead</i> parameter. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> The actual number of bytes read can be less than the number of bytes requested if an error occurs or if the end of the stream is reached during the read operation.  The number of bytes returned should always  be compared to the number of bytes requested.  If the number of bytes returned is less than the number of bytes requested, it usually means the <b>Read</b> method attempted to read  past the end of the stream. The application should handle both a returned error  and <b>S_OK</b> return values on end-of-stream read operations.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-isequentialstream-read#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ISequentialStream.Write(System.Void*,System.UInt32,System.UInt32*)">
            <summary>Writes a specified number of bytes into the stream object starting at the current seek pointer.</summary>
            <param name="pv">A pointer to the buffer that contains the data that is to be written to the stream. A valid pointer must be provided for this parameter even when <i>cb</i> is zero.</param>
            <param name="cb">The number of bytes of data to attempt to write into the stream. This value can be zero.</param>
            <param name="pcbWritten">A pointer to a <b>ULONG</b> variable where this method writes the actual number of bytes written to the stream object. The caller can set this pointer to <b>NULL</b>, in which case this method does not provide the actual number of bytes written.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The data was successfully written to the stream object.| |E_PENDING | Asynchronous Storage only: Part or all of the data to be written is currently unavailable.| |STG_E_MEDIUMFULL | The write operation failed because there is no space left on the storage device.| |STG_E_ACCESSDENIED | The caller does not have the required  permissions for writing to this stream object.| |STG_E_CANTSAVE | Data cannot be written for reasons other than improper access or insufficient space.| |STG_E_INVALIDPOINTER | One of the pointer values is not valid. The *pv* parameter must contain a valid pointer even if *cb* is zero.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.| |STG_E_WRITEFAULT | The write operation failed due to a disk error. This value is also returned when this method attempts to write to a stream that was opened in simple mode (using the STGM_SIMPLE flag).|</para>
            </returns>
            <remarks>
            <para><b>ISequentialStream::Write</b> writes the specified data to a stream object. The seek pointer is adjusted for the number of bytes actually written. The number of bytes actually written is returned in the <i>pcbWritten</i> parameter. If the byte count is zero bytes, the write operation has no effect. If the seek pointer is currently past the end of the stream and the byte count is nonzero, this method increases the size of the stream to the seek pointer and writes the specified bytes starting at the seek pointer. The fill bytes written to the stream are not initialized to any particular value. This is the same as the end-of-file behavior in the MS-DOS FAT file system. With a zero byte count and a seek pointer past the end of the stream, this method does not create the fill bytes to increase the stream to the seek pointer. In this case, you must call the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-setsize">IStream::SetSize</a> method to increase the size of the stream and write the fill bytes. The <i>pcbWritten</i> parameter can have a value even if an error occurs. In the COM-provided implementation, stream objects are not sparse. Any fill bytes are eventually allocated on the disk and assigned to the stream.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-isequentialstream-write#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.ISequentialStream.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0c733a30-2a1c-11ce-ade5-00aa0044773d}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IStream.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Seek(System.Int64,System.IO.SeekOrigin,System.UInt64*)">
            <summary>Changes the seek pointer to a new location. The new location is relative to either the beginning of the stream, the end of the stream, or the current seek pointer.</summary>
            <param name="dlibMove">The displacement to be added to the location indicated by the <i>dwOrigin</i> parameter. If <i>dwOrigin</i> is <b>STREAM_SEEK_SET</b>, this is interpreted as an unsigned value rather than a signed value.</param>
            <param name="dwOrigin">The origin for the displacement specified in <i>dlibMove</i>. The origin can be the beginning of the file (<b>STREAM_SEEK_SET</b>), the current seek pointer (<b>STREAM_SEEK_CUR</b>), or the end of the file (<b>STREAM_SEEK_END</b>). For more information about values, see the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-stream_seek">STREAM_SEEK</a> enumeration.</param>
            <param name="plibNewPosition">
            <para>A pointer to the location where this method writes the value of the new seek pointer from the beginning of the stream. You can set this pointer to <b>NULL</b>. In this case, this method does not provide the new seek pointer.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-seek#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The seek pointer was successfully adjusted.| |E_PENDING | Asynchronous Storage only: Part or all of the stream data is currently unavailable. | |STG_E_INVALIDPOINTER | Indicates that *plibNewPosition* points to invalid memory, because *plibNewPosition* is not read.| |STG_E_INVALIDFUNCTION | The *dwOrigin* parameter contains an invalid value, or the *dlibMove* parameter contains a bad offset value. For example, the result of the seek pointer is a negative offset value.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>IStream::Seek</b> changes the seek pointer so that subsequent read and write operations can be performed at a different location in the stream object. It is an error to seek before the beginning of the stream. It is not, however, an error to seek past the end of the stream. Seeking past the end of the stream is useful for subsequent write operations, as the stream byte range will be extended to the new seek position immediately before the write is complete. You can also use this method to obtain the current value of the seek pointer by calling this method with the <i>dwOrigin</i> parameter set to <b>STREAM_SEEK_CUR</b> and the <i>dlibMove</i> parameter set to 0 so that the seek pointer is not changed. The current seek pointer is returned in the <i>plibNewPosition</i> parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-seek#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.SetSize(System.UInt64)">
            <summary>Changes the size of the stream object.</summary>
            <param name="libNewSize">Specifies the new size, in bytes, of the stream.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The size of the stream object was successfully changed.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable.| |STG_E_MEDIUMFULL | The stream size is not changed because there is no space left on the storage device.| |STG_E_INVALIDFUNCTION | The value of the *libNewSize* parameter is not supported by the implementation. Not all streams support greater than 232 bytes. If a stream does not support more than 232 bytes, the high DWORD data type of *libNewSize* must be zero. If it is nonzero, the implementation may return STG_E_INVALIDFUNCTION. In general, COM-based implementations of the IStream interface do not support streams larger than 232 bytes.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>IStream::SetSize</b> changes the size of the stream object. Call this method to preallocate space for the stream. If the <i>libNewSize</i> parameter is larger than the current stream size, the stream is extended to the indicated size by filling the intervening space with bytes of undefined value. This operation is similar to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-isequentialstream-write">ISequentialStream::Write</a> method if the seek pointer is past the current end of the stream. If the <i>libNewSize</i> parameter is smaller than the current stream, the stream is truncated to the indicated size. The seek pointer is not affected by the change in stream size. Calling <b>IStream::SetSize</b> can be an effective way to obtain a large chunk of contiguous space.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-setsize#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.CopyTo(Windows.Win32.System.Com.IStream*,System.UInt64,System.UInt64*,System.UInt64*)">
            <summary>Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream.</summary>
            <param name="pstm">A pointer to the destination stream. The stream pointed to by <i>pstm</i> can be a new stream or a clone of the source stream.</param>
            <param name="cb">The number of bytes to copy from the source stream.</param>
            <param name="pcbRead">A pointer to the location where this method writes the actual number of bytes read from the source. You can set this pointer to <b>NULL</b>. In this case, this method does not provide the actual number of bytes read.</param>
            <param name="pcbWritten">A pointer to the location where this method writes the actual number of bytes written to the destination. You can set this pointer to <b>NULL</b>. In this case, this method does not provide the actual number of bytes written.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The stream object was successfully copied.| |E_PENDING | Asynchronous Storage only: Part or all of the data to be copied is currently unavailable. | |STG_E_INVALIDPOINTER | The value of one of the pointer parameters is invalid.| |STG_E_MEDIUMFULL | The stream is not copied because there is no space left on the storage device.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>The <b>CopyTo</b> method copies the specified bytes from one stream to another. It can also be used to copy a stream to itself. The seek pointer in each stream instance is adjusted for the number of bytes read or written. This method is equivalent to reading <i>cb</i> bytes into memory using <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-isequentialstream-read">ISequentialStream::Read</a> and then immediately writing them to the destination stream using <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-isequentialstream-write">ISequentialStream::Write</a>, although <b>IStream::CopyTo</b> will be more efficient. The destination stream can be a clone of the source stream created by calling the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-clone">IStream::Clone</a> method. If <b>IStream::CopyTo</b> returns an error, you cannot assume that the seek pointers are valid for either the source or destination. Additionally, the values of <i>pcbRead</i> and <i>pcbWritten</i> are not meaningful even though they are returned. If <b>IStream::CopyTo</b> returns successfully, the actual number of bytes read and written are the same. To copy the remainder of the source from the current seek pointer, specify the maximum large integer value for the <i>cb</i> parameter. If the seek pointer is the beginning of the stream, this operation copies the entire stream.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-copyto#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Commit(System.UInt32)">
            <summary>The Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage.</summary>
            <param name="grfCommitFlags">
            <para>Controls how the changes for the stream object are committed. See the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-stgc">STGC</a> enumeration for a definition of these values.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-commit#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | Changes to the stream object were successfully committed to the parent level.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable. | |STG_E_MEDIUMFULL | The commit operation failed due to lack of space on the storage device.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>The <b>Commit</b>  method ensures that changes to a stream object opened in transacted mode are reflected in the parent storage. Changes that have been made to the stream since it was opened or last committed are reflected to the parent storage object. If the parent is opened in transacted mode, the parent may revert at a later time, rolling back the changes to this stream object. The compound file implementation does not support the opening of streams in transacted mode, so this method has very little effect other than to flush memory buffers. For more information, see <a href="https://docs.microsoft.com/windows/desktop/Stg/istream-compound-file-implementation">IStream - Compound File Implementation</a>. If the stream is open in direct mode, this method ensures that any memory buffers have been flushed out to the underlying storage object. This is much like a flush in traditional file systems. The <b>IStream::Commit</b> method is useful on a direct mode stream when the implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> interface is a wrapper for underlying file system APIs. In this case, <b>IStream::Commit</b> would be connected to the file system's flush call.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-commit#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Revert">
            <summary>The Revert method discards all changes that have been made to a transacted stream since the last IStream::Commit call. On streams open in direct mode and streams using the COM compound file implementation of IStream::Revert, this method has no effect.</summary>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The stream was successfully reverted to its previous version.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable. |</para>
            </returns>
            <remarks>The <b>Revert</b> method discards changes made to a transacted stream since the last commit operation.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.LockRegion(System.UInt64,System.UInt64,System.UInt32)">
            <summary>The LockRegion method restricts access to a specified range of bytes in the stream.</summary>
            <param name="libOffset">Integer that specifies the byte offset for the beginning of the range.</param>
            <param name="cb">Integer that specifies the length of the range, in bytes, to be restricted.</param>
            <param name="dwLockType">Specifies the restrictions being requested on accessing the range.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The specified range of bytes was locked.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable. | |STG_E_INVALIDFUNCTION | Locking is not supported at all or the specific type of lock requested is not supported.| |STG_E_LOCKVIOLATION | Requested lock is supported, but cannot be granted because of an existing lock.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>The byte range of the stream can be extended.  Locking an extended range for the stream is useful as a method of communication between different instances of the stream without changing data that is actually part of the stream. Three types of locking can be supported: locking to exclude other writers, locking to exclude other readers or writers, and locking that allows only one requester to obtain a lock on the given range, which is usually an alias for one of the other two lock types. A given stream instance might support either of the first two types, or both. The lock type is specified by <i>dwLockType</i>, using a value from the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-locktype">LOCKTYPE</a> enumeration. Any region locked with <b>IStream::LockRegion</b> must later be explicitly unlocked by calling <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-unlockregion">IStream::UnlockRegion</a> with exactly the same values for the <i>libOffset</i>, <i>cb</i>, and <i>dwLockType</i> parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call. <h3><a id="Notes_to_Callers"></a><a id="notes_to_callers"></a><a id="NOTES_TO_CALLERS"></a>Notes to Callers</h3> Since the type of locking supported is optional and can vary in different implementations of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a>, you must provide code to deal with the STG_E_INVALIDFUNCTION error. The <b>LockRegion</b> method has no effect in the compound file implementation, because the implementation does not support range locking. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> Support for this method is optional for implementations of stream objects since it may not be supported by the underlying file system. The type of locking supported is also optional. The STG_E_INVALIDFUNCTION error is returned if the requested type of locking is not supported.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-lockregion#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.UnlockRegion(System.UInt64,System.UInt64,System.UInt32)">
            <summary>The UnlockRegion method removes the access restriction on a range of bytes previously restricted with IStream::LockRegion.</summary>
            <param name="libOffset">Specifies the byte offset for the beginning of the range.</param>
            <param name="cb">Specifies, in bytes, the length of the range to be restricted.</param>
            <param name="dwLockType">Specifies the access restrictions previously placed on the range.</param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The byte range was unlocked.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable.| |STG_E_INVALIDFUNCTION | Locking is not supported at all or the specific type of lock requested is not supported.| |STG_E_LOCKVIOLATION | The requested unlock operation cannot be granted.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>IStream::UnlockRegion</b> unlocks a region previously locked with the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-lockregion">IStream::LockRegion</a> method. Locked regions must later be explicitly unlocked by calling <b>IStream::UnlockRegion</b> with exactly the same values for the <i>libOffset</i>, <i>cb</i>, and <i>dwLockType</i> parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-unlockregion#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Stat(Windows.Win32.System.Com.STATSTG@,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IStream.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)">
            <summary>The Stat method retrieves the STATSTG structure for this stream.</summary>
            <param name="pstatstg">
            <para>Pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure where this method places information about this stream object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-stat#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="grfStatFlag">
            <para>Specifies that this method does not return some of the members in the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure, thus saving a memory allocation operation. Values are taken from the <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ne-wtypes-statflag">STATFLAG</a> enumeration.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-stat#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The STATSTG structure was successfully returned at the specified location.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable. | |STG_E_ACCESSDENIED | The caller does not have enough permissions for accessing statistics for this storage object.| |STG_E_INSUFFICIENTMEMORY | The STATSTG structure was not returned due to a lack of memory.| |STG_E_INVALIDFLAG | The value for the *grfStateFlag* parameter is not valid.| |STG_E_INVALIDPOINTER | The *pStatStg* pointer is not valid.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para><b>IStream::Stat</b> retrieves a pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-statstg">STATSTG</a> structure that contains information about this open stream. When this stream is within a structured storage and <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-enumelements">IStorage::EnumElements</a> is called, it creates an enumerator object with the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG</a> interface on it, which can be called to enumerate the storages and streams through the <b>STATSTG</b> structures associated with each of them.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-stat#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IStream.Clone(Windows.Win32.System.Com.IStream**)">
            <summary>The Clone method creates a new stream object with its own seek pointer that references the same bytes as the original stream.</summary>
            <param name="ppstm">
            <para>When successful, pointer to the location of an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> pointer to the new stream object. If an error occurs, this parameter is <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-clone#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. | Return code | Description | |----------------|---------------| |S_OK | The stream was successfully cloned.| |E_PENDING | Asynchronous Storage only: Part or all of the stream's data is currently unavailable. | |STG_E_INSUFFICIENTMEMORY | The stream was not cloned due to a lack of memory.| |STG_E_INVALIDPOINTER | The ppStm pointer is not valid.| |STG_E_REVERTED | The object has been invalidated by a revert operation above it in the transaction tree.|</para>
            </returns>
            <remarks>
            <para>The <b>Clone</b> method creates a new stream object for accessing the same bytes but using a separate seek pointer. The new stream object sees the same data as the source-stream object. Changes written to one object are immediately visible in the other. Range locking is shared between the stream objects. The initial setting of the seek pointer in the cloned stream instance is the same as the current setting of the seek pointer in the original stream at the time of the clone operation.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/nf-objidl-istream-clone#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IStream.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000000c-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.IUnknown.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IUnknown.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Windows.Win32.System.Com.IUnknown.QueryInterface(System.Guid*,System.Void**)" -->
        <member name="M:Windows.Win32.System.Com.IUnknown.AddRef">
            <summary>Increments the reference count for an interface pointer to a COM object. You should call this method whenever you make a copy of an interface pointer.</summary>
            <returns>The method returns the new reference count. This value is intended to be used only for test purposes.</returns>
            <remarks>
            <para>A COM object uses a per-interface reference-counting mechanism to ensure that the object doesn't outlive references to it. You use **AddRef** to stabilize a copy of an interface pointer. It can also be called when the life of a cloned pointer must extend beyond the lifetime of the original pointer. The cloned pointer must be released by calling [IUnknown::Release](/windows/desktop/api/unknwn/nf-unknwn-iunknown-queryinterface(refiid_void)) on it. The internal reference counter that **AddRef** maintains should be a 32-bit unsigned integer.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/unknwn/nf-unknwn-iunknown-addref#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IUnknown.Release">
            <summary>Decrements the reference count for an interface on a COM object.</summary>
            <returns>The method returns the new reference count. This value is intended to be used only for test purposes.</returns>
            <remarks>
            <para>When the reference count on an object reaches zero, **Release** must cause the interface pointer to free itself. When the released pointer is the only (formerly) outstanding reference to an object (whether the object supports single or multiple interfaces), the implementation must free the object. Note that aggregation of objects restricts the ability to recover interface pointers.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/unknwn/nf-unknwn-iunknown-release#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IUnknown.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000000-0000-0000-c000-000000000046}</value>
        </member>
        <member name="T:Windows.Win32.System.Com.LOCKTYPE">
            <summary>The LOCKTYPE enumeration values indicate the type of locking requested for the specified range of bytes. The values are used in the ILockBytes::LockRegion and IStream::LockRegion methods.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ne-objidl-locktype">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.LOCKTYPE.LOCK_WRITE">
            <summary>If this lock is granted, the specified range of bytes can be opened and read any number of times, but writing to the locked range is prohibited except for the owner that was granted this lock.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.LOCKTYPE.LOCK_EXCLUSIVE">
            <summary>If this lock is granted, writing to the specified range of bytes is prohibited except by the owner that was granted this lock.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.LOCKTYPE.LOCK_ONLYONCE">
            <summary>If this lock is granted, no other <b>LOCK_ONLYONCE</b> lock can be obtained on the range. Usually this lock type is an alias for some other lock type. Thus, specific implementations can have additional behavior associated with this lock type.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.STATDATA">
            <summary>Contains information used to specify each advisory connection.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statdata">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.STATDATA.formatetc">
            <summary>The <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structure for the data of interest to the advise sink. The advise sink receives notification of changes to the data specified by this <b>FORMATETC</b> structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATDATA.advf">
            <summary>The <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-advf">ADVF</a> enumeration value that determines when the advisory sink is notified of changes in the data.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATDATA.pAdvSink">
            <summary>The pointer for the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-iadvisesink">IAdviseSink</a> interface that will receive change notifications.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATDATA.dwConnection">
            <summary>The token that uniquely identifies the advisory connection. This token is returned by the method that sets up the advisory connection.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.STATSTG">
            <summary>Contains statistical data about an open storage, stream, or byte-array object.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statstg">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.pwcsName">
            <summary>
            <para>A pointer to a <b>NULL</b>-terminated Unicode string that contains the name. Space for this string is allocated by the method called and freed by the caller (for more information, see <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cotaskmemfree">CoTaskMemFree</a>). To  not return this member, specify the STATFLAG_NONAME value when you call a method that returns a <b>STATSTG</b> structure, except for calls to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumstatstg">IEnumSTATSTG::Next</a>, which provides no way to specify this value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statstg#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.type">
            <summary>
            <para>Indicates the type of storage object. This is one of the values from the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-stgty">STGTY</a> enumeration.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statstg#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.cbSize">
            <summary>Specifies the size, in bytes, of the stream or byte array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.mtime">
            <summary>Indicates the last modification time for this storage, stream, or byte array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.ctime">
            <summary>Indicates the creation time for this storage, stream, or byte array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.atime">
            <summary>Indicates the last access time for this storage, stream, or byte array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.grfMode">
            <summary>
            <para>Indicates the access mode specified when the object was opened. This member is only valid in calls to <b>Stat</b> methods.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statstg#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.clsid">
            <summary>Indicates the class identifier for the storage object; set to CLSID_NULL for new storage objects. This member is not used for streams or byte arrays.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.grfStateBits">
            <summary>
            <para>Indicates the current state bits of the storage object; that is, the value most recently set by the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istorage-setstatebits">IStorage::SetStateBits</a> method. This member is not valid for streams or byte arrays.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/objidl/ns-objidl-statstg#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.STATSTG.reserved">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.STGM">
            <summary>Flags that indicate conditions for creating and deleting the object and access modes for the object.</summary>
            <remarks>You can combine these flags, but you can only choose one flag from each group of related flags. Typically one flag from each of the access and sharing groups must be specified for all functions and methods which use these constants. Flags from other groups are optional.</remarks>
        </member>
        <member name="T:Windows.Win32.System.Com.TYMED">
            <summary>Indicates the type of storage medium being used in a data transfer. They are used in the STGMEDIUM or FORMATETC structures.</summary>
            <remarks>During data transfer operations, a storage medium is specified. This medium must be released after the data transfer operation. The provider of the medium indicates its choice of ownership scenarios in the value it provides in the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> structure. A <b>NULL</b> value for the <b>pUnkForRelease</b> member indicates that the receiving body of code owns and can free the medium. A non-<b>NULL</b> pointer specifies that <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-releasestgmedium">ReleaseStgMedium</a> can always be called to free the medium.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_HGLOBAL">
            <summary>The storage medium is a global memory handle (<b>HGLOBAL</b>). Allocate the global handle with the GMEM_MOVEABLE flag. If the <b>punkForRelease</b> member of <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> is <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalfree">GlobalFree</a> to release the memory.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_FILE">
            <summary>The storage medium is a disk file identified by a path. If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-openfile">OpenFile</a> to delete the file.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_ISTREAM">
            <summary>The storage medium is a stream object identified by an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a> pointer. Use <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-isequentialstream-read">ISequentialStream::Read</a> to read the data. If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is not <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> to release the stream component.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_ISTORAGE">
            <summary>The storage medium is a storage component identified by an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istorage">IStorage</a> pointer. The data is in the streams and storages contained by this <b>IStorage</b> instance. If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is not <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> to release the storage component.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_GDI">
            <summary>The storage medium is a GDI component (<b>HBITMAP</b>). If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-deleteobject">DeleteObject</a> to delete the bitmap.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_MFPICT">
            <summary>The storage medium is a metafile (<b>METAFILEPICT</b>). Use the GDI functions to access the metafile's data. If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-deletemetafile">DeleteMetaFile</a> to delete the bitmap.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_ENHMF">
            <summary>The storage medium is an enhanced metafile (<b>HENHMETAFILE</b>). If the <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> <b>punkForRelease</b> member is <b>NULL</b>, the destination process should use <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-deleteenhmetafile">DeleteEnhMetaFile</a> to delete the bitmap.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYMED.TYMED_NULL">
            <summary>No data is being passed.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ole.DROPEFFECT">
            <summary>Represents information about the effects of a drag-and-drop operation.</summary>
            <remarks>
            <para>Your application should always mask values from the **DROPEFFECT** enumeration to ensure compatibility with future implementations. Presently, only some of the positions in a **DROPEFFECT** value have meaning. In the future, more interpretations for the bits will be added. Drag sources and drop targets should carefully mask these values appropriately before comparing. They should never compare a **DROPEFFECT** against, say, DROPEFFECT\_COPY by doing the following: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/com/dropeffect-constants#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropSource.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropSource.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropSource.QueryContinueDrag(Windows.Win32.Foundation.BOOL,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS)">
            <summary>Determines whether a drag-and-drop operation should be continued, canceled, or completed. You do not call this method directly. The OLE DoDragDrop function calls this method during a drag-and-drop operation.</summary>
            <param name="fEscapePressed">Indicates whether the Esc key has been pressed since the previous call to <b>QueryContinueDrag</b> or to <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> if this is the first call to <b>QueryContinueDrag</b>. A <b>TRUE</b> value indicates the end user has pressed the escape key; a <b>FALSE</b> value indicates it has not been pressed.</param>
            <param name="grfKeyState">The current state of the keyboard modifier keys on the keyboard. Possible values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.</param>
            <returns>
            <para>This method can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls <b>QueryContinueDrag</b> whenever it detects a change in the keyboard or mouse button state during a drag-and-drop operation. <b>QueryContinueDrag</b> must determine whether the drag-and-drop operation should be continued, canceled, or completed based on the contents of the parameters <i>grfKeyState</i> and <i>fEscapePressed</i>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropSource.GiveFeedback(Windows.Win32.System.Ole.DROPEFFECT)">
            <summary>Enables a source application to give visual feedback to the end user during a drag-and-drop operation by providing the DoDragDrop function with an enumeration value specifying the visual effect.</summary>
            <param name="dwEffect">The <a href="https://docs.microsoft.com/windows/desktop/com/dropeffect-constants">DROPEFFECT</a> value returned by the most recent call to <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragenter">IDropTarget::DragEnter</a>, <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragover">IDropTarget::DragOver</a>, or <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragleave">IDropTarget::DragLeave</a>.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>When your application detects that the user has started a drag-and-drop operation, it should call the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function. <b>DoDragDrop</b> enters a loop, calling <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragenter">IDropTarget::DragEnter</a> when the mouse first enters a drop target window, <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragover">IDropTarget::DragOver</a> when the mouse changes its position within the target window, and <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragleave">IDropTarget::DragLeave</a> when the mouse leaves the target window. For every call to either <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragenter">IDropTarget::DragEnter</a> or <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragover">IDropTarget::DragOver</a>, <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> calls <b>IDropSource::GiveFeedback</b>, passing it the DROPEFFECT value returned from the drop target call.</para>
            <para><a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> calls <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragleave">IDropTarget::DragLeave</a> when the mouse has left the target window. Then, <b>DoDragDrop</b> calls <b>IDropSource::GiveFeedback</b> and passes the DROPEFFECT_NONE value in the <i>dwEffect</i> parameter. The <i>dwEffect</i> parameter can include DROPEFFECT_SCROLL, indicating that the source should put up the drag-scrolling variation of the appropriate pointer. <h3><a id="Notes_to_Implementers"></a><a id="notes_to_implementers"></a><a id="NOTES_TO_IMPLEMENTERS"></a>Notes to Implementers</h3> This function is called frequently during the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> loop, so you can gain performance advantages if you optimize your implementation as much as possible. <b>IDropSource::GiveFeedback</b> is responsible for changing the cursor shape or for changing the highlighted source based on the value of the <i>dwEffect</i> parameter. If you are using default cursors, you can return DRAGDROP_S_USEDEFAULTCURSORS, which causes OLE to update the cursor for you, using its defaults.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleidl/nf-oleidl-idropsource-givefeedback#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.IDropSource.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000121-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.DragEnter(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.DragEnter(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.DragEnter(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)">
            <summary>Indicates whether a drop can be accepted, and, if so, the effect of the drop.</summary>
            <param name="pDataObj">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a> interface on the data object. This data object contains the data being transferred in the drag-and-drop operation. If the drop occurs, this data object will be incorporated into the target.</param>
            <param name="grfKeyState">The current state of the keyboard modifier keys on the keyboard. Possible values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.</param>
            <param name="pt">A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-pointl">POINTL</a> structure containing the current cursor coordinates in screen coordinates.</param>
            <param name="pdwEffect">On input, pointer to the value of the <i>pdwEffect</i> parameter of the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function. On return, must contain one of the <a href="https://docs.microsoft.com/windows/desktop/com/dropeffect-constants">DROPEFFECT</a> flags, which indicates what the result of the drop operation would be.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>You do not call <b>DragEnter</b> directly; instead the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls it to determine the effect of a drop the first time the user drags the mouse into the registered window of a drop target. To implement <b>DragEnter</b>, you must determine whether the target can use the data in the source data object by checking three things: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragenter#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.DragOver(Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.DragOver(Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.DragOver(Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)">
            <summary>Provides target feedback to the user and communicates the drop's effect to the DoDragDrop function so it can communicate the effect of the drop back to the source.</summary>
            <param name="grfKeyState">The current state of the keyboard modifier keys on the keyboard. Valid values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.</param>
            <param name="pt">A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-pointl">POINTL</a> structure containing the current cursor coordinates in screen coordinates.</param>
            <param name="pdwEffect">On input, pointer to the value of the <i>pdwEffect</i> parameter of the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function. On return, must contain one of the <a href="https://docs.microsoft.com/windows/desktop/com/dropeffect-constants">DROPEFFECT</a> flags, which indicates what the result of the drop operation would be.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>You do not call <b>DragOver</b> directly. The <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls this method each time the user moves the mouse across a given target window. <b>DoDragDrop</b> exits the loop if the drag-and-drop operation is canceled, if the user drags the mouse out of the target window, or if the drop is completed. In implementing <b>IDropTarget::DragOver</b>, you must provide features similar to those in <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragenter">IDropTarget::DragEnter</a>. You must determine the effect of dropping the data on the target by examining the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> defining the data object's formats and medium, along with the state of the modifier keys. The mouse position may also play a role in determining the effect of a drop. The following modifier keys affect the result of the drop. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragover#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.DragLeave">
            <summary>Removes target feedback and releases the data object.</summary>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>You do not call this method directly. The <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls this method in either of the following cases: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragleave#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.Drop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.Drop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IDropTarget.Drop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)">
            <summary>Incorporates the source data into the target window, removes target feedback, and releases the data object.</summary>
            <param name="pDataObj">A pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a> interface on the data object being transferred in the drag-and-drop operation.</param>
            <param name="grfKeyState">The current state of the keyboard modifier keys on the keyboard. Possible values can be a combination of any of the flags MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.</param>
            <param name="pt">A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-pointl">POINTL</a> structure containing the current cursor coordinates in screen coordinates.</param>
            <param name="pdwEffect">On input, pointer to the value of the <i>pdwEffect</i> parameter of the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function. On return, must contain one of the <a href="https://docs.microsoft.com/windows/desktop/com/dropeffect-constants">DROPEFFECT</a> flags, which indicates what the result of the drop operation would be.</param>
            <returns>
            <para>This method returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>You do not call this method directly. The <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls this method when the user completes the drag-and-drop operation. In implementing <b>Drop</b>, you must incorporate the data object into the target. Use the formats available in <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a>, available through <i>pDataObj</i>, along with the current state of the modifier keys to determine how the data is to be incorporated, such as linking or embedding. In addition to incorporating the data, you must also clean up as you do in the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragleave">IDropTarget::DragLeave</a> method: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleidl/nf-oleidl-idroptarget-drop#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.IDropTarget.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00000122-0000-0000-c000-000000000046}</value>
        </member>
        <member name="T:Windows.Win32.Foundation.COLORREF">
            <summary>The COLORREF value is used to specify an RGB color.</summary>
            <remarks>
            <para>When specifying an explicit [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) color, the **COLORREF** value has the following hexadecimal form: `0x00bbggrr` The low-order byte contains a value for the relative intensity of red; the second byte contains a value for green; and the third byte contains a value for blue. The high-order byte must be zero. The maximum value for a single byte is 0xFF. To create a **COLORREF** color value, use the [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) macro. To extract the individual values for the red, green, and blue components of a color value, use the [**GetRValue**](/windows/desktop/api/Wingdi/nf-wingdi-getrvalue), [GetGValue](/windows/desktop/api/Wingdi/nf-wingdi-getgvalue), and [GetBValue](/windows/desktop/api/Wingdi/nf-wingdi-getbvalue) macros, respectively.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/gdi/colorref#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="T:Windows.Win32.Foundation.FILETIME">
            <summary>Describes FILETIME and provides syntax, members, and additional remarks.</summary>
            <remarks>
            <para>A property of type PT_SYSTIME has a **FILETIME** structure for its value. Such a property has a **FILETIME** data type for the **Value** member in its definition in an [SPropValue](spropvalue.md) structure. The definition of the **FILETIME** structure is in the _Win32 Programmer's Reference_ and in the MAPI header file Mapidefs.h. MAPI defines the structure conditionally to make sure that it is defined when the Win32 definition is unavailable.</para>
            <para><see href="https://learn.microsoft.com/office/client-developer/outlook/mapi/filetime#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Foundation.FILETIME.dwLowDateTime">
            <summary>> Low-order 32 bits of the file time value.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.FILETIME.dwHighDateTime">
            <summary>> High-order 32 bits of the file time value.</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 docs.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.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.POINTL">
            <summary>The POINTL structure defines the x- and y-coordinates of a point.</summary>
            <remarks>The POINTL structure is identical to the <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-point">POINT</a> structure.</remarks>
        </member>
        <member name="F:Windows.Win32.Foundation.POINTL.x">
            <summary>Specifies the <i>x</i>-coordinate of the point.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.POINTL.y">
            <summary>Specifies the <i>y</i>-coordinate of the point.</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.RECT">
            <summary>The RECT structure defines a rectangle by the coordinates of its upper-left and lower-right corners.</summary>
            <remarks>The RECT structure is identical to the <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rectl">RECTL</a> structure.</remarks>
        </member>
        <member name="F:Windows.Win32.Foundation.RECT.left">
            <summary>Specifies the <i>x</i>-coordinate of the upper-left corner of the rectangle.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.RECT.top">
            <summary>Specifies the <i>y</i>-coordinate of the upper-left corner of the rectangle.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.RECT.right">
            <summary>Specifies the <i>x</i>-coordinate of the lower-right corner of the rectangle.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.RECT.bottom">
            <summary>Specifies the <i>y</i>-coordinate of the lower-right corner of the rectangle.</summary>
        </member>
        <member name="T:Windows.Win32.Foundation.SIZE">
            <summary>The SIZE structure defines the width and height of a rectangle.</summary>
            <remarks>The rectangle dimensions stored in this structure can correspond to viewport extents, window extents, text extents, bitmap dimensions, or the aspect-ratio filter for some extended functions.</remarks>
        </member>
        <member name="F:Windows.Win32.Foundation.SIZE.cx">
            <summary>Specifies the rectangle's width. The units depend on which function uses this structure.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.SIZE.cy">
            <summary>Specifies the rectangle's height. The units depend on which function uses this structure.</summary>
        </member>
        <member name="P:Windows.Win32.__char_260.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__char_260.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_260.AsSpan">
            <summary>
            Gets this inline array as a span.
            </summary>
            <remarks>
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it.
            </remarks>
        </member>
        <member name="M:Windows.Win32.__char_260.AsReadOnlySpan">
            <summary>
            Gets this inline array as a span.
            </summary>
            <remarks>
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it.
            </remarks>
        </member>
        <member name="M:Windows.Win32.__char_260.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_260.Length"/>.
            </exception>
        </member>
        <member name="M:Windows.Win32.__char_260.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.Win32.__char_80.Length">
            <summary>The length of the inline array.</summary>
        </member>
        <member name="P:Windows.Win32.__char_80.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_80.AsSpan">
            <summary>
            Gets this inline array as a span.
            </summary>
            <remarks>
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it.
            </remarks>
        </member>
        <member name="M:Windows.Win32.__char_80.AsReadOnlySpan">
            <summary>
            Gets this inline array as a span.
            </summary>
            <remarks>
            ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it.
            </remarks>
        </member>
        <member name="M:Windows.Win32.__char_80.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_80.Length"/>.
            </exception>
        </member>
        <member name="M:Windows.Win32.__char_80.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.GlobalFreeSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.GlobalFree(Windows.Win32.Foundation.HGLOBAL)"/>.
            </summary>
        </member>
        <member name="T:Windows.Win32.Graphics.Gdi.MONITORINFO">
            <summary>The MONITORINFO structure contains information about a display monitor.The GetMonitorInfo function stores information in a MONITORINFO structure or a MONITORINFOEX structure.The MONITORINFO structure is a subset of the MONITORINFOEX structure.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-monitorinfo">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Graphics.Gdi.MONITORINFO.cbSize">
            <summary>
            <para>The size of the structure, in bytes. Set this member to <c>sizeof ( MONITORINFO )</c> before calling the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getmonitorinfoa">GetMonitorInfo</a> function. Doing so lets the function determine the type of structure you are passing to it.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-monitorinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.Graphics.Gdi.MONITORINFO.rcMonitor">
            <summary>A <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure that specifies the display monitor rectangle, expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.</summary>
        </member>
        <member name="F:Windows.Win32.Graphics.Gdi.MONITORINFO.rcWork">
            <summary>A <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure that specifies the work area rectangle of the display monitor, expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.</summary>
        </member>
        <member name="F:Windows.Win32.Graphics.Gdi.MONITORINFO.dwFlags">
            <summary>
            <para>A set of flags that represent attributes of the display monitor. The following flag is defined. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-monitorinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.WindowsAndMessaging.ICONINFO">
            <summary>Contains information about an icon or a cursor.</summary>
            <remarks>
            <para>For monochrome icons, the <b>hbmMask</b> is twice the height of the icon (with the AND mask on top and the XOR mask on the bottom), and <b>hbmColor</b> is <b>NULL</b>. Also, in this case the height should be an even multiple of two. For color icons, the <b>hbmMask</b> and <b>hbmColor</b> bitmaps are the same size, each of which is the size of the icon. You can use a <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-getobject">GetObject</a> function to get contents of <b>hbmMask</b> and <b>hbmColor</b> in the <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/ns-wingdi-bitmap">BITMAP</a> structure. The bitmap bits can be obtained with call to <a href="https://docs.microsoft.com/windows/win32/api/wingdi/nf-wingdi-getdibits">GetDIBits</a> on the bitmaps in this structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.ICONINFO.fIcon">
            <summary>
            <para>Type: <b>BOOL</b> Specifies whether this structure defines an icon or a cursor. A value of <b>TRUE</b> specifies an icon; <b>FALSE</b> specifies a cursor.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.ICONINFO.xHotspot">
            <summary>
            <para>Type: <b>DWORD</b> The x-coordinate of a cursor's hot spot. If this structure defines an icon, the hot spot is always in the center of the icon, and this member is ignored.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.ICONINFO.yHotspot">
            <summary>
            <para>Type: <b>DWORD</b> The y-coordinate of the cursor's hot spot. If this structure defines an icon, the hot spot is always in the center of the icon, and this member is ignored.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.ICONINFO.hbmMask">
            <summary>
            <para>Type: <b>HBITMAP</b> A handle to the icon monochrome mask <a href="https://docs.microsoft.com/windows/win32/gdi/bitmaps">bitmap</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.ICONINFO.hbmColor">
            <summary>
            <para>Type: <b>HBITMAP</b> A handle to the icon color <a href="https://docs.microsoft.com/windows/win32/gdi/bitmaps">bitmap</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-iconinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT">
            <summary>Contains information about a low-level mouse input event.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT.pt">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The x- and y-coordinates of the cursor, in <a href="https://docs.microsoft.com/windows/desktop/api/shellscalingapi/ne-shellscalingapi-process_dpi_awareness">per-monitor-aware</a> screen coordinates.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT.mouseData">
            <summary>
            <para>Type: <b>DWORD</b> If the message is <a href="https://docs.microsoft.com/windows/desktop/inputdev/wm-mousewheel">WM_MOUSEWHEEL</a>, the high-order word of this member is the wheel delta. The low-order word is reserved. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as <b>WHEEL_DELTA</b>, which is 120.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT.flags">
            <summary>
            <para>Type: <b>DWORD</b> The event-injected flags. An application can use the following values to test the flags. Testing LLMHF_INJECTED (bit 0) will tell you whether the event was injected. If it was, then testing LLMHF_LOWER_IL_INJECTED (bit 1) will tell you whether or not the event was injected from a process running at lower integrity level. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT.time">
            <summary>
            <para>Type: <b>DWORD</b> The time stamp for this message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MSLLHOOKSTRUCT.dwExtraInfo">
            <summary>
            <para>Type: <b>ULONG_PTR</b> Additional information associated with the message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-msllhookstruct#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Controls.IMAGEINFO">
            <summary>Contains information about an image in an image list. This structure is used with the IImageList::GetImageInfo function. (IMAGEINFO)</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGEINFO.hbmImage">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HBITMAP</a></b> A handle to the bitmap that contains the images.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGEINFO.hbmMask">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HBITMAP</a></b> A handle to a monochrome bitmap that contains the masks for the images. If the image list does not contain a mask, this member is <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGEINFO.Unused1">
            <summary>
            <para>Type: <b>int</b> Not used. This member should always be zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGEINFO.Unused2">
            <summary>
            <para>Type: <b>int</b> Not used. This member should always be zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGEINFO.rcImage">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a></b> The bounding rectangle of the specified image within the bitmap specified by <b>hbmImage</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imageinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS">
            <summary>Contains information about an image list draw operation and is used with the IImageList::Draw function. (IMAGELISTDRAWPARAMS)</summary>
            <remarks>
            <para>An overlay image is an image that is drawn on top of the primary image specified in the <b>i</b> member of this structure. To specify an overlay image, use the bitwise <b>OR</b> operator to combine <b>fStyle</b> with the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-indextooverlaymask">INDEXTOOVERLAYMASK</a> macro, passing the one-based index of the overlay image in the macro. This image must have been previously specified as an overlay image using the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-imagelist_setoverlayimage">ImageList_SetOverlayImage</a> API. To extract the overlay image from the <b>fStyle</b>, use the bitwise <b>AND</b> operator to mask <b>fStyle</b> with the <a href="https://docs.microsoft.com/windows/desktop/Controls/imagelistdrawflags">ILD_OVERLAYMASK</a> value. Comctl32.dll version 6 is not redistributable.. To use Comctl32.dll version 6, you must specify it in a manifest. For more information on manifests, see <a href="https://docs.microsoft.com/windows/desktop/Controls/cookbook-overview">Enabling Visual Styles</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.cbSize">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">DWORD</a></b> The size of this structure, in bytes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.himl">
            <summary>
            <para>Type: <b>HIMAGELIST</b> A handle to the image list that contains the image to be drawn.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.i">
            <summary>
            <para>Type: <b>int</b> The zero-based index of the image to be drawn.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.hdcDst">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HDC</a></b> A handle to the destination device context.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.x">
            <summary>
            <para>Type: <b>int</b> The x-coordinate that specifies where the image is drawn.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.y">
            <summary>
            <para>Type: <b>int</b> The y-coordinate that specifies where the image is drawn.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.cx">
            <summary>
            <para>Type: <b>int</b> A value that specifies the number of pixels to draw, relative to the upper-left corner of the drawing operation as specified by <b>xBitmap</b> and <b>yBitmap</b>. If <b>cx</b> and <b>cy</b> are zero, then <a href="https://docs.microsoft.com/windows/desktop/api/commoncontrols/nf-commoncontrols-iimagelist-draw">Draw</a> draws the entire valid section. The method does not ensure that the parameters are valid.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.cy">
            <summary>
            <para>Type: <b>int</b> A value that specifies the number of pixels to draw, relative to the upper-left corner of the drawing operation as specified by <b>xBitmap</b> and <b>yBitmap</b>. If <b>cx</b> and <b>cy</b> are zero, then <a href="https://docs.microsoft.com/windows/desktop/api/commoncontrols/nf-commoncontrols-iimagelist-draw">Draw</a> draws the entire valid section. The method does not ensure that the parameters are valid.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.xBitmap">
            <summary>
            <para>Type: <b>int</b> The x-coordinate that specifies the upper-left corner of the drawing operation in reference to the image itself. Pixels of the image that are to the left of <b>xBitmap</b> and above <b>yBitmap</b> do not appear.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.yBitmap">
            <summary>
            <para>Type: <b>int</b> The y-coordinate that specifies the upper-left corner of the drawing operation in reference to the image itself. Pixels of the image that are to the left of <b>xBitmap</b> and above <b>yBitmap</b> do not appear.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.rgbBk">
            <summary>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">COLORREF</a></b></summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.rgbFg">
            <summary>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">COLORREF</a></b></summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.fStyle">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">UINT</a></b> A flag specifying the drawing style and, optionally, the overlay image. See the comments section at the end of this topic for information on the overlay image. This member can contain one or more <a href="https://docs.microsoft.com/windows/desktop/Controls/imagelistdrawflags">image list drawing flags</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.dwRop">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">DWORD</a></b> A value specifying a raster operation code. These codes define how the color data for the source rectangle will be combined with the color data for the destination rectangle to achieve the final color. This member is ignored if	<b>fStyle</b> does not include the <a href="https://docs.microsoft.com/windows/desktop/Controls/imagelistdrawflags">ILD_ROP</a> flag. Some common raster operation codes include: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.fState">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">DWORD</a></b> A flag that specifies the drawing state. This member can contain one or more <a href="https://docs.microsoft.com/windows/desktop/Controls/imageliststateflags">image list state flags</a>. You must use comctl32.dll version 6 to use this member. See the Remarks.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.Frame">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">DWORD</a></b> Used with the <b>alpha blending</b> effect. When used with <a href="https://docs.microsoft.com/windows/desktop/Controls/imageliststateflags">ILS_ALPHA</a>, this member holds the value for the alpha channel. This value can be from 0 to 255, with 0 being completely transparent, and 255 being completely opaque. You must use comctl32.dll version 6 to use this member. See the Remarks.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Controls.IMAGELISTDRAWPARAMS.crEffect">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">DWORD</a></b> A color used for the <b>glow</b> and <b>shadow</b> effects. You must use comctl32.dll version 6 to use this member. See the Remarks.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/ns-commctrl-imagelistdrawparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE">
            <summary>Identifies a change in the state of a button associated with a pointer.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ne-winuser-pointer_button_change_type">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_NONE">
            <summary>No change in button state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FIRSTBUTTON_DOWN">
            <summary>The first button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FIRSTBUTTON</a>) transitioned to a pressed state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FIRSTBUTTON_UP">
            <summary>The first button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FIRSTBUTTON</a>) transitioned to a released state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_SECONDBUTTON_DOWN">
            <summary>The second button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_SECONDBUTTON</a>) transitioned to a pressed state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_SECONDBUTTON_UP">
            <summary>The second button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_SECONDBUTTON</a>) transitioned to a released state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_THIRDBUTTON_DOWN">
            <summary>The third button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_THIRDBUTTON</a>) transitioned to a pressed state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_THIRDBUTTON_UP">
            <summary>The third button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_THIRDBUTTON</a>) transitioned to a released state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FOURTHBUTTON_DOWN">
            <summary>The fourth button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FOURTHBUTTON</a>) transitioned to a pressed state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FOURTHBUTTON_UP">
            <summary>The fourth button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FOURTHBUTTON</a>) transitioned to a released state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FIFTHBUTTON_DOWN">
            <summary>The fifth button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FIFTHBUTTON</a>) transitioned to a pressed state.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_BUTTON_CHANGE_TYPE.POINTER_CHANGE_FIFTHBUTTON_UP">
            <summary>The fifth button (see <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAG_FIFTHBUTTON</a>) transitioned to a released state.</summary>
        </member>
        <member name="T:Windows.Win32.UI.Input.Pointer.POINTER_INFO">
            <summary>Contains basic pointer information common to all pointer types. Applications can retrieve this information using the GetPointerInfo, GetPointerFrameInfo, GetPointerInfoHistory and GetPointerFrameInfoHistory functions.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.pointerType">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">POINTER_INPUT_TYPE</a></b> A value from the <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">POINTER_INPUT_TYPE</a> enumeration that specifies the pointer type.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.pointerId">
            <summary>
            <para>Type: <b>UINT32</b> An identifier that uniquely identifies a pointer during its lifetime. A pointer comes into existence when it is first detected and ends its existence when it goes out of detection range. Note that if a physical entity (finger or pen) goes out of detection range and then returns to be detected again, it is treated as a new pointer and may be assigned a new pointer identifier.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.frameId">
            <summary>
            <para>Type: <b>UINT32</b> An identifier common to multiple pointers for which the source device reported an update in a single input frame. For example, a parallel-mode multi-touch digitizer may report the positions of multiple touch contacts in a single update to the system. Note that frame identifier is assigned as input is reported to the system for all pointers across all devices. Therefore, this field may not contain strictly sequential values in a single series of messages that a window receives. However, this field will contain the same numerical value for all input updates that were reported in the same input frame by a single device.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.pointerFlags">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">POINTER_FLAGS</a></b> May be any reasonable combination of flags from the <a href="https://docs.microsoft.com/windows/win32/inputmsg/pointer-flags-contants">Pointer Flags</a> constants.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.sourceDevice">
            <summary>
            <para>Type: <b>HANDLE</b> Handle to the source device that can be used in calls to the raw input device API and the digitizer device API.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.hwndTarget">
            <summary>
            <para>Type: <b>HWND</b> Window to which this message was targeted. If the pointer is captured, either implicitly by virtue of having made contact over this window or explicitly using the pointer capture API, this is the capture window. If the pointer is uncaptured, this is the window over which the pointer was when this message was generated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.ptPixelLocation">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The predicted screen coordinates of the pointer, in pixels. The predicted value is based on the pointer position reported by the digitizer and the motion of the pointer. This correction can compensate for visual lag due to inherent delays in sensing and processing the pointer location on the digitizer. This is applicable to  pointers of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_TOUCH</a>. For other pointer types, the predicted value will be the same as the non-predicted value (see <b>ptPixelLocationRaw</b>).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.ptHimetricLocation">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The predicted screen coordinates of the pointer, in HIMETRIC units. The predicted value is based on the pointer position reported by the digitizer and the motion of the pointer. This correction can compensate for visual lag due to inherent delays in sensing and processing the pointer location on the digitizer. This is applicable to  pointers of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_TOUCH</a>. For other pointer types, the predicted value will be the same as the non-predicted value (see <b>ptHimetricLocationRaw</b>).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.ptPixelLocationRaw">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The screen coordinates of the pointer, in pixels. For adjusted screen coordinates, see <b>ptPixelLocation</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.ptHimetricLocationRaw">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The screen coordinates of the pointer, in HIMETRIC units. For adjusted screen coordinates, see <b>ptHimetricLocation</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.dwTime">
            <summary>
            <para>Type: <b>DWORD</b> 0 or the time stamp of the message, based on the system tick count when the message was received. The application can specify the input time stamp in either <b>dwTime</b> or <b>PerformanceCount</b>. The value cannot be more recent than the current tick count or <b>QueryPerformanceCount (QPC)</b> value of the injection thread. Once a frame is injected with a time stamp, all subsequent frames must include a timestamp until all contacts in the frame go to an <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ne-winuser-pointer_button_change_type">UP</a> state. The custom timestamp value must also be provided for the first element in the contacts array. The time stamp values after the first element are ignored. The custom timestamp value must increment in every injection frame.</para>
            <para>When <b>PerformanceCount</b> is specified, the time stamp will be converted to the current time in .1 millisecond resolution upon actual injection. If a custom <b>PerformanceCount</b> resulted in the same .1 millisecond window from the previous injection, <b>ERROR_NOT_READY</b> is returned and injection will not occur. While injection will not be invalidated immediately by the error, the next successful injection must have a <b>PerformanceCount</b> value that is at least 0.1 millisecond from the previously successful injection. This is also true if <b>dwTime</b> is used. If both <b>dwTime</b> and <b>PerformanceCount</b> are specified in <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-injecttouchinput">InjectTouchInput</a>, ERROR_INVALID_PARAMETER is returned.</para>
            <para><a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-injecttouchinput">InjectTouchInput</a> cannot switch between <b>dwTime</b> and <b>PerformanceCount</b> once injection has started.</para>
            <para>If neither <b>dwTime</b> and <b>PerformanceCount</b> are specified, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-injecttouchinput">InjectTouchInput</a> allocates the timestamp based on the timing of the call. If <b>InjectTouchInput</b> calls are  repeatedly less than 0.1 millisecond apart, ERROR_NOT_READY might be returned. The error will not invalidate the input immediately, but the injection application needs to retry the same frame again for injection to succeed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.historyCount">
            <summary>
            <para>Type: <b>UINT32</b> Count of inputs that were coalesced into this message. This count matches the total count of entries that can be returned by a call to <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerinfohistory">GetPointerInfoHistory</a>. If no coalescing occurred, this count is 1 for the single input represented by the message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.InputData">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.dwKeyStates">
            <summary>Type: <b>DWORD</b></summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.PerformanceCount">
            <summary>
            <para>Type: <b>UINT64</b> The value of the high-resolution performance counter when the pointer message was received (high-precision, 64 bit alternative to <b>dwTime</b>). The value can be calibrated when the touch digitizer hardware supports the scan timestamp information in its input report.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_INFO.ButtonChangeType">
            <summary>
            <para>Type: <b>POINTER_BUTTON_CHANGE_TYPE</b> A value from the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ne-winuser-pointer_button_change_type">POINTER_BUTTON_CHANGE_TYPE</a> enumeration that specifies the change in button state between this input and the previous input.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO">
            <summary>Defines basic pen information common to all pointer types.</summary>
            <remarks>Applications can retrieve this information using the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerpeninfo">GetPointerPenInfo</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerframepeninfo">GetPointerFramePenInfo</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerpeninfohistory">GetPointerPenInfoHistory</a> and <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerframepeninfohistory">GetPointerFramePenInfoHistory</a> API functions.</remarks>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.pointerInfo">
            <summary>
            <para>Type: <b>POINTER_INFO</b> An embedded <a href="https://docs.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_info">POINTER_INFO</a> structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.penFlags">
            <summary>
            <para>Type: <b>PEN_FLAGS</b> The pen flag. This member can be zero or any reasonable combination of the values from the <a href="https://docs.microsoft.com/windows/win32/inputmsg/pen-flags-constants">Pen Flags</a> constants.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.penMask">
            <summary>
            <para>Type: <b>PEN_MASK</b> The pen mask. This member can be zero or any reasonable combination of the values from the <a href="https://docs.microsoft.com/windows/win32/inputmsg/pen-mask-constants">Pen Mask</a> constants.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.pressure">
            <summary>
            <para>Type: <b>UINT32</b> A pen pressure normalized to a range between 0 and 1024. The default is 0 if the device does not report pressure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.rotation">
            <summary>
            <para>Type: <b>UINT32</b> The clockwise rotation, or twist, of the pointer normalized in a range of 0 to 359. The default is 0.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.tiltX">
            <summary>
            <para>Type: <b>INT32</b> The angle of tilt of the pointer along the x-axis in a range of -90 to +90, with a positive value indicating a tilt to the right. The default is 0.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO.tiltY">
            <summary>
            <para>Type: <b>INT32</b> The angle of tilt of the pointer along the y-axis in a range of -90 to +90, with a positive value indicating a tilt toward the user. The default is 0.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_pen_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO">
            <summary>Defines basic touch information common to all pointer types.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.pointerInfo">
            <summary>
            <para>Type: **[POINTER_INFO](ns-winuser-pointer_info.md)** An embedded [POINTER_INFO](ns-winuser-pointer_info.md) header structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.touchFlags">
            <summary>
            <para>Type: **[Touch Flags](/windows/win32/inputmsg/touch-flags-constants)** Currently none.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.touchMask">
            <summary>
            <para>Type: **[Touch Mask](/windows/win32/inputmsg/touch-mask-constants)** Indicates which of the optional fields contain valid values. The member can be zero or any combination of the values from the [Touch Mask](/windows/win32/inputmsg/touch-mask-constants) constants.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.rcContact">
            <summary>
            <para>Type: **RECT** The predicted screen coordinates of the contact area, in pixels. By default, if the device does not report a contact area, this field defaults to a 0-by-0 rectangle centered around the pointer location. The predicted value is based on the pointer position reported by the digitizer and the motion of the pointer. This correction can compensate for visual lag due to inherent delays in sensing and processing the pointer location on the digitizer. This is applicable to  pointers of type [PT_TOUCH](ne-winuser-tagpointer_input_type.md).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.rcContactRaw">
            <summary>
            <para>Type: **RECT** The raw screen coordinates of the contact area, in pixels. For adjusted screen coordinates, see **rcContact**.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.orientation">
            <summary>
            <para>Type: **UINT32** A pointer orientation, with a value between 0 and 359, where 0 indicates a touch pointer aligned with the x-axis and pointing from left to right; increasing values indicate degrees of rotation in the clockwise direction. This field defaults to 0 if the device does not report orientation. > [!NOTE] > Some touchscreen devices that support orientation will only report half-range (0-180°) values, while other devices will only report full-range (0-359°) values.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO.pressure">
            <summary>
            <para>Type: **UINT32** A pen pressure normalized to a range between 0 and 1024. The default is 512.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-pointer_touch_info#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.PropertiesSystem.PROPERTYKEY">
            <summary>Specifies the FMTID/PID identifier that programmatically identifies a property. Replaces SHCOLUMNID.</summary>
            <remarks>
            <para>As of Windows Vista, the <a href="https://docs.microsoft.com/windows/desktop/shell/objects">SHCOLUMNID</a> structure is simply an alias for <a href="https://docs.microsoft.com/windows/desktop/api/wtypes/ns-wtypes-propertykey">PROPERTYKEY</a>, as shown in this declaration from Shobjidl.h.</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypes/ns-wtypes-propertykey#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.PropertiesSystem.PROPERTYKEY.fmtid">
            <summary>
            <para>Type: <b>GUID</b> A unique GUID for the property.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypes/ns-wtypes-propertykey#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.PropertiesSystem.PROPERTYKEY.pid">
            <summary>
            <para>Type: <b>DWORD</b> A property identifier (PID). This parameter is not used as in <a href="https://docs.microsoft.com/windows/desktop/shell/objects">SHCOLUMNID</a>. It is recommended that you set this value to PID_FIRST_USABLE. Any value greater than or equal to 2 is acceptable. <div class="alert"><b>Note</b>  Values of 0 and 1 are reserved and should not be used.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypes/ns-wtypes-propertykey#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.SHDRAGIMAGE">
            <summary>Contains the information needed to create a drag image.</summary>
            <remarks>
            <para>In Windows Vista this structure is defined in Shobjidl.idl. Prior to that, it was defined in Shlobj.h. Use the following procedure to create the drag image. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ns-shobjidl_core-shdragimage#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHDRAGIMAGE.sizeDragImage">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-size">SIZE</a></b> A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-size">SIZE</a> structure with the length and width of the drag image.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ns-shobjidl_core-shdragimage#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHDRAGIMAGE.ptOffset">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a> structure that specifies the location of the cursor within the drag image. The structure should contain the offset from the upper-left corner of the drag image to the location of the cursor.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ns-shobjidl_core-shdragimage#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHDRAGIMAGE.hbmpDragImage">
            <summary>
            <para>Type: <b>HBITMAP</b> The drag image's bitmap handle.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ns-shobjidl_core-shdragimage#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHDRAGIMAGE.crColorKey">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/gdi/colorref">COLORREF</a></b> The color used by the control to fill the background of the drag image.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ns-shobjidl_core-shdragimage#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.SHFILEINFOW">
            <summary>Contains information about a file object. (Unicode)</summary>
            <remarks>
            <para>This structure is used with the <a href="https://docs.microsoft.com/windows/desktop/api/shellapi/nf-shellapi-shgetfileinfoa">SHGetFileInfo</a> function.</para>
            <para>> [!NOTE] > The shellapi.h header defines SHFILEINFO 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/shellapi/ns-shellapi-shfileinfow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHFILEINFOW.hIcon">
            <summary>
            <para>Type: <b>HICON</b> A handle to the icon that represents the file. You are responsible for destroying this handle with <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-destroyicon">DestroyIcon</a> when you no longer need it.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/ns-shellapi-shfileinfow#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHFILEINFOW.iIcon">
            <summary>
            <para>Type: <b>int</b> The index of the icon image within the system image list.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/ns-shellapi-shfileinfow#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHFILEINFOW.dwAttributes">
            <summary>
            <para>Type: <b>DWORD</b> An array of values that indicates the attributes of the file object. For information about these values, see the <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellfolder-getattributesof">IShellFolder::GetAttributesOf</a> method.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/ns-shellapi-shfileinfow#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHFILEINFOW.szDisplayName">
            <summary>
            <para>Type: <b>TCHAR[MAX_PATH]</b> A string that contains the name of the file as it appears in the Windows Shell, or the path and file name of the file that contains the icon representing the file.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/ns-shellapi-shfileinfow#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SHFILEINFOW.szTypeName">
            <summary>
            <para>Type: <b>TCHAR[80]</b> A string that describes the type of file.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/ns-shellapi-shfileinfow#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.SIGDN">
            <summary>Requests the form of an item's display name to retrieve through IShellItem::GetDisplayName and SHGetNameFromIDList.</summary>
            <remarks>
            <para>Different forms of an item's name can be retrieved through the item's properties, including those listed here. Note that not all properties are present on all items, so only those appropriate to the item will appear.</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-sigdn#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_NORMALDISPLAY">
            <summary>0x00000000. Returns the display name relative to the parent folder. In UI this name is generally ideal for display to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_PARENTRELATIVEPARSING">
            <summary>(int)0x80018001. Returns the parsing name relative to the parent folder. This name is not suitable for use in UI.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_DESKTOPABSOLUTEPARSING">
            <summary>(int)0x80028000. Returns the parsing name relative to the desktop. This name is not suitable for use in UI.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_PARENTRELATIVEEDITING">
            <summary>(int)0x80031001. Returns the editing name relative to the parent folder. In UI this name is suitable for display to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_DESKTOPABSOLUTEEDITING">
            <summary>(int)0x8004c000. Returns the editing name relative to the desktop. In UI this name is suitable for display to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_FILESYSPATH">
            <summary>(int)0x80058000. Returns the item's file system path, if it has one. Only items that report <a href="https://docs.microsoft.com/windows/desktop/shell/sfgao">SFGAO_FILESYSTEM</a> have a file system path. When an item does not have a file system path, a call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellitem-getdisplayname">IShellItem::GetDisplayName</a> on that item will fail. In UI this name is suitable for display to the user in some cases, but note that it might not be specified for all items.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_URL">
            <summary>(int)0x80068000. Returns the item's URL, if it has one. Some items do not have a URL, and in those cases a call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellitem-getdisplayname">IShellItem::GetDisplayName</a> will fail. This name is suitable for display to the user in some cases, but note that it might not be specified for all items.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_PARENTRELATIVEFORADDRESSBAR">
            <summary>(int)0x8007c001. Returns the path relative to the parent folder in a friendly format as displayed in an address bar. This name is suitable for display to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_PARENTRELATIVE">
            <summary>(int)0x80080001. Returns the path relative to the parent folder.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.SIGDN.SIGDN_PARENTRELATIVEFORUI">
            <summary>(int)0x80094001. <b>Introduced in Windows 8</b>.</summary>
        </member>
        <member name="P:Windows.Win32.IComIID.Guid">
            <summary>The IID guid for this interface.</summary>
            <remarks>The <see cref="P:Windows.Win32.IComIID.Guid" /> reference that is returned comes from a permanent memory address, and is therefore safe to convert to a pointer and pass around or hold long-term.</remarks>
        </member>
        <member name="T:Windows.Win32.IVTable">
            <summary>
            Non generic interface that allows constraining against a COM wrapper type directly. COM structs should
            implement <see cref="T:Windows.Win32.IVTable`2"/>.
            </summary>
        </member>
        <member name="T:Windows.Win32.PInvoke">
            <content>
            Contains extern methods from "COMCTL32.dll".
            </content>
            <content>
            Contains extern methods from "GDI32.dll".
            </content>
            <content>
            Contains extern methods from "KERNEL32.dll".
            </content>
            <content>
            Contains extern methods from "OLE32.dll".
            </content>
            <content>
            Contains extern methods from "SHELL32.dll".
            </content>
            <content>
            Contains extern methods from "urlmon.dll".
            </content>
            <content>
            Contains extern methods from "USER32.dll".
            </content>
        </member>
        <member name="M:Windows.Win32.PInvoke.ImageList_Destroy(Windows.Win32.UI.Controls.HIMAGELIST)">
            <summary>Destroys an image list.</summary>
            <param name="himl">
            <para>Type: <b>HIMAGELIST</b> A handle to the image list to destroy.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-imagelist_destroy#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">BOOL</a></b> Returns nonzero if successful, or zero otherwise.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-imagelist_destroy">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <!-- Badly formed XML comment ignored for member "F:Windows.Win32.PInvoke.WM_LBUTTONDOWN" -->
        <member name="F:Windows.Win32.PInvoke.WM_LBUTTONUP">
            <summary>Posted when the user releases the left mouse button while the cursor is in the client area of a window.</summary>
            <returns>If an application processes this message, it should return zero.</returns>
            <remarks>
            <para>Use the following code to obtain the horizontal and vertical position:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputdev/wm-lbuttonup#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERWHEEL">
            <summary>Posted to the window with foreground keyboard focus when a scroll wheel is rotated.</summary>
            <returns>
            <para>If the application processes this message, it should return zero. If the application does not process this message, it should call [**DefWindowProc**](/windows/win32/api/winuser/nf-winuser-defwindowproca).</para>
            </returns>
            <remarks>
            <para>To retrieve the wheel scroll units, use the **inputData** filed of the [**POINTER_INFO**](/windows/win32/api/winuser/ns-winuser-pointer_info) structure returned by calling [**GetPointerInfo**](/windows/win32/api/winuser/ns-winuser-pointer_info) function. This field contains a signed value and is expressed in a multiple of **WHEEL_DELTA**. A positive value indicates a rotation forward and a negative value indicates a rotation backward. Note that the wheel inputs may be delivered even if the mouse cursor is located outside of application s window. The wheel messages are delivered in a way very similar to the keyboard inputs. The focus window of the foregournd message queue receives the wheel messages.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerwheel#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERHWHEEL">
            <summary>Posted to the window with foreground keyboard focus when a horizontal scroll wheel is rotated.</summary>
            <returns>
            <para>If the application processes this message, it should return zero. If the application does not process this message, it should call [**DefWindowProc**](/windows/win32/api/winuser/nf-winuser-defwindowproca).</para>
            </returns>
            <remarks>
            <para>To retrieve the wheel scroll units, use the **inputData** filed of the [**POINTER_INFO**](/windows/win32/api/winuser/ns-winuser-pointer_info) structure returned by calling [**GetPointerInfo**](/windows/win32/api/winuser/ns-winuser-pointer_info) function. This field contains a signed value and is expressed in a multiple of **WHEEL_DELTA**. A positive value indicates a rotation forward and a negative value indicates a rotation backward. Note that the wheel inputs may be delivered even if the mouse cursor is located outside of application s window. The wheel messages are delivered in a way very similar to the keyboard inputs. The focus window of the foregournd message queue receives the wheel messages.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerhwheel#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DeleteObject(Windows.Win32.Graphics.Gdi.HGDIOBJ)">
            <summary>The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object. After the object is deleted, the specified handle is no longer valid.</summary>
            <param name="ho">A handle to a logical pen, brush, font, bitmap, region, or palette.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the specified handle is not valid or is currently selected into a DC, the return value is zero.</para>
            </returns>
            <remarks>
            <para>Do not delete a drawing object (pen or brush) while it is still selected into a DC. When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wingdi/nf-wingdi-deleteobject#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DeleteEnhMetaFile(Windows.Win32.Graphics.Gdi.HENHMETAFILE)">
            <summary>The DeleteEnhMetaFile function deletes an enhanced-format metafile or an enhanced-format metafile handle.</summary>
            <param name="hmf">A handle to an enhanced metafile.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero.</para>
            </returns>
            <remarks>If the <i>hemf</i> parameter identifies an enhanced metafile stored in memory, the <b>DeleteEnhMetaFile</b> function deletes the metafile. If <i>hemf</i> identifies a metafile stored on a disk, the function deletes the metafile handle but does not destroy the actual metafile. An application can retrieve the file by calling the <a href="https://docs.microsoft.com/windows/desktop/api/wingdi/nf-wingdi-getenhmetafilea">GetEnhMetaFile</a> function.</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 docs.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 docs.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 docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalFree_SafeHandle(Windows.Win32.Foundation.HGLOBAL)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalFree(Windows.Win32.Foundation.HGLOBAL)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalFree(Windows.Win32.Foundation.HGLOBAL)">
            <summary>Frees the specified global memory object and invalidates its handle.</summary>
            <param name="hMem">
            <para>A handle to the global memory object. This handle is returned by either the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalalloc">GlobalAlloc</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function. It is not safe to free memory allocated with <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-localalloc">LocalAlloc</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalfree#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is <b>NULL</b>. If the function fails, the return value is equal to a handle to the global memory object. 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>If the process examines or modifies the memory after it has been freed, heap corruption may occur or an access violation exception (EXCEPTION_ACCESS_VIOLATION) may be generated. The <b>GlobalFree</b> function will free a locked memory object. A locked memory object has a lock count greater than zero. The <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globallock">GlobalLock</a> function locks a global memory object and increments the lock count by one. The <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalunlock">GlobalUnlock</a> function unlocks it and decrements the lock count by one. To get the lock count of a global memory object, use the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalflags">GlobalFlags</a> function. If an application is running under a debug version of the system, <b>GlobalFree</b> will issue a message that tells you that a locked object is being freed. If you are debugging the application, <b>GlobalFree</b> will enter a breakpoint just before freeing a locked object. This allows you to verify the intended behavior, then continue execution.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalfree#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalAlloc_SafeHandle(Windows.Win32.System.Memory.GLOBAL_ALLOC_FLAGS,System.UIntPtr)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalAlloc(Windows.Win32.System.Memory.GLOBAL_ALLOC_FLAGS,System.UIntPtr)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalAlloc(Windows.Win32.System.Memory.GLOBAL_ALLOC_FLAGS,System.UIntPtr)">
            <summary>Allocates the specified number of bytes from the heap. (GlobalAlloc)</summary>
            <param name="uFlags"></param>
            <param name="dwBytes">The number of bytes to allocate. If this parameter is zero and the <i>uFlags</i> parameter specifies <b>GMEM_MOVEABLE</b>, the function returns a handle to a memory object that is marked as discarded.</param>
            <returns>
            <para>If the function succeeds, the return value is a handle to the newly allocated memory object. If the function fails, the return value is <b>NULL</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>Windows memory management does not provide a separate local heap and global heap. Therefore, the <b>GlobalAlloc</b> and <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-localalloc">LocalAlloc</a> functions are essentially the same. The movable-memory flags <b>GHND</b> and <b>GMEM_MOVABLE</b> add unnecessary overhead and require locking to be used safely. They should be avoided unless documentation specifically states that they should be used. New applications should use the <a href="https://docs.microsoft.com/windows/desktop/Memory/heap-functions">heap functions</a> to allocate and manage memory unless the documentation specifically states that a global function should be used. For example, the global functions are still used with Dynamic Data Exchange (DDE), the clipboard functions, and OLE data objects. If the <b>GlobalAlloc</b> function succeeds, it allocates at least the amount of memory requested. If the actual amount allocated is greater than the amount requested, the process can use the entire amount. To determine the actual number of bytes allocated, use the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalsize">GlobalSize</a> function. If the heap does not contain sufficient free space to satisfy the request, <b>GlobalAlloc</b> returns <b>NULL</b>. Because <b>NULL</b> is used to indicate an error, virtual address zero is never allocated. It is, therefore, easy to detect the use of a <b>NULL</b> pointer. Memory allocated with this function is guaranteed to be aligned on an 8-byte boundary. To execute dynamically generated code, use the <a href="https://docs.microsoft.com/windows/desktop/api/memoryapi/nf-memoryapi-virtualalloc">VirtualAlloc</a> function to allocate memory and the <a href="https://docs.microsoft.com/windows/desktop/api/memoryapi/nf-memoryapi-virtualprotect">VirtualProtect</a> function to grant  <b>PAGE_EXECUTE</b> access. To free the memory, use the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalfree">GlobalFree</a> function. It is not safe to free memory allocated with <b>GlobalAlloc</b> using <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-localfree">LocalFree</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalalloc#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalLock(System.Runtime.InteropServices.SafeHandle)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalLock(Windows.Win32.Foundation.HGLOBAL)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalLock(Windows.Win32.Foundation.HGLOBAL)">
            <summary>Locks a global memory object and returns a pointer to the first byte of the object's memory block.</summary>
            <param name="hMem">
            <para>A handle to the global memory object. This handle is returned by either the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalalloc">GlobalAlloc</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globallock#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is a pointer to the first byte of the memory block. If the function fails, the return value is <b>NULL</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>The internal data structures for each memory object include a lock count that is initially zero. For movable memory objects, <b>GlobalLock</b> increments the count by one, and the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalunlock">GlobalUnlock</a> function decrements the count by one. Each successful call that a process makes to <b>GlobalLock</b> for an object must be matched by a corresponding call to <b>GlobalUnlock</b>. Locked memory will not be moved or discarded, unless the memory object is reallocated by using the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function. The memory block of a locked memory object remains locked until its lock count is decremented to zero, at which time it can be moved or discarded. Memory objects allocated with <b>GMEM_FIXED</b> always have a lock count of zero. For these objects, the value of the returned pointer is equal to the value of the specified handle. If the specified memory block has been discarded or if the memory block has a zero-byte size, this function returns <b>NULL</b>. Discarded objects always have a lock count of zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globallock#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalUnlock(System.Runtime.InteropServices.SafeHandle)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalUnlock(Windows.Win32.Foundation.HGLOBAL)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalUnlock(Windows.Win32.Foundation.HGLOBAL)">
            <summary>Decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE.</summary>
            <param name="hMem">
            <para>A handle to the global memory object. This handle is returned by either the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalalloc">GlobalAlloc</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalunlock#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the memory object is still locked after decrementing the lock count, the return value is a nonzero value. If the memory object is unlocked after decrementing the lock count, the function returns zero and <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns <b>NO_ERROR</b>. If the function fails, the return value is zero and <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> returns a value other than <b>NO_ERROR</b>.</para>
            </returns>
            <remarks>
            <para>The internal data structures for each memory object include a lock count that is initially zero. For movable memory objects, the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globallock">GlobalLock</a> function increments the count by one, and <b>GlobalUnlock</b> decrements the count by one. For each call that a process makes to <b>GlobalLock</b> for an object, it must eventually call <b>GlobalUnlock</b>. Locked memory will not be moved or discarded, unless the memory object is reallocated by using the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function. The memory block of a locked memory object remains locked until its lock count is decremented to zero, at which time it can be moved or discarded. Memory objects allocated with <b>GMEM_FIXED</b> always have a lock count of zero. If the specified memory block is fixed memory, this function returns <b>TRUE</b>. If the memory object is already unlocked, <b>GlobalUnlock</b> returns <b>FALSE</b> and <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> reports <b>ERROR_NOT_LOCKED</b>. A process should not rely on the return value to determine the number of times it must subsequently call <b>GlobalUnlock</b> for a memory object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalunlock#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalSize(System.Runtime.InteropServices.SafeHandle)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GlobalSize(Windows.Win32.Foundation.HGLOBAL)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GlobalSize(Windows.Win32.Foundation.HGLOBAL)">
            <summary>Retrieves the current size of the specified global memory object, in bytes.</summary>
            <param name="hMem">
            <para>A handle to the global memory object. This handle is returned by either the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalalloc">GlobalAlloc</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalrealloc">GlobalReAlloc</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalsize#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is the size of the specified global memory object, in bytes. If the specified handle is not valid or if the object has been discarded, 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>The size of a memory block may be larger than the size requested when the memory was allocated. To verify that the specified object's memory block has not been discarded, use the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalflags">GlobalFlags</a> function before calling <b>GlobalSize</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalsize#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CoCreateInstance``1(System.Guid@,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.CLSCTX,``0*@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CoCreateInstance(System.Guid*,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.CLSCTX,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CoCreateInstance(System.Guid@,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.CLSCTX,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CoCreateInstance(System.Guid*,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.CLSCTX,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CoCreateInstance(System.Guid*,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.CLSCTX,System.Guid*,System.Void**)">
            <summary>Creates a single uninitialized object of the class associated with a specified CLSID.</summary>
            <param name="rclsid">The CLSID associated with the data and code that will be used to create the object.</param>
            <param name="pUnkOuter">If <b>NULL</b>, indicates that the object is not being created as part of an aggregate. If non-<b>NULL</b>, pointer to the aggregate object's <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> interface (the controlling <b>IUnknown</b>).</param>
            <param name="dwClsContext">Context in which the code that manages the newly created object will run. The values are taken from the enumeration <a href="https://docs.microsoft.com/windows/desktop/api/wtypesbase/ne-wtypesbase-clsctx">CLSCTX</a>.</param>
            <param name="riid">A reference to the identifier of the interface to be used to communicate with the object.</param>
            <param name="ppv">Address of pointer variable that receives the interface pointer requested in <i>riid</i>. Upon successful return, *<i>ppv</i> contains the requested interface pointer. Upon failure, *<i>ppv</i> contains <b>NULL</b>.</param>
            <returns>
            <para>This function can return the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The <b>CoCreateInstance</b> function provides a convenient shortcut by connecting to the class object associated with the specified CLSID, creating a default-initialized instance, and releasing the class object. As such, it encapsulates the following functionality:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.RegisterDragDrop(Windows.Win32.Foundation.HWND,Windows.Win32.System.Ole.IDropTarget*)">
            <summary>Registers the specified window as one that can be the target of an OLE drag-and-drop operation and specifies the IDropTarget instance to use for drop operations.</summary>
            <param name="hwnd">Handle to a window that can be a target for an OLE drag-and-drop operation.</param>
            <param name="pDropTarget">Pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idroptarget">IDropTarget</a> interface on the object that is to be the target of a drag-and-drop operation in a specified window. This interface is used to communicate OLE drag-and-drop information for that window.</param>
            <returns>
            <para>This function returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>If your application can accept dropped objects during OLE drag-and-drop operations, you must call the <b>RegisterDragDrop</b> function. Do this whenever one of your application windows is available as a potential drop target, i.e., when the window appears unobscured on the screen. The application thread that calls the <b>RegisterDragDrop</b> function must be pumping messages, presumably by calling the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/fax/-mfax-faxaccountincomingarchive-getmessage-vb">GetMessage</a> function with a <b>NULL</b><i>hWnd</i> parameter, because OLE creates windows on the thread that need messages processed. If this requirement is not met, any application that drags an object over the window that is registered as a drop target will hang until the target application closes. The <b>RegisterDragDrop</b> function only registers one window at a time, so you must call it for each application window capable of accepting dropped objects. As the mouse passes over unobscured portions of the target window during an OLE drag-and-drop operation, the <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-dodragdrop">DoDragDrop</a> function calls the specified <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-dragover">IDropTarget::DragOver</a> method for the current window. When a drop operation actually occurs in a given window, the <b>DoDragDrop</b> function calls <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nf-oleidl-idroptarget-drop">IDropTarget::Drop</a>. The <b>RegisterDragDrop</b> function also calls the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-addref">IUnknown::AddRef</a> method on the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idroptarget">IDropTarget</a> pointer.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ole2/nf-ole2-registerdragdrop#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.OleInitialize">
            <inheritdoc cref="M:Windows.Win32.PInvoke.OleInitialize(System.Void*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.OleInitialize(System.Void*)">
            <summary>Initializes the COM library on the current apartment, identifies the concurrency model as single-thread apartment (STA), and enables additional functionality described in the Remarks section below.</summary>
            <param name="pvReserved">This parameter is reserved and must be <b>NULL</b>.</param>
            <returns>
            <para>This function returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Applications that use the following functionality must call <b>OleInitialize</b> before calling any other function in the COM library:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ole2/nf-ole2-oleinitialize#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.OleUninitialize">
            <summary>Closes the COM library on the apartment, releases any class factories, other COM objects, or servers held by the apartment, disables RPC on the apartment, and frees any resources the apartment maintains.</summary>
            <remarks>
            <para>Call <b>OleUninitialize</b> on application shutdown, as the last COM library call, if the apartment was initialized with a call to <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-oleinitialize">OleInitialize</a>. <b>OleUninitialize</b> calls the <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-couninitialize">CoUninitialize</a> function internally to shut down the OLE Component Object(COM) Library. If the COM library was initialized on the apartment with a call to <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-coinitialize">CoInitialize</a> or <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coinitializeex">CoInitializeEx</a>, it must be closed with a call to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-couninitialize">CoUninitialize</a>. The <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-oleinitialize">OleInitialize</a> and <b>OleUninitialize</b> calls must be balanced. If there are multiple calls to the <b>OleInitialize</b> function, there must be the same number of calls to <b>OleUninitialize</b>; only the <b>OleUninitialize</b> call corresponding to the <b>OleInitialize</b> call that actually initialized the library can close it. Because there is no way to control the order in which in-process servers are loaded or unloaded, do not call <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-oleinitialize">OleInitialize</a> or <b>OleUninitialize</b> from the <a href="https://docs.microsoft.com/windows/desktop/Dlls/dllmain">DllMain</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ole2/nf-ole2-oleuninitialize#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CoTaskMemFree(System.Void*)">
            <summary>Frees a block of task memory previously allocated through a call to the CoTaskMemAlloc or CoTaskMemRealloc function.</summary>
            <param name="pv">A pointer to the memory block to be freed. If this parameter is <b>NULL</b>, the function has no effect.</param>
            <remarks>
            <para>The <b>CoTaskMemFree</b> function uses the default OLE allocator. The number of bytes freed equals the number of bytes that were originally allocated or reallocated. After the call, the memory block pointed to by pv is invalid and can no longer be used.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-cotaskmemfree#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateStreamOnHGlobal(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Foundation.BOOL,Windows.Win32.System.Com.IStream**)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CreateStreamOnHGlobal(Windows.Win32.Foundation.HGLOBAL,Windows.Win32.Foundation.BOOL,Windows.Win32.System.Com.IStream**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateStreamOnHGlobal(Windows.Win32.Foundation.HGLOBAL,Windows.Win32.Foundation.BOOL,Windows.Win32.System.Com.IStream**)">
            <summary>Creates a stream object that uses an HGLOBAL memory handle to store the stream contents.</summary>
            <param name="hGlobal">A memory handle allocated by the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalalloc">GlobalAlloc</a> function, or if <b>NULL</b> a new handle is to be allocated instead. The handle must be allocated as moveable and nondiscardable.</param>
            <param name="fDeleteOnRelease">A value that indicates whether the underlying handle for this stream object should be automatically freed when the stream object is released. If set to <b>FALSE</b>, the caller must free the <i>hGlobal</i> after the final release. If set to <b>TRUE</b>, the final release will automatically free the underlying handle. See the Remarks for further discussion of the case where <i>fDeleteOnRelease</i> is <b>FALSE</b>.</param>
            <param name="ppstm">
            <para>The address of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-istream">IStream</a>* pointer variable that receives the interface pointer to the new stream object. Its value cannot be <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-createstreamonhglobal#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>This function supports the standard return values E_INVALIDARG and E_OUTOFMEMORY, as well as the following.</returns>
            <remarks>
            <para>If <i>hGlobal</i> is <b>NULL</b>, the function allocates a new memory handle and the stream is initially empty. If <i>hGlobal</i> is not <b>NULL</b>, the initial contents of the stream are the current contents of the memory block. Thus, <b>CreateStreamOnHGlobal</b> can be used to open an existing stream in memory. The memory handle and its contents are undisturbed by the creation of the new stream object. The initial size of the stream is the size of <i>hGlobal</i> as returned by the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-globalsize">GlobalSize</a> function. Because of rounding, this is not necessarily the same size that was originally allocated for the handle. If the logical size of the stream is important, follow the call to this function with a call to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-istream-setsize">IStream::SetSize</a> method. The new stream object’s initial seek position is the beginning of the stream. After creating the stream object with <b>CreateStreamOnHGlobal</b>, call <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-gethglobalfromstream">GetHGlobalFromStream</a> to retrieve the memory handle associated with the stream object. If a memory handle is passed to  <b>CreateStreamOnHGlobal</b> or if <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-gethglobalfromstream">GetHGlobalFromStream</a> is called, the memory handle of this function can be directly accessed by the caller while it is still in use by the stream object. Appropriate caution should be exercised in the use of this capability and its implications: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/nf-combaseapi-createstreamonhglobal#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DoDragDrop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.Ole.IDropSource*,Windows.Win32.System.Ole.DROPEFFECT,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.DoDragDrop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.Ole.IDropSource*,Windows.Win32.System.Ole.DROPEFFECT,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.DoDragDrop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.Ole.IDropSource*,Windows.Win32.System.Ole.DROPEFFECT,Windows.Win32.System.Ole.DROPEFFECT*)">
            <summary>Carries out an OLE drag and drop operation.</summary>
            <param name="pDataObj">Pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a> interface on a data object that contains the data being dragged.</param>
            <param name="pDropSource">Pointer to an implementation of the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idropsource">IDropSource</a> interface, which is used to communicate with the source during the drag operation.</param>
            <param name="dwOKEffects">Effects the source allows in the OLE drag-and-drop operation. Most significant is whether it permits a move. The <i>dwOKEffect</i> and <i>pdwEffect</i> parameters obtain values from the <a href="https://docs.microsoft.com/windows/desktop/com/dropeffect-constants">DROPEFFECT</a> enumeration. For a list of values, see <b>DROPEFFECT</b>.</param>
            <param name="pdwEffect">Pointer to a value that indicates how the OLE drag-and-drop operation affected the source data. The <i>pdwEffect</i> parameter is set only if the operation is not canceled.</param>
            <returns>
            <para>This function returns S_OK on success. Other possible values include the following. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>If you are developing an application that can act as a data source for an OLE drag-and-drop operation, you must call <b>DoDragDrop</b> when you detect that the user has started an OLE drag-and-drop operation.</para>
            <para>The <b>DoDragDrop</b> function enters a loop in which it calls various methods in the <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idropsource">IDropSource</a> and <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idroptarget">IDropTarget</a> interfaces. (For a successful drag-and-drop operation, the application acting as the data source must also implement <b>IDropSource</b>, while the target application must implement <b>IDropTarget</b>.) </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ole2/nf-ole2-dodragdrop#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.ReleaseStgMedium(Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.ReleaseStgMedium(Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.ReleaseStgMedium(Windows.Win32.System.Com.STGMEDIUM*)">
            <summary>Frees the specified storage medium.</summary>
            <remarks>
            <para>The <b>ReleaseStgMedium</b> function calls the appropriate method or function to release the specified storage medium. Use this function during data transfer operations where storage medium structures are parameters, such as <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-setdata">IDataObject::SetData</a>. In addition to identifying the type of the storage medium, this structure specifies the appropriate <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">Release</a> method for releasing the storage medium when it is no longer needed. It is common to pass a <a href="https://docs.microsoft.com/windows/win32/api/objidl/ns-objidl-ustgmedium-r1">STGMEDIUM</a> from one body of code to another, such as in <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nf-objidl-idataobject-getdata">IDataObject::GetData</a>, in which the one called can allocate a medium and return it to the caller. <b>ReleaseStgMedium</b> permits flexibility in whether the receiving body of code owns the medium, or whether the original provider of the medium still owns it, in which case the receiving code needs to inform the provider that it can free the medium. When the original provider of the medium is responsible for freeing the medium, the provider calls <b>ReleaseStgMedium</b>, specifying the medium and the appropriate <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> pointer as the <b>punkForRelease</b> structure member. Depending on the type of storage medium being freed, one of the following actions is taken, followed by a call to the <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nf-unknwn-iunknown-release">IUnknown::Release</a> method on the specified <b>IUnknown</b> pointer. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ole2/nf-ole2-releasestgmedium#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHCreateShellItemArrayFromDataObject(Windows.Win32.System.Com.IDataObject*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SHCreateShellItemArrayFromDataObject(Windows.Win32.System.Com.IDataObject*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHCreateShellItemArrayFromDataObject(Windows.Win32.System.Com.IDataObject*,System.Guid*,System.Void**)">
            <summary>Creates a Shell item array object from a data object.</summary>
            <param name="pdo">
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a>*</b> A pointer to <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-idataobject">IDataObject</a> interface.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromdataobject#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="riid">
            <para>Type: <b>REFIID</b> A reference to the desired interface ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromdataobject#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ppv">
            <para>Type: <b>void**</b> When this method returns, contains the interface pointer requested in <i>riid</i>. This is typically <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitemarray">IShellItemArray</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromdataobject#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HRESULT</b> If this function succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
            </returns>
            <remarks>
            <para>This function is useful for Shell extensions that implement <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellextinit">IShellExtInit</a> and are passed a data object to the <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellextinit-initialize">IShellExtInit::Initialize</a> method; for example, context menu handlers. This API lets you convert the data object into a Shell item that the handler can consume. It is recommend that handlers use a Shell item array rather than clipboard formats like <b>CF_HDROP</b> and <b>CFSTR_SHELLIDLIST</b> (also known as HIDA) as it leads to simpler code and allows some performance improvements. The resulting shell item array holds a reference to the source data object.  Therefore, that data object must remain valid for the lifetime of the shell item array.  Notably, the data objects passed to <a href="https://docs.microsoft.com/windows/desktop/api/oleidl/nn-oleidl-idroptarget">IDropTarget</a> methods are no longer valid after the drop operation completes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-shcreateshellitemarrayfromdataobject#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHCreateStdEnumFmtEtc(System.ReadOnlySpan{Windows.Win32.System.Com.FORMATETC},Windows.Win32.System.Com.IEnumFORMATETC**)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SHCreateStdEnumFmtEtc(System.UInt32,Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.IEnumFORMATETC**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHCreateStdEnumFmtEtc(System.UInt32,Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.IEnumFORMATETC**)">
            <summary>SHCreateStdEnumFmtEtc may be altered or unavailable.</summary>
            <param name="cfmt">
            <para>Type: <b>UINT</b> The number of entries in the <i>afmt</i> array.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatestdenumfmtetc#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="afmt">
            <para>Type: <b>const <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a>[]</b> An array of <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ns-objidl-formatetc">FORMATETC</a> structures that specifies the clipboard formats of interest.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatestdenumfmtetc#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ppenumFormatEtc">
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a>**</b> When this function returns successfully, receives an <a href="https://docs.microsoft.com/windows/desktop/api/objidl/nn-objidl-ienumformatetc">IEnumFORMATETC</a> interface pointer. Receives <b>NULL</b> on failure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatestdenumfmtetc#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HRESULT</b> If this function succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/nf-shlobj_core-shcreatestdenumfmtetc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHGetFileInfo(System.String,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,Windows.Win32.UI.Shell.SHFILEINFOW*,System.UInt32,Windows.Win32.UI.Shell.SHGFI_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SHGetFileInfo(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,Windows.Win32.UI.Shell.SHFILEINFOW*,System.UInt32,Windows.Win32.UI.Shell.SHGFI_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHGetFileInfo(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES,Windows.Win32.UI.Shell.SHFILEINFOW*,System.UInt32,Windows.Win32.UI.Shell.SHGFI_FLAGS)">
            <summary>Retrieves information about an object in the file system, such as a file, folder, directory, or drive root. (Unicode)</summary>
            <param name="pszPath">
            <para>Type: <b>LPCTSTR</b> A pointer to a <b>null</b>-terminated string of maximum length MAX_PATH that contains the path and file name. Both absolute and relative paths are valid.</para>
            <para>If the <i>uFlags</i> parameter includes the <b>SHGFI_PIDL</b> flag, this parameter must be the address of an <a href="https://docs.microsoft.com/windows/desktop/api/shtypes/ns-shtypes-itemidlist">ITEMIDLIST</a> (PIDL) structure that contains the list of item identifiers that uniquely identifies the file within the Shell's namespace. The PIDL must be a fully qualified PIDL. Relative PIDLs are not allowed. If the <i>uFlags</i> parameter includes the <b>SHGFI_USEFILEATTRIBUTES</b> flag, this parameter does not have to be a valid file name. The function will proceed as if the file exists with the specified name and with the file attributes passed in the <i>dwFileAttributes</i> parameter. This allows you to obtain information about a file type by passing just the extension for <i>pszPath</i> and passing <b>FILE_ATTRIBUTE_NORMAL</b> in <i>dwFileAttributes</i>. This string can use either short (the 8.3 form) or long file names.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetfileinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwFileAttributes">
            <para>Type: <b>DWORD</b> A combination of one or more <a href="https://docs.microsoft.com/windows/desktop/FileIO/retrieving-and-changing-file-attributes">file attribute flags</a> (FILE_ATTRIBUTE_ values as defined in Winnt.h). If <i>uFlags</i> does not include the <b>SHGFI_USEFILEATTRIBUTES</b> flag, this parameter is ignored.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetfileinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="psfi">
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shellapi/ns-shellapi-shfileinfoa">SHFILEINFO</a>*</b> Pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/shellapi/ns-shellapi-shfileinfoa">SHFILEINFO</a> structure to receive the file information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetfileinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="cbFileInfo">
            <para>Type: <b>UINT</b> The size, in bytes, of the <a href="https://docs.microsoft.com/windows/desktop/api/shellapi/ns-shellapi-shfileinfoa">SHFILEINFO</a> structure pointed to by the <i>psfi</i> parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetfileinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="uFlags">Type: <b>UINT</b></param>
            <returns>
            <para>Type: <b>DWORD_PTR</b> Returns a value whose meaning depends on the <i>uFlags</i> parameter.</para>
            <para>If <i>uFlags</i> does not contain <b>SHGFI_EXETYPE</b> or <b>SHGFI_SYSICONINDEX</b>, the return value is nonzero if successful, or zero otherwise. If <i>uFlags</i> contains the <b>SHGFI_EXETYPE</b> flag, the return value specifies the type of the executable file. It will be one of the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>You should call this function from a background thread. Failure to do so could cause the UI to stop responding. If <b>SHGetFileInfo</b> returns an icon handle in the <b>hIcon</b> member of the <a href="https://docs.microsoft.com/windows/desktop/api/shellapi/ns-shellapi-shfileinfoa">SHFILEINFO</a> structure pointed to by <i>psfi</i>, you are responsible for freeing it with <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-destroyicon">DestroyIcon</a> when you no longer need it. <div class="alert"><b>Note</b>  Once you have a handle to a system image list, you can use the <a href="https://docs.microsoft.com/windows/desktop/Controls/image-lists">Image List API</a> to manipulate it like any other image list. Because system image lists are created on a per-process basis, you should treat them as read-only objects. Writing to a system image list may overwrite or delete one of the system images, making it unavailable or incorrect for the remainder of the process.</div> <div> </div> You must initialize Component Object Model (COM) with <a href="https://docs.microsoft.com/windows/desktop/api/objbase/nf-objbase-coinitialize">CoInitialize</a> or <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-oleinitialize">OleInitialize</a> prior to calling <b>SHGetFileInfo</b>. When you use the <b>SHGFI_EXETYPE</b> flag with a Windows application, the Windows version of the executable is given in the HIWORD of the return value. This version is returned as a hexadecimal value. For details on equating this value with a specific Windows version, 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/shellapi/nf-shellapi-shgetfileinfow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHGetImageList(System.Int32,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.SHGetImageList(System.Int32,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SHGetImageList(System.Int32,System.Guid*,System.Void**)">
            <summary>Retrieves an image list.</summary>
            <param name="iImageList">Type: <b>int</b></param>
            <param name="riid">
            <para>Type: <b>REFIID</b> Reference to the image list interface identifier, normally IID_IImageList.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetimagelist#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ppvObj">
            <para>Type: <b>void**</b> When this method returns, contains the interface pointer requested in <i>riid</i>. This is typically <a href="https://docs.microsoft.com/windows/desktop/api/commoncontrols/nn-commoncontrols-iimagelist">IImageList</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetimagelist#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HRESULT</b> If this function succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
            </returns>
            <remarks>
            <para>The <a href="https://docs.microsoft.com/windows/desktop/api/commoncontrols/nn-commoncontrols-iimagelist">IImageList</a> pointer type, such as that returned in the <i>ppv</i> parameter, can be cast as an <b>HIMAGELIST</b> as needed; for example, for use in a list view. Conversely, an <b>HIMAGELIST</b> can be cast as a pointer to an <b>IImageList</b>. As of Windows Vista, <b>SHIL_SMALL</b>, <b>SHIL_LARGE</b>, and <b>SHIL_EXTRALARGE</b> scale with dots per inch (dpi) if the process is marked as dpi-aware. To set these types to be dpi-aware, call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setprocessdpiaware">SetProcessDPIAware</a>. <b>SHIL_JUMBO</b> is fixed at 256 pixels regardless of the dpi-aware setting.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellapi/nf-shellapi-shgetimagelist#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CopyStgMedium(Windows.Win32.System.Com.STGMEDIUM@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CopyStgMedium(Windows.Win32.System.Com.STGMEDIUM*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetKeyState(System.Int32)">
            <summary>Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off�alternating each time the key is pressed).</summary>
            <param name="nVirtKey">
            <para>Type: <b>int</b> A virtual key. If the desired virtual key is a letter or digit (A through Z, a through z, or 0 through 9), <i>nVirtKey</i> must be set to the ASCII value of that character. For other keys, it must be a virtual-key code. If a non-English keyboard layout is used, virtual keys with values in the range ASCII A through Z and 0 through 9 are used to specify most of the character keys. For example, for the German keyboard layout, the virtual key of value ASCII O (0x4F) refers to the "o" key, whereas VK_OEM_1 refers to the "o with umlaut" key.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getkeystate#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>SHORT</b> The return value specifies the status of the specified virtual key, as follows: </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The key status returned from this function changes as a thread reads key messages from its message queue. The status does not reflect the interrupt-level state associated with the hardware. Use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getasynckeystate">GetAsyncKeyState</a> function to retrieve that information. An application calls <b>GetKeyState</b> in response to a keyboard-input message. This function retrieves the state of the key when the input message was generated. To retrieve state information for all the virtual keys, use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getkeyboardstate">GetKeyboardState</a> function. An application can use the <a href="https://docs.microsoft.com/windows/desktop/inputdev/virtual-key-codes">virtual key code</a> constants <b>VK_SHIFT</b>, <b>VK_CONTROL</b>, and <b>VK_MENU</b> as values for the <i>nVirtKey</i> parameter. This gives the status of the SHIFT, CTRL, or ALT keys without distinguishing between left and right. An application can also use the following virtual-key code constants as values for <i>nVirtKey</i> to distinguish between the left and right instances of those keys: <b>VK_LSHIFT</b> <b>VK_RSHIFT</b> <b>VK_LCONTROL</b> <b>VK_RCONTROL</b> <b>VK_LMENU</b> <b>VK_RMENU</b> These left- and right-distinguishing constants are available to an application only through the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getkeyboardstate">GetKeyboardState</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setkeyboardstate">SetKeyboardState</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getasynckeystate">GetAsyncKeyState</a>, <b>GetKeyState</b>, and <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-mapvirtualkeya">MapVirtualKey</a> functions.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getkeystate#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerType(System.UInt32,Windows.Win32.UI.WindowsAndMessaging.POINTER_INPUT_TYPE@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetPointerType(System.UInt32,Windows.Win32.UI.WindowsAndMessaging.POINTER_INPUT_TYPE*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerType(System.UInt32,Windows.Win32.UI.WindowsAndMessaging.POINTER_INPUT_TYPE*)">
            <summary>Retrieves the pointer type for a specified pointer.</summary>
            <param name="pointerId">An identifier of the pointer for which to retrieve pointer type.</param>
            <param name="pointerType">An address of a <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">POINTER_INPUT_TYPE</a> type to receive a pointer input type.</param>
            <returns>
            <para>If the function succeeds, the return value is non-zero. 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>An application can use the <b>GetPointerType</b> function to determine the pointer type if it wishes to react differently to pointers of different types. <div class="alert"><b>Note</b>  This function will never return with the generic <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_POINTER </a> type.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getpointertype#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_INFO@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetPointerInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_INFO*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_INFO*)">
            <summary>Gets the information for the specified pointer associated with the current message.</summary>
            <param name="pointerId">The pointer identifier.</param>
            <param name="pointerInfo">Address of a  <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-pointer_info">POINTER_INFO</a> structure that receives the pointer information.</param>
            <returns>
            <para>If the function succeeds, the return value is non-zero. 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><b>GetPointerInfo</b> retrieves information for a single pointer associated with a pointer message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerframeinfo">GetPointerFrameInfo</a> to retrieve frame information associated with a message  for a set of pointers. The information returned by <b>GetPointerInfo</b> is associated with the most recent pointer message retrieved by the calling thread. When the next message is retrieved by the calling thread, the information associated with the previous message may no longer be available. If the application does not process pointer input messages as fast as they are generated, some messages may be coalesced into a <a href="https://docs.microsoft.com/windows/win32/inputmsg/wm-pointerupdate">WM_POINTERUPDATE</a> message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerinfohistory">GetPointerInfoHistory</a> to retrieve the message history from the most recent <b>WM_POINTERUPDATE</b> message. If the information associated with the message is no longer available, this function fails with the last error set to <b>ERROR_NO_DATA</b>. If the calling thread does not own the window to which the pointer message has been delivered, this function fails with the last error set to <b>ERROR_ACCESS_DENIED</b>. Note that this may be the window to which the input was originally delivered or it may be a window to which the message was forwarded.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getpointerinfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerTouchInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetPointerTouchInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerTouchInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_TOUCH_INFO*)">
            <summary>Gets the touch-based information for the specified pointer (of type PT_TOUCH) associated with the current message.</summary>
            <param name="pointerId">An identifier of the pointer for which to retrieve information.</param>
            <param name="touchInfo">Address of a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-pointer_touch_info">POINTER_TOUCH_INFO</a> structure to receive the touch-specific pointer information.</param>
            <returns>
            <para>If the function succeeds, the return value is non-zero. 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><b>GetPointerTouchInfo</b> retrieves information for a single pointer (of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_TOUCH</a>) associated with a pointer message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerframetouchinfo">GetPointerFrameTouchInfo</a> to retrieve frame information associated with a message  for a set of pointers. The information returned by <b>GetPointerTouchInfo</b> is associated with the most recent pointer message retrieved by the calling thread. When the next message is retrieved by the calling thread, the information associated with the previous message may no longer be available. If the application does not process pointer input messages as fast as they are generated, some messages may be coalesced into a <a href="https://docs.microsoft.com/windows/win32/inputmsg/wm-pointerupdate">WM_POINTERUPDATE</a> message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointertouchinfohistory">GetPointerTouchInfoHistory</a> to retrieve the message history from the most recent <b>WM_POINTERUPDATE</b> message. If the information associated with the message is no longer available, this function fails with the last error set to <b>ERROR_NO_DATA</b>. If the calling thread does not own the window to which the pointer message has been delivered, this function fails with the last error set to <b>ERROR_ACCESS_DENIED</b>. Note that this may be the window to which the input was originally delivered or it may be a window to which the message was forwarded. If the specified pointer is not of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_TOUCH</a>, this function fails with the last error set to <b>ERROR_DATATYPE_MISMATCH</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getpointertouchinfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerPenInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetPointerPenInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetPointerPenInfo(System.UInt32,Windows.Win32.UI.Input.Pointer.POINTER_PEN_INFO*)">
            <summary>Gets the pen-based information for the specified pointer (of type PT_PEN) associated with the current message.</summary>
            <param name="pointerId">An identifier of the pointer for which to retrieve information.</param>
            <param name="penInfo">Address of a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-pointer_pen_info">POINTER_PEN_INFO</a> structure to receive the pen-specific pointer information.</param>
            <returns>
            <para>If the function succeeds, the return value is non-zero. 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><b>GetPointerPenInfo</b> retrieves information for a single pointer (of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_PEN</a>) associated with a pointer message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerframepeninfo">GetPointerFramePenInfo</a> to retrieve frame information associated with a message  for a set of pointers. The information returned by <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerinfo">GetPointerInfo</a> is associated with the most recent pointer message retrieved by the calling thread. When the next message is retrieved by the calling thread, the information associated with the previous message may no longer be available. If the application does not process pointer input messages as fast as they are generated, some messages may be coalesced into a <a href="https://docs.microsoft.com/windows/win32/inputmsg/wm-pointerupdate">WM_POINTERUPDATE</a> message. Use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getpointerpeninfohistory">GetPointerPenInfoHistory</a> to retrieve the message history from the most recent <b>WM_POINTERUPDATE</b> message. If the information associated with the message is no longer available, this function fails with the last error set to <b>ERROR_NO_DATA</b>. If the calling thread does not own the window to which the pointer message has been delivered, this function fails with the last error set to <b>ERROR_ACCESS_DENIED</b>. Note that this may be the window to which the input was originally delivered or it may be a window to which the message was forwarded. If the specified pointer is not of type <a href="https://docs.microsoft.com/windows/win32/api/winuser/ne-winuser-tagpointer_input_type">PT_PEN</a>, this function fails with the last error set to <b>ERROR_DATATYPE_MISMATCH</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getpointerpeninfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.UnhookWindowsHookEx(Windows.Win32.UI.WindowsAndMessaging.HHOOK)">
            <summary>Removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.</summary>
            <param name="hhk">
            <para>Type: <b>HHOOK</b> A handle to the hook to be removed. This parameter is a hook handle obtained by a previous call to <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setwindowshookexa">SetWindowsHookEx</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-unhookwindowshookex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> 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>The hook procedure can be in the state of being called by another thread even after <b>UnhookWindowsHookEx</b> returns. If the hook procedure is not being called concurrently, the hook procedure is removed immediately before <b>UnhookWindowsHookEx</b> returns.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetWindowsHookEx(Windows.Win32.UI.WindowsAndMessaging.WINDOWS_HOOK_ID,,System.Runtime.InteropServices.SafeHandle,System.UInt32)">
            <inheritdoc cref="!:SetWindowsHookEx(winmdroot.UI.WindowsAndMessaging.WINDOWS_HOOK_ID, delegate *unmanaged[Stdcall]&lt;int,global::Windows.Win32.Foundation.WPARAM,global::Windows.Win32.Foundation.LPARAM,global::Windows.Win32.Foundation.LRESULT&gt;, winmdroot.Foundation.HINSTANCE, uint)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetWindowsHookEx(Windows.Win32.UI.WindowsAndMessaging.WINDOWS_HOOK_ID,,Windows.Win32.Foundation.HINSTANCE,System.UInt32)">
            <summary>Installs an application-defined hook procedure into a hook chain. (Unicode)</summary>
            <param name="idHook">Type: <b>int</b></param>
            <param name="lpfn">
            <para>Type: <b>HOOKPROC</b> A pointer to the hook procedure. If the <i>dwThreadId</i> parameter is zero or specifies the identifier of a thread created by a different process, the <i>lpfn</i> parameter must point to a hook procedure in a DLL. Otherwise, <i>lpfn</i> can point to a hook procedure in the code associated with the current process.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowshookexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="hmod">
            <para>Type: <b>HINSTANCE</b> A handle to the DLL containing the hook procedure pointed to by the <i>lpfn</i> parameter. The <i>hMod</i> parameter must be set to <b>NULL</b> if the <i>dwThreadId</i> parameter specifies a thread created by the current process and if the hook procedure is within the code associated with the current process.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowshookexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwThreadId">
            <para>Type: <b>DWORD</b> The identifier of the thread with which the hook procedure is to be associated. For desktop apps, if this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread. For Windows Store apps, see the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowshookexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HHOOK</b> If the function succeeds, the return value is the handle to the hook procedure. If the function fails, the return value is <b>NULL</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>SetWindowsHookEx</b> can be used to inject a DLL into another process. A 32-bit DLL cannot be injected into a 64-bit process, and a 64-bit DLL cannot be injected into a 32-bit process. If an application requires the use of hooks in other processes, it is required that a 32-bit application call <b>SetWindowsHookEx</b> to inject a 32-bit DLL into 32-bit processes, and a 64-bit application call <b>SetWindowsHookEx</b> to inject a 64-bit DLL into 64-bit processes. The 32-bit and 64-bit DLLs must have different names.</para>
            <para>Because hooks run in the context of an application, they must match the "bitness" of the application. If a 32-bit application installs a global hook on 64-bit Windows, the 32-bit hook is injected into each 32-bit process (the usual security boundaries apply). In a 64-bit process, the threads are still marked as "hooked." However, because a 32-bit application must run the hook code, the system executes the hook in the hooking app's context; specifically, on the thread that called <b>SetWindowsHookEx</b>. This means that the hooking application must continue to pump messages or it might block the normal functioning of the 64-bit processes.</para>
            <para>If a 64-bit application installs a global hook on 64-bit Windows, the 64-bit hook is injected into each 64-bit process, while all 32-bit processes use a callback to the hooking application.</para>
            <para>To hook all applications on the desktop of a 64-bit Windows installation, install a 32-bit global hook and a 64-bit global hook, each from appropriate processes, and be sure to keep pumping messages in the hooking application to avoid blocking normal functioning. If you already have a 32-bit global hooking application and it doesn't need to run in each application's context, you may not need to create a 64-bit version.</para>
            <para>An error may occur if the <i>hMod</i> parameter is <b>NULL</b> and the <i>dwThreadId</i> parameter is zero or specifies the identifier of a thread created by another process. Calling the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-callnexthookex">CallNextHookEx</a> function to chain to the next hook procedure is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call <b>CallNextHookEx</b> unless you absolutely need to prevent the notification from being seen by other applications. Before terminating, an application must call the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-unhookwindowshookex">UnhookWindowsHookEx</a> function to free system resources associated with the hook. The scope of a hook depends on the hook type. Some hooks can be set only with global scope; others can also be set for only a specific thread, as shown in the following table. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowshookexw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CallNextHookEx(System.Runtime.InteropServices.SafeHandle,System.Int32,Windows.Win32.Foundation.WPARAM,Windows.Win32.Foundation.LPARAM)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CallNextHookEx(Windows.Win32.UI.WindowsAndMessaging.HHOOK,System.Int32,Windows.Win32.Foundation.WPARAM,Windows.Win32.Foundation.LPARAM)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CallNextHookEx(Windows.Win32.UI.WindowsAndMessaging.HHOOK,System.Int32,Windows.Win32.Foundation.WPARAM,Windows.Win32.Foundation.LPARAM)">
            <summary>Passes the hook information to the next hook procedure in the current hook chain. A hook procedure can call this function either before or after processing the hook information.</summary>
            <param name="hhk">
            <para>Type: <b>HHOOK</b> This parameter is ignored.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-callnexthookex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nCode">
            <para>Type: <b>int</b> The hook code passed to the current hook procedure. The next hook procedure uses this code to determine how to process the hook information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-callnexthookex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="wParam">
            <para>Type: <b>WPARAM</b> The <i>wParam</i> value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-callnexthookex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lParam">
            <para>Type: <b>LPARAM</b> The <i>lParam</i> value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-callnexthookex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>LRESULT</b> This value is returned by the next hook procedure in the chain. The current hook procedure must also return this value. The meaning of the return value depends on the hook type. For more information, see the descriptions of the individual hook procedures.</para>
            </returns>
            <remarks>
            <para>Hook procedures are installed in chains for particular hook types. <b>CallNextHookEx</b> calls the next hook in the chain. Calling <b>CallNextHookEx</b> is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call <b>CallNextHookEx</b> unless you absolutely need to prevent the notification from being seen by other applications.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-callnexthookex#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SystemParametersInfo(Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_ACTION,System.UInt32,System.Void*,Windows.Win32.UI.WindowsAndMessaging.SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS)">
            <summary>Retrieves or sets the value of one of the system-wide parameters. (Unicode)</summary>
            <param name="uiAction">
            <para>Type: <b>UINT</b> The system-wide parameter to be retrieved or set. The possible values are organized in the following tables of related parameters: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-systemparametersinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="uiParam">
            <para>Type: <b>UINT</b> A parameter whose usage and format depends on the system parameter being queried or set. For more information about system-wide parameters, see the <i>uiAction</i> parameter. If not otherwise indicated, you must specify zero for this parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-systemparametersinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pvParam">
            <para>Type: <b>PVOID</b> A parameter whose usage and format depends on the system parameter being queried or set. For more information about system-wide parameters, see the <i>uiAction</i> parameter. If not otherwise indicated, you must specify <b>NULL</b> for this parameter. For information on the <b>PVOID</b> datatype, see <a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">Windows Data Types</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-systemparametersinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="fWinIni">
            <para>Type: <b>UINT</b> If a system parameter is being set, specifies whether the user profile is to be updated, and if so, whether the <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-settingchange">WM_SETTINGCHANGE</a> message is to be broadcast to all top-level windows to notify them of the change.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-systemparametersinfow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> If the function succeeds, the return value is a nonzero value. 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>This function is intended for use with applications that allow the user to customize the environment. A keyboard layout name should be derived from the hexadecimal value of the language identifier corresponding to the layout. For example, U.S. English has a language identifier of 0x0409, so the primary U.S. English layout is named "00000409". Variants of U.S. English layout, such as the Dvorak layout, are named "00010409", "00020409" and so on. For a list of the primary language identifiers and sublanguage identifiers that make up a language identifier, see the <b>MAKELANGID</b> macro. There is a difference between the High Contrast color scheme and the High Contrast Mode. The High Contrast color scheme changes the system colors to colors that have obvious contrast; you switch to this color scheme by using the Display Options in the control panel. The High Contrast Mode, which uses <b>SPI_GETHIGHCONTRAST</b> and <b>SPI_SETHIGHCONTRAST</b>, advises applications to modify their appearance for visually-impaired users. It involves such things as audible warning to users and customized color scheme (using the Accessibility Options in the control panel). For more information, see <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-highcontrasta">HIGHCONTRAST</a>. For more information on general accessibility features, see <a href="https://docs.microsoft.com/windows/desktop/accessibility">Accessibility</a>. During the time that the primary button is held down to activate the Mouse ClickLock feature, the user can move the mouse. After the primary button is locked down, releasing the primary button does not result in a <b>WM_LBUTTONUP</b> message. Thus, it will appear to an application that the primary button is still down. Any subsequent button message releases the primary button, sending a <b>WM_LBUTTONUP</b> message to the application, thus the button can be unlocked programmatically or through the user clicking any button. This API is not DPI aware, and should not be used if the calling thread is per-monitor DPI aware. For the DPI-aware version of this API, see <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-systemparametersinfofordpi">SystemParametersInfoForDPI</a>. For more information on DPI awareness, see <a href="https://docs.microsoft.com/windows/desktop/hidpi/high-dpi-desktop-application-development-on-windows">the Windows High DPI documentation.</a></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-systemparametersinfow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetMonitorInfo(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.Graphics.Gdi.MONITORINFO@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetMonitorInfo(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.Graphics.Gdi.MONITORINFO*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetMonitorInfo(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.Graphics.Gdi.MONITORINFO*)">
            <summary>The GetMonitorInfo function retrieves information about a display monitor. (Unicode)</summary>
            <param name="hMonitor">A handle to the display monitor of interest.</param>
            <param name="lpmi">
            <para>A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-monitorinfo">MONITORINFO</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-monitorinfoexa">MONITORINFOEX</a> structure that receives information about the specified display monitor. You must set the <b>cbSize</b> member of the structure to sizeof(MONITORINFO) or sizeof(MONITORINFOEX) before calling the <b>GetMonitorInfo</b> function. Doing so lets the function determine the type of structure you are passing to it. The <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-monitorinfoexa">MONITORINFOEX</a> structure is a superset of the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-monitorinfo">MONITORINFO</a> structure. It has one additional member: a string that contains a name for the display monitor. Most applications have no use for a display monitor name, and so can save some bytes by using a <b>MONITORINFO</b> structure.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getmonitorinfow#parameters">Read more on docs.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.</para>
            </returns>
            <remarks>
            <para>> [!NOTE] > The winuser.h header defines GetMonitorInfo 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/winuser/nf-winuser-getmonitorinfow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.MonitorFromRect(Windows.Win32.Foundation.RECT@,Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.MonitorFromRect(Windows.Win32.Foundation.RECT*,Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.MonitorFromRect(Windows.Win32.Foundation.RECT*,Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS)">
            <summary>The MonitorFromRect function retrieves a handle to the display monitor that has the largest area of intersection with a specified rectangle.</summary>
            <param name="lprc">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure that specifies the rectangle of interest in virtual-screen coordinates.</param>
            <param name="dwFlags">Determines the function's return value if the rectangle does not intersect any display monitor.</param>
            <returns>
            <para>If the rectangle intersects one or more display monitor rectangles, the return value is an <b>HMONITOR</b> handle to the display monitor that has the largest area of intersection with the rectangle. If the rectangle does not intersect a display monitor, the return value depends on the value of <i>dwFlags</i>.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-monitorfromrect">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DestroyIcon(Windows.Win32.UI.WindowsAndMessaging.HICON)">
            <summary>Destroys an icon and frees any memory the icon occupied.</summary>
            <param name="hIcon">
            <para>Type: <b>HICON</b> A handle to the icon to be destroyed. The icon must not be in use.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroyicon#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> 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>It is only necessary to call <b>DestroyIcon</b> for icons and cursors created with the following functions: <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createiconfromresourceex">CreateIconFromResourceEx</a> (if called without the <b>LR_SHARED</b> flag), <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createiconindirect">CreateIconIndirect</a>, and <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-copyicon">CopyIcon</a>. Do not use this function to destroy a shared icon. A shared icon is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared icon. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroyicon#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetIconInfo(System.Runtime.InteropServices.SafeHandle,Windows.Win32.UI.WindowsAndMessaging.ICONINFO@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetIconInfo(Windows.Win32.UI.WindowsAndMessaging.HICON,Windows.Win32.UI.WindowsAndMessaging.ICONINFO*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetIconInfo(Windows.Win32.UI.WindowsAndMessaging.HICON,Windows.Win32.UI.WindowsAndMessaging.ICONINFO*)">
            <summary>Retrieves information about the specified icon or cursor.</summary>
            <param name="hIcon">Type: <b>HICON</b></param>
            <param name="piconinfo">
            <para>Type: <b>PICONINFO</b> A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-iconinfo">ICONINFO</a> structure. The function fills in the structure's members.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> If the function succeeds, the return value is nonzero and the function fills in the members of the specified <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-iconinfo">ICONINFO</a> structure. 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><b>GetIconInfo</b> creates bitmaps for the <b>hbmMask</b> and <b>hbmColor</b> or members of <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-iconinfo">ICONINFO</a>. The calling application must manage these bitmaps and delete them when they are no longer necessary. <h3><a id="DPI_Virtualization"></a><a id="dpi_virtualization"></a><a id="DPI_VIRTUALIZATION"></a>DPI Virtualization</h3> This API does not participate in DPI virtualization. The output returned is not affected by the DPI of the calling thread.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.PostMessage(Windows.Win32.Foundation.HWND,System.UInt32,Windows.Win32.Foundation.WPARAM,Windows.Win32.Foundation.LPARAM)">
            <summary>Places (posts) a message in the message queue associated with the thread that created the specified window and returns without waiting for the thread to process the message. (Unicode)</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window whose window procedure is to receive the message. The following values have special meanings. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-postmessagew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="Msg">
            <para>Type: <b>UINT</b> The message to be posted. For lists of the system-provided messages, see <a href="https://docs.microsoft.com/windows/desktop/winmsg/about-messages-and-message-queues">System-Defined Messages</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-postmessagew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="wParam">
            <para>Type: <b>WPARAM</b> Additional message-specific information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-postmessagew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lParam">
            <para>Type: <b>LPARAM</b> Additional message-specific information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-postmessagew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> 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>When a message is blocked by UIPI the last error, retrieved with <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>, is set to 5 (access denied). Messages in a message queue are retrieved by calls to the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getmessage">GetMessage</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-peekmessagea">PeekMessage</a> function. Applications that need to communicate using <b>HWND_BROADCAST</b> should use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerwindowmessagea">RegisterWindowMessage</a> function to obtain a unique message for inter-application communication. The system only does marshalling for system messages (those in the range 0 to (<a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-user">WM_USER</a>-1)). To send other messages (those &gt;= <b>WM_USER</b>) to another process, you must do custom marshalling. If you send a message in the range below <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-user">WM_USER</a> to the asynchronous message functions (<b>PostMessage</b>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-sendnotifymessagea">SendNotifyMessage</a>, and <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-sendmessagecallbacka">SendMessageCallback</a>), its message parameters cannot include pointers. Otherwise, the operation will fail. The functions will return before the receiving thread has had a chance to process the message and the sender will free the memory before it is used. Do not post the <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-quit">WM_QUIT</a> message using <b>PostMessage</b>; use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-postquitmessage">PostQuitMessage</a> function. An accessibility application can use <b>PostMessage</b> to post <a href="https://docs.microsoft.com/windows/desktop/inputdev/wm-appcommand">WM_APPCOMMAND</a> messages  to the shell to launch applications. This  functionality is not guaranteed to work for other types of applications. There is a limit of 10,000 posted messages per message queue. This limit should be sufficiently large.  If your application exceeds the limit, it should be redesigned to avoid consuming so many system resources. To adjust this limit, modify the following registry key. <pre><b>HKEY_LOCAL_MACHINE</b> <b>SOFTWARE</b> <b>Microsoft</b> <b>Windows NT</b> <b>CurrentVersion</b> <b>Windows</b> <b>USERPostMessageLimit</b></pre> If the function fails, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> to get extended error information. <b>GetLastError</b> returns <b>ERROR_NOT_ENOUGH_QUOTA</b> when the limit is hit. The minimum acceptable value is 4000.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-postmessagew#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.RegisterClipboardFormat(System.String)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.RegisterClipboardFormat(Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.RegisterClipboardFormat(Windows.Win32.Foundation.PCWSTR)">
            <summary>Registers a new clipboard format. This format can then be used as a valid clipboard format. (Unicode)</summary>
            <param name="lpszFormat">
            <para>Type: <b>LPCTSTR</b> The name of the new format.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-registerclipboardformatw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>UINT</b> If the function succeeds, the return value identifies the registered clipboard format. 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>If a registered format with the specified name already exists, a new format is not registered and the return value identifies the existing format. This enables more than one application to copy and paste data using the same registered clipboard format. Note that the format name comparison is case-insensitive. Registered clipboard formats are identified by values in the range 0xC000 through 0xFFFF. When registered clipboard formats are placed on or retrieved from the clipboard, they must be in the form of an <b>HGLOBAL</b> value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-registerclipboardformatw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetClipboardFormatName(System.UInt32,System.Span{System.Char})">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetClipboardFormatName(System.UInt32,Windows.Win32.Foundation.PWSTR,System.Int32)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetClipboardFormatName(System.UInt32,Windows.Win32.Foundation.PWSTR,System.Int32)">
            <summary>Retrieves from the clipboard the name of the specified registered format. The function copies the name to the specified buffer. (Unicode)</summary>
            <param name="format">
            <para>Type: <b>UINT</b> The type of format to be retrieved. This parameter must not specify any of the predefined clipboard formats.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getclipboardformatnamew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpszFormatName">
            <para>Type: <b>LPTSTR</b> The buffer that is to receive the format name.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getclipboardformatnamew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="cchMaxCount">
            <para>Type: <b>int</b> The maximum length, in characters, of the string to be copied to the buffer. If the name exceeds this limit, it is truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getclipboardformatnamew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>int</b> If the function succeeds, the return value is the length, in characters, of the string copied to the buffer. If the function fails, the return value is zero, indicating that the requested format does not exist or is predefined. 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><h3><a id="Security_Considerations"></a><a id="security_considerations"></a><a id="SECURITY_CONSIDERATIONS"></a>Security Considerations</h3> Using this function incorrectly might compromise the security of your program. For example, miscalculating the proper size of the <i>lpszFormatName</i> buffer, especially when the application is used in both ANSI and Unicode versions, can cause a buffer overflow. Also, note that the string is truncated if it is longer than the <i>cchMaxCount</i> parameter, which can lead to loss of information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getclipboardformatnamew#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetCursorPos(System.Drawing.Point@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetCursorPos(System.Drawing.Point*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetCursorPos(System.Drawing.Point*)">
            <summary>Retrieves the position of the mouse cursor, in screen coordinates.</summary>
            <param name="lpPoint">
            <para>Type: <b>LPPOINT</b> A pointer to a <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a> structure that receives the screen coordinates of the cursor.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getcursorpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> Returns nonzero if successful or zero otherwise. 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 cursor position is always specified in screen coordinates and is not affected by the mapping mode of the window that contains the cursor. The calling process must have <b>WINSTA_READATTRIBUTES</b> access to the window station. The input desktop must be the current desktop when you call <b>GetCursorPos</b>. Call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-openinputdesktop">OpenInputDesktop</a> to determine whether the current desktop is the input desktop. If it is not, call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setthreaddesktop">SetThreadDesktop</a> with the <b>HDESK</b> returned by <b>OpenInputDesktop</b> to switch to that desktop.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getcursorpos#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetCursorPos(System.Int32,System.Int32)">
            <summary>Moves the cursor to the specified screen coordinates.</summary>
            <param name="X">
            <para>Type: <b>int</b> The new x-coordinate of the cursor, in screen coordinates.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setcursorpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="Y">
            <para>Type: <b>int</b> The new y-coordinate of the cursor, in screen coordinates.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setcursorpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>BOOL</b> Returns nonzero if successful or zero otherwise. 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 cursor is a shared resource. A window should move the cursor only when the cursor is in the window's client area. The calling process must have <b>WINSTA_WRITEATTRIBUTES</b> access to the window station. The input desktop must be the current desktop when you call <b>SetCursorPos</b>. Call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-openinputdesktop">OpenInputDesktop</a> to determine whether the current desktop is the input desktop. If it is not, call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setthreaddesktop">SetThreadDesktop</a> with the <b>HDESK</b> returned by <b>OpenInputDesktop</b> to switch to that desktop.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setcursorpos#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System_Com_IAdviseSink_Extensions.OnDataChange(Windows.Win32.System.Com.IAdviseSink.Interface,Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IAdviseSink.Interface.OnDataChange(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IBindCtx_Extensions.SetBindOptions(Windows.Win32.System.Com.IBindCtx.Interface,Windows.Win32.System.Com.BIND_OPTS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IBindCtx.Interface.SetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IBindCtx_Extensions.GetBindOptions(Windows.Win32.System.Com.IBindCtx.Interface,Windows.Win32.System.Com.BIND_OPTS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IBindCtx.Interface.GetBindOptions(Windows.Win32.System.Com.BIND_OPTS*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.GetData(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.GetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.GetDataHere(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.GetDataHere(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.QueryGetData(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.QueryGetData(Windows.Win32.System.Com.FORMATETC*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.GetCanonicalFormatEtc(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.FORMATETC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.GetCanonicalFormatEtc(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.FORMATETC*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.SetData(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@,Windows.Win32.System.Com.STGMEDIUM@,Windows.Win32.Foundation.BOOL)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.SetData(Windows.Win32.System.Com.FORMATETC*,Windows.Win32.System.Com.STGMEDIUM*,Windows.Win32.Foundation.BOOL)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IDataObject_Extensions.DAdvise(Windows.Win32.System.Com.IDataObject.Interface,Windows.Win32.System.Com.FORMATETC@,System.UInt32,Windows.Win32.System.Com.IAdviseSink*,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDataObject.Interface.DAdvise(Windows.Win32.System.Com.FORMATETC*,System.UInt32,Windows.Win32.System.Com.IAdviseSink*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IEnumFORMATETC_Extensions.Next(Windows.Win32.System.Com.IEnumFORMATETC.Interface,System.Span{Windows.Win32.System.Com.FORMATETC},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumFORMATETC.Interface.Next(System.UInt32,Windows.Win32.System.Com.FORMATETC*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IEnumSTATDATA_Extensions.Next(Windows.Win32.System.Com.IEnumSTATDATA.Interface,System.Span{Windows.Win32.System.Com.STATDATA},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumSTATDATA.Interface.Next(System.UInt32,Windows.Win32.System.Com.STATDATA*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IEnumString_Extensions.Next(Windows.Win32.System.Com.IEnumString.Interface,System.Span{Windows.Win32.Foundation.PWSTR},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IEnumString.Interface.Next(System.UInt32,Windows.Win32.Foundation.PWSTR*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.GetClassID(Windows.Win32.System.Com.IMoniker.Interface,System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.GetSizeMax(Windows.Win32.System.Com.IMoniker.Interface,System.UInt64@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.GetSizeMax(System.UInt64*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.BindToObject(Windows.Win32.System.Com.IMoniker.Interface,Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.BindToObject(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.BindToStorage(Windows.Win32.System.Com.IMoniker.Interface,Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.BindToStorage(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.Hash(Windows.Win32.System.Com.IMoniker.Interface,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.Hash(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.GetTimeOfLastChange(Windows.Win32.System.Com.IMoniker.Interface,Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.GetTimeOfLastChange(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.GetDisplayName(Windows.Win32.System.Com.IMoniker.Interface,Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.GetDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.ParseDisplayName(Windows.Win32.System.Com.IMoniker.Interface,Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR,System.UInt32@,Windows.Win32.System.Com.IMoniker**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.ParseDisplayName(Windows.Win32.System.Com.IBindCtx*,Windows.Win32.System.Com.IMoniker*,Windows.Win32.Foundation.PWSTR,System.UInt32*,Windows.Win32.System.Com.IMoniker**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IMoniker_Extensions.IsSystemMoniker(Windows.Win32.System.Com.IMoniker.Interface,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IMoniker.Interface.IsSystemMoniker(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IPersistStream_Extensions.GetClassID(Windows.Win32.System.Com.IPersistStream.Interface,System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersistStream.Interface.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IPersistStream_Extensions.GetSizeMax(Windows.Win32.System.Com.IPersistStream.Interface,System.UInt64@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersistStream.Interface.GetSizeMax(System.UInt64*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IPersist_Extensions.GetClassID(Windows.Win32.System.Com.IPersist.Interface,System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IPersist.Interface.GetClassID(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IRunningObjectTable_Extensions.Register(Windows.Win32.System.Com.IRunningObjectTable.Interface,Windows.Win32.System.Com.ROT_FLAGS,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.IMoniker*,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.Interface.Register(Windows.Win32.System.Com.ROT_FLAGS,Windows.Win32.System.Com.IUnknown*,Windows.Win32.System.Com.IMoniker*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IRunningObjectTable_Extensions.NoteChangeTime(Windows.Win32.System.Com.IRunningObjectTable.Interface,System.UInt32,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.Interface.NoteChangeTime(System.UInt32,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IRunningObjectTable_Extensions.GetTimeOfLastChange(Windows.Win32.System.Com.IRunningObjectTable.Interface,Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IRunningObjectTable.Interface.GetTimeOfLastChange(Windows.Win32.System.Com.IMoniker*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_IStream_Extensions.Stat(Windows.Win32.System.Com.IStream.Interface,Windows.Win32.System.Com.STATSTG@,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IStream.Interface.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IEnumSTATSTG_Extensions.Next(Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Interface,System.Span{Windows.Win32.System.Com.STATSTG},System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG.Interface.Next(System.UInt32,Windows.Win32.System.Com.STATSTG*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.CreateStream(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.CreateStream(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.IStream**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.OpenStream(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,Windows.Win32.System.Com.STGM,System.UInt32,Windows.Win32.System.Com.IStream**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.OpenStream(Windows.Win32.Foundation.PCWSTR,System.Void*,Windows.Win32.System.Com.STGM,System.UInt32,Windows.Win32.System.Com.IStream**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.CreateStorage(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.CreateStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.STGM,System.UInt32,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.OpenStorage(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.System.Com.STGM,System.UInt16*@,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.OpenStorage(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.System.Com.STGM,System.UInt16**,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IStorage**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.CopyTo(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.ReadOnlySpan{System.Guid},System.UInt16**,Windows.Win32.System.Com.StructuredStorage.IStorage*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.CopyTo(System.UInt32,System.Guid*,System.UInt16**,Windows.Win32.System.Com.StructuredStorage.IStorage*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.MoveElementTo(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,Windows.Win32.System.Com.StructuredStorage.IStorage*,System.String,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.MoveElementTo(Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Com.StructuredStorage.IStorage*,Windows.Win32.Foundation.PCWSTR,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.EnumElements(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.EnumElements(System.UInt32,System.Void*,System.UInt32,Windows.Win32.System.Com.StructuredStorage.IEnumSTATSTG**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.DestroyElement(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.DestroyElement(Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.RenameElement(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,System.String)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.RenameElement(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.SetElementTimes(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.String,System.Runtime.InteropServices.ComTypes.FILETIME@,System.Runtime.InteropServices.ComTypes.FILETIME@,System.Runtime.InteropServices.ComTypes.FILETIME@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.SetElementTimes(Windows.Win32.Foundation.PCWSTR,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*,System.Runtime.InteropServices.ComTypes.FILETIME*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.SetClass(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.SetClass(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_StructuredStorage_IStorage_Extensions.Stat(Windows.Win32.System.Com.StructuredStorage.IStorage.Interface,Windows.Win32.System.Com.STATSTG@,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.System.Com.StructuredStorage.IStorage.Interface.Stat(Windows.Win32.System.Com.STATSTG*,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IDropTarget_Extensions.DragEnter(Windows.Win32.System.Ole.IDropTarget.Interface,Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.Interface.DragEnter(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IDropTarget_Extensions.DragOver(Windows.Win32.System.Ole.IDropTarget.Interface,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.Interface.DragOver(Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IDropTarget_Extensions.Drop(Windows.Win32.System.Ole.IDropTarget.Interface,Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IDropTarget.Interface.Drop(Windows.Win32.System.Com.IDataObject*,Windows.Win32.System.SystemServices.MODIFIERKEYS_FLAGS,Windows.Win32.Foundation.POINTL,Windows.Win32.System.Ole.DROPEFFECT*)"/>
        </member>
        <member name="T:Windows.Win32.UnhookWindowsHookExSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.UnhookWindowsHookEx(Windows.Win32.UI.WindowsAndMessaging.HHOOK)"/>.
            </summary>
        </member>
    </members>
</doc>
