<?xml version="1.0"?>
<doc>
    <assembly>
        <name>YourPhoneAppProxy</name>
    </assembly>
    <members>
        <member name="T:YourPhoneAppProxy.App">
            <summary>
            App
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.App.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.App.Application_DispatcherUnhandledException(System.Object,System.Windows.Threading.DispatcherUnhandledExceptionEventArgs)">
            <summary>
            Called by the UI Thread and takes precedence over CurrentDomain_UnhandledException
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.App.CurrentDomain_UnhandledException(System.Object,System.UnhandledExceptionEventArgs)">
            <summary>
            For background threads unhandled exceptions
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.App.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.App.Main">
            <summary>
            Application Entry Point.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Common.CommandAdapter">
            <summary>
            Adapter that converts a framework-agnostic DelegateCommand from Core
            into a WPF RelayCommand for data binding in UI projects.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Common.CommandAdapter.ToRelayCommand(YourPhoneAppProxy.Core.Common.DelegateCommand)">
            <summary>
            Converts a DelegateCommand to a RelayCommand for use in WPF data binding.
            The RelayCommand will delegate all calls to the underlying DelegateCommand.
            </summary>
            <param name="delegateCommand">The framework-agnostic command from Core.</param>
            <returns>A WPF RelayCommand that wraps the DelegateCommand.</returns>
        </member>
        <member name="M:YourPhoneAppProxy.Common.CommandAdapter.ToRelayCommandParameterless(YourPhoneAppProxy.Core.Common.DelegateCommand)">
            <summary>
            Converts a parameterless DelegateCommand to a RelayCommand.
            </summary>
            <param name="delegateCommand">The framework-agnostic command from Core.</param>
            <returns>A WPF RelayCommand that wraps the DelegateCommand.</returns>
        </member>
        <member name="T:YourPhoneAppProxy.Core.Converter.DelegateCommandToICommandConverter">
            <summary>
            Converts a DelegateCommand from Core to an ICommand for WPF data binding.
            </summary>
        </member>
        <member name="F:YourPhoneAppProxy.Core.Input.KeyboardStateManager.noAltGrKeyboardSet">
            <summary>
            Known Keyboards that do not have the AltGr key
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Input.KeyboardStateManager.IsAltGrOnCurrentKeyboard">
            <inheritdoc cref="T:YourPhoneAppProxy.Core.Input.IKeyboardStateManager"/>
        </member>
        <member name="M:YourPhoneAppProxy.Core.ViewHelpers.AppProxyContainerAutomationPeer.#ctor(System.Windows.FrameworkElement,System.Windows.FrameworkElement)">
            <summary>
            Initializes a new instance of the <see cref="T:YourPhoneAppProxy.Core.ViewHelpers.AppProxyContainerAutomationPeer"/> class.
            Creates an AutomationPeer with the option of having the parent of the bounding rectangle be different than the AutomationPeer owner.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.ViewHelpers.AppProxyContainerAutomationPeer.OnAccessibilityEventRectangleReceived(System.Windows.Rect,System.Double,System.Double)">
            <summary>
            Creates a bounding rect on the parent given to this AutomationPeer, given the bounding Rect and
            measurements of the previous parent of the Rect.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.ViewHelpers.AppProxyContainerAutomationPeer.GetEquivRectOnNewParent(System.Windows.Rect,System.Double,System.Double)">
            <summary>
            Converts a Rect representing the bounding focus rectangle on the old parent, to the
            equivalent representation relative to the boundingRectParent of this AutomationPeer
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.ViewHelpers.AppProxyContainerAutomationPeer.ParentRectToScreenRect(System.Windows.Rect)">
            <summary>
            Converts a Rect that represents the bounding focus rectangle relative to boundingRectParent, to
            the equivalent Rect relative to the whole screen.
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Core.ViewHelpers.KeyEventArgsConverter">
            <summary>
            Converter to convert WPF KeyEventArgs to the base KeyboardEventArgs.
            This is used in XAML code-behind files to bridge WPF-specific events to the framework-agnostic base class.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Core.Accessibility.ViewHelpers.NarratorCapableElementAutomationPeer.RaiseNarratorNotificationEvent(Windows.Win32.UI.Accessibility.NotificationKind,Windows.Win32.UI.Accessibility.NotificationProcessing,System.String,System.String)">
            <summary>
            Raises a notification event to trigger Windows Narrator. Throws Win32Exception if the win32 event fails with an HResult.
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.AppProxyContainer.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.AppProxyWindow.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.NavigationBar.NavigationBarButtonsView">
            <summary>
            NavigationBarButtonsView.xaml
            </summary>
            <summary>
            NavigationBarButtonsView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.NavigationBar.NavigationBarButtonsView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.ProgressRing.ProgressRingView">
            <summary>
            ProgressRingView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.ProgressRing.ProgressRingView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.ProgressRing.TimedProgressRingWithButtonView">
            <summary>
            TimedProgressRingWithButtonView
            </summary>
        </member>
        <member name="P:YourPhoneAppProxy.Views.ProgressRing.TimedProgressRingWithButtonView.TimerSeconds">
            <summary><c>TimerSeconds</c> represents second interval before the
            spinner gets swapped with an action button. If set to zero (default value),
            spinner will not appear and the button will show immediately</summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.ProgressRing.TimedProgressRingWithButtonView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.AppProxyTakeoverContainer">
            <summary>
            Interaction logic for AppProxyTakeoverContainer.xaml
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.AppProxyTakeoverContainer.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverErrorView">
            <summary>
            Interaction logic for TakeoverErrorView.xaml
            </summary>
            <summary>
            TakeoverErrorView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverErrorView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverFeatureSetupView">
            <summary>
            Interaction logic for TakeoverFeatureSetupView.xaml
            </summary>
            <summary>
            TakeoverFeatureSetupView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverFeatureSetupView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverNanoConnectionErrorView">
            <summary>
            Interaction logic for TakeoverNanoConnectionErrorView.xaml
            </summary>
            <summary>
            TakeoverNanoConnectionErrorView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverNanoConnectionErrorView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverNearbyConnectionView">
            <summary>
            Interaction logic for TakeoverNearbyConnectionView.xaml
            </summary>
            <summary>
            TakeoverNearbyConnectionView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverNearbyConnectionView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverNearbyDeviceLockView">
            <summary>
            Interaction logic for TakeoverNearbyDeviceLockView.xaml
            </summary>
            <summary>
            TakeoverNearbyDeviceLockView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverNearbyDeviceLockView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverNearbySkipNotificationView">
            <summary>
            Interaction logic for TakeoverNearbySkipNotificationView.xaml
            </summary>
            <summary>
            TakeoverNearbySkipNotificationView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverNearbySkipNotificationView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverNoButtonView">
            <summary>
            Interaction logic for TakeoverNoButtonView.xaml
            </summary>
            <summary>
            TakeoverNoButtonView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverNoButtonView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverOneButtonView">
            <summary>
            Interaction logic for TakeoverOneButtonView.xaml
            </summary>
            <summary>
            TakeoverOneButtonView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverOneButtonView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverOneButtonWithCheckBoxView">
            <summary>
            Interaction logic for TakeoverOneButtonWithCheckBoxView.xaml
            </summary>
            <summary>
            TakeoverOneButtonWithCheckBoxView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverOneButtonWithCheckBoxView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverSpinnerView">
            <summary>
            Interaction logic for TakeoverSpinnerView.xaml
            </summary>
            <summary>
            TakeoverSpinnerView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverSpinnerView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverTwoButtonView">
            <summary>
            Interaction logic for TakeoverTwoButtonView.xaml
            </summary>
            <summary>
            TakeoverTwoButtonView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverTwoButtonView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Takeover.TakeoverTwoButtonWithCheckBoxView">
            <summary>
            Interaction logic for TakeoverTwoButtonWithCheckBoxView.xaml
            </summary>
            <summary>
            TakeoverTwoButtonWithCheckBoxView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Takeover.TakeoverTwoButtonWithCheckBoxView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.TeachingTip.TeachingTip">
            <summary>
            Interaction logic for TeachingTip.xaml
            </summary>
            <summary>
            TeachingTip
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.TeachingTip.TeachingTip.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Titlebar.TitlebarButtonsView">
            <summary>
            Interaction logic for TitlebarButtonsView.xaml
            </summary>
            <summary>
            TitlebarButtonsView
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Titlebar.TitlebarButtonsView.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:YourPhoneAppProxy.Views.Volume.VolumePopup">
            <summary>
            Interaction logic for VolumePopup.xaml
            </summary>
            <summary>
            VolumePopup
            </summary>
        </member>
        <member name="M:YourPhoneAppProxy.Views.Volume.VolumePopup.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:Windows.Win32.PInvoke">
            <content>
            Contains extern methods from "api-ms-win-shcore-scaling-l1-1-1.dll".
            </content>
            <content>
            Contains extern methods from "GDI32.dll".
            </content>
            <content>
            Contains extern methods from "KERNEL32.dll".
            </content>
            <content>
            Contains extern methods from "OLEAUT32.dll".
            </content>
            <content>
            Contains extern methods from "UIAutomationCore.dll".
            </content>
            <content>
            Contains extern methods from "USER32.dll".
            </content>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetDpiForMonitor(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE,System.UInt32@,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetDpiForMonitor(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE,System.UInt32*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetDpiForMonitor(Windows.Win32.Graphics.Gdi.HMONITOR,Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE,System.UInt32*,System.UInt32*)">
            <summary>Queries the dots per inch (dpi) of a display.</summary>
            <param name="hmonitor">Handle of the monitor being queried.</param>
            <param name="dpiType">The type of DPI being queried. Possible values are from the <a href="https://docs.microsoft.com/windows/desktop/api/shellscalingapi/ne-shellscalingapi-monitor_dpi_type">MONITOR_DPI_TYPE</a> enumeration.</param>
            <param name="dpiX">The value of the DPI along the X axis. This value always refers to the horizontal edge, even when the screen is rotated.</param>
            <param name="dpiY">The value of the DPI along the Y axis. This value always refers to the vertical edge, even when the screen is rotated.</param>
            <returns>
            <para>This function returns one of the following values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>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-getdpiforwindow">GetDpiForWindow</a>. When you call <b>GetDpiForMonitor</b>, you will receive different DPI values depending on the DPI awareness of the calling application. DPI awareness is an application-level property usually defined in the application manifest. For more information about DPI awareness values, see <a href="https://docs.microsoft.com/windows/desktop/api/shellscalingapi/ne-shellscalingapi-process_dpi_awareness">PROCESS_DPI_AWARENESS</a>. The following table indicates how the results will differ based on the <b>PROCESS_DPI_AWARENESS</b> value of your application. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shellscalingapi/nf-shellscalingapi-getdpiformonitor#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_WINDOWPOSCHANGING">
            <summary>Sent to a window whose size, position, or place in the Z order is about to change as a result of a call to the SetWindowPos function or another window-management function.</summary>
            <returns>
            <para>Type: **LRESULT** If an application processes this message, it should return zero.</para>
            </returns>
            <remarks>
            <para>For a window with the [**WS\_OVERLAPPED**](window-styles.md) or **WS\_THICKFRAME** style, the [**DefWindowProc**](/windows/desktop/api/winuser/nf-winuser-defwindowproca) function sends the [**WM\_GETMINMAXINFO**](wm-getminmaxinfo.md) message to the window. This is done to validate the new size and position of the window and to enforce the [CS\_BYTEALIGNCLIENT](about-window-classes.md) and CS\_BYTEALIGNWINDOW client styles. By not passing the **WM\_WINDOWPOSCHANGING** message to the **DefWindowProc** function, an application can override these defaults. While this message is being processed, modifying any of the values in [**WINDOWPOS**](/windows/win32/api/winuser/ns-winuser-windowpos) affects the window's new size, position, or place in the Z order. An application can prevent changes to the window by setting or clearing the appropriate bits in the **flags** member of **WINDOWPOS**.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/winmsg/wm-windowposchanging#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_GETMINMAXINFO">
            <summary>Sent to a window when the size or position of the window is about to change. An application can use this message to override the window's default maximized size and position, or its default minimum or maximum tracking size.</summary>
            <returns>
            <para>Type: **LRESULT** If an application processes this message, it should return zero.</para>
            </returns>
            <remarks>The maximum tracking size is the largest window size that can be produced by using the borders to size the window. The minimum tracking size is the smallest window size that can be produced by using the borders to size the window.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_EXITSIZEMOVE">
            <summary>Sent one time to a window, after it has exited the moving or sizing modal loop.</summary>
            <returns>
            <para>Type: **LRESULT** An application should return zero if it processes this message.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/winmsg/wm-exitsizemove">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERUPDATE">
            <summary>Posted to provide an update on a pointer that made contact over the client area of a window or on a hovering uncaptured pointer over the client area of a window.</summary>
            <returns>
            <para>If an 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>Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected. A [**WM_POINTERENTER**](wm-pointerenter.md) message is generated if a hovering pointer is detected. A [**WM_POINTERDOWN**](wm-pointerdown.md) message followed by a **WM_POINTERENTER** message is generated if a non-hovering pointer is detected. During its lifetime, a pointer may generate a series of **WM_POINTERUPDATE** messages while it is hovering or in contact. The lifetime of a pointer ends when it is no longer detected. This generates a [**WM_POINTERLEAVE**](wm-pointerleave.md) message. When a pointer is aborted, [**POINTER_FLAG_CANCELED**](pointer-flags-contants.md) is set. A [**WM_POINTERLEAVE**](wm-pointerleave.md) message may also be generated when a non-captured pointer moves outside the bounds of a window. To obtain the horizontal and vertical position of a pointer, use the following:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerupdate#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERENTER">
            <summary>Sent to a window when a new pointer enters detection range over the window (hover) or when an existing pointer moves within the boundaries of the window.</summary>
            <returns>
            <para>If an 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>The **WM_POINTERENTER** notification can be used by a window to provide feedback to the user while the pointer is over its surface or to otherwise react to the presence of a pointer over its surface. This notification is only sent to the window that is receiving input for the pointer. The following table lists some of the situations in which this notification is sent.</para>
            <para>| Action                                                   | Flags Set                                                                                                                                         | Notifications Sent To                                 | |----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------| | A new pointer enters detection range (hover).            | [**IS_POINTER_NEW_WPARAM**](/windows/win32/api/winuser/nf-winuser-is_pointer_new_wparam)<br/> [**IS_POINTER_INRANGE_WPARAM**](/windows/win32/api/winuser/nf-winuser-is_pointer_new_wparam)<br/> | Window over which the pointer enters detection range. | | A hovering pointer crosses within the window boundaries. | [**IS_POINTER_INRANGE_WPARAM**](/windows/win32/api/winuser/nf-winuser-is_pointer_inrange_wparam)<br/>                                                                      | Window within which the pointer has crossed.          |</para>
            <para>> ![Important] > When a window loses capture of a pointer and it receives the [**WM_POINTERCAPTURECHANGED**](wm-pointercapturechanged.md) notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired [**WM_POINTERDOWN**](wm-pointerdown.md)/[**WM_POINTERUP**](wm-pointerup.md) or **WM_POINTERENTER**/[**WM_POINTERLEAVE**](wm-pointerleave.md) notifications.</para>
            <para>When inputs come from the mouse, as a result of mouse and pointer message integration, **WM_POINTERENTER** is not sent.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerenter#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERLEAVE">
            <summary>Sent to a window when a pointer leaves detection range over the window (hover) or when a pointer moves outside the boundaries of the window.</summary>
            <returns>
            <para>If an 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>The **WM_POINTERLEAVE** notification can be used by a window to change mode or stop any feedback to the user while the pointer is over the window surface. This notification is only sent to the window that is receiving input for the pointer. The following table lists some of the situations in which this notification is sent.</para>
            <para>| Action                                        | Flags Set                                                         | Notifications Sent To                                | |-----------------------------------------------|-------------------------------------------------------------------|------------------------------------------------------| | A hovering pointer crosses window boundaries. | [**IS_POINTER_INRANGE_WPARAM**](/windows/win32/api/winuser/nf-winuser-is_pointer_inrange_wparam) | Window outside of whose boundary the pointer moved.  | | A pointer goes out of detection range.        | N/A                                                               | Window for which the pointer leaves detection range. |</para>
            <para>> ![Important] > When a window loses capture of a pointer and it receives the [**WM_POINTERCAPTURECHANGED**](wm-pointercapturechanged.md) notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired [**WM_POINTERDOWN**](wm-pointerdown.md)/[**WM_POINTERUP**](wm-pointerup.md) or [**WM_POINTERENTER**](wm-pointerenter.md)/**WM_POINTERLEAVE** notifications.</para>
            <para>If contact is maintained with the input digitizer and the pointer moves outside the window, **WM_POINTERLEAVE** is not generated. **WM_POINTERLEAVE** is generated only when a hovering pointer crosses window boundaries or contact is terminated. **WM_POINTERLEAVE** is posted to the posted message queue if the input is originated from a mouse device.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerleave#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERDOWN">
            <summary>Posted when a pointer makes contact over the client area of a window.</summary>
            <returns>
            <para>If an 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>> ![Important] > When a window loses capture of a pointer and it receives the [**WM_POINTERCAPTURECHANGED**](wm-pointercapturechanged.md) notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired **WM_POINTERDOWN**/[**WM_POINTERUP**](wm-pointerup.md) or [**WM_POINTERENTER**](wm-pointerenter.md)/[**WM_POINTERLEAVE**](wm-pointerleave.md) notifications.</para>
            <para>Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected. A [**WM_POINTERENTER**](wm-pointerenter.md) message is generated if a hovering pointer is detected. A **WM_POINTERDOWN** message followed by a **WM_POINTERENTER** message is generated if a non-hovering pointer is detected. During its lifetime, a pointer may generate a series of [**WM_POINTERUPDATE**](wm-pointerupdate.md) messages while it is hovering or in contact. The lifetime of a pointer ends when it is no longer detected. This generates a [**WM_POINTERLEAVE**](wm-pointerleave.md) message. When a pointer is aborted, [**POINTER_FLAG_CANCELED**](pointer-flags-contants.md) is set. A [**WM_POINTERLEAVE**](wm-pointerleave.md) message may also be generated when a non-captured pointer moves outside the bounds of a window. To obtain the horizontal and vertical position of a pointer, use the following:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputmsg/wm-pointerdown#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_POINTERUP">
            <summary>Posted when a pointer that made contact over the client area of a window breaks contact.</summary>
            <returns>
            <para>If an 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>> ![Important] > When a window loses capture of a pointer and it receives the [**WM_POINTERCAPTURECHANGED**](wm-pointercapturechanged.md) notification, it typically will not receive any further notifications. For this reason, it is important that you not make any assumptions based on evenly paired [**WM_POINTERDOWN**](wm-pointerdown.md)/**WM_POINTERUP** or [**WM_POINTERENTER**](wm-pointerenter.md)/[**WM_POINTERLEAVE**](wm-pointerleave.md) notifications.</para>
            <para>Each pointer has a unique pointer identifier during its lifetime. The lifetime of a pointer begins when it is first detected. A [**WM_POINTERENTER**](wm-pointerenter.md) message is generated if a hovering pointer is detected. A [**WM_POINTERDOWN**](wm-pointerdown.md) message followed by a **WM_POINTERENTER** message is generated if a non-hovering pointer is detected. During its lifetime, a pointer may generate a series of [**WM_POINTERUPDATE**](wm-pointerupdate.md) messages while it is hovering or in contact. The lifetime of a pointer ends when it is no longer detected. This generates a [**WM_POINTERLEAVE**](wm-pointerleave.md) message. When a pointer is aborted, [**POINTER_FLAG_CANCELED**](pointer-flags-contants.md) is set. A [**WM_POINTERLEAVE**](wm-pointerleave.md) message may also be generated when a non-captured pointer moves outside the bounds of a window. To obtain the horizontal and vertical position of a pointer, use the following: 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/inputmsg/wm-pointerup#">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="F:Windows.Win32.PInvoke.WM_SETFOCUS">
            <summary>Sent to a window after it has gained the keyboard focus.</summary>
            <returns>An application should return zero if it processes this message.</returns>
            <remarks>To display a caret, an application should call the appropriate caret functions when it receives the **WM\_SETFOCUS** message.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_KILLFOCUS">
            <summary>Sent to a window immediately before it loses the keyboard focus.</summary>
            <returns>An application should return zero if it processes this message.</returns>
            <remarks>
            <para>If an application is displaying a caret, the caret should be destroyed at this point. While processing this message, do not make any function calls that display or activate a window. This causes the thread to yield control and can cause the application to stop responding to messages. For more information, see [Message Deadlocks](/windows/desktop/winmsg/about-messages-and-message-queues).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/inputdev/wm-killfocus#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_NCCREATE">
            <summary>Sent prior to the WM\_CREATE message when a window is first created.</summary>
            <returns>
            <para>Type: **LRESULT** If an application processes this message, it should return **TRUE** to continue creation of the window. If the application returns **FALSE**, the [**CreateWindow**](/windows/win32/api/winuser/nf-winuser-createwindowa) or [**CreateWindowEx**](/windows/win32/api/winuser/nf-winuser-createwindowexa) function will return a **NULL** handle.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/winmsg/wm-nccreate">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.WM_NCDESTROY">
            <summary>Notifies a window that its nonclient area is being destroyed. The DestroyWindow function sends the WM\_NCDESTROY message to the window following the WM\_DESTROY message.</summary>
            <returns>
            <para>Type: **LRESULT** If an application processes this message, it should return zero.</para>
            </returns>
            <remarks>This message frees any memory internally allocated for the window.</remarks>
        </member>
        <member name="F:Windows.Win32.PInvoke.IDC_ARROW">
            <summary>Standard arrow cursor.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from 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.GetModuleHandle(System.String)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetModuleHandle(Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetModuleHandle(Windows.Win32.Foundation.PCWSTR)">
            <summary>Retrieves a module handle for the specified module. The module must have been loaded by the calling process. (Unicode)</summary>
            <param name="lpModuleName">
            <para>The name of the loaded module (either a .dll or .exe file). If the file name extension is omitted, the default library extension .dll is appended. The file name string can include a trailing point character (.) to indicate that the module name has no extension. The string does not have to specify a path. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). The name is compared (case independently) to the names of modules currently mapped into the address space of the calling process.</para>
            <para>If this parameter is NULL, <b>GetModuleHandle</b> returns a handle to the file used to create the calling process (.exe file). The <b>GetModuleHandle</b> function does not retrieve handles for modules that were loaded using the <b>LOAD_LIBRARY_AS_DATAFILE</b> flag. For more information, see <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexa">LoadLibraryEx</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlew#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is a handle to the specified module. If the function fails, the return value is NULL. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>The returned handle is not global or inheritable. It cannot be duplicated or used by another process. If <i>lpModuleName</i> does not include a path and there is more than one loaded module with the same base name and extension, you cannot predict which module handle will be returned. To work around this problem, you could specify a path, use <a href="https://docs.microsoft.com/windows/desktop/Msi/side-by-side-assemblies">side-by-side assemblies</a>, or use <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandleexa">GetModuleHandleEx</a> to specify a memory location rather than a DLL name. The <b>GetModuleHandle</b> function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the <a href="https://docs.microsoft.com/windows/desktop/api/libloaderapi/nf-libloaderapi-freelibrary">FreeLibrary</a> function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by <b>GetModuleHandle</b> to the <b>FreeLibrary</b> function. Doing so can cause a DLL module to be unmapped prematurely. This function must be used carefully in a multithreaded application. There is no guarantee that the module handle remains valid between the time this function returns the handle and the time it is used. For example, suppose that a thread retrieves a module handle, but before it uses the handle, a second thread frees the module. If the system loads another module, it could reuse the module handle that was recently freed. Therefore, the first thread would have a handle to a different module  than the one intended.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlew#">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.SysFreeString(Windows.Win32.Foundation.BSTR)">
            <summary>Deallocates a string allocated previously by SysAllocString, SysAllocStringByteLen, SysReAllocString, SysAllocStringLen, or SysReAllocStringLen.</summary>
            <param name="bstrString">The previously allocated string. If this parameter is <b>NULL</b>, the function simply returns.</param>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oleauto/nf-oleauto-sysfreestring">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.UiaClientsAreListening">
            <summary>Gets a value that indicates whether any client application is subscribed to Microsoft UI Automation events.</summary>
            <returns>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">BOOL</a></b> <b>TRUE</b> if a client has subscribed to events; otherwise <b>FALSE</b>.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcoreapi/nf-uiautomationcoreapi-uiaclientsarelistening">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.UiaRaiseNotificationEvent(Windows.Win32.UI.Accessibility.IRawElementProviderSimple*,Windows.Win32.UI.Accessibility.NotificationKind,Windows.Win32.UI.Accessibility.NotificationProcessing,System.Runtime.InteropServices.SafeHandle,System.Runtime.InteropServices.SafeHandle)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.UiaRaiseNotificationEvent(Windows.Win32.UI.Accessibility.IRawElementProviderSimple*,Windows.Win32.UI.Accessibility.NotificationKind,Windows.Win32.UI.Accessibility.NotificationProcessing,Windows.Win32.Foundation.BSTR,Windows.Win32.Foundation.BSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.UiaRaiseNotificationEvent(Windows.Win32.UI.Accessibility.IRawElementProviderSimple*,Windows.Win32.UI.Accessibility.NotificationKind,Windows.Win32.UI.Accessibility.NotificationProcessing,Windows.Win32.Foundation.BSTR,Windows.Win32.Foundation.BSTR)">
            <summary>Called by providers to initiate a notification event.</summary>
            <param name="provider">The provider node where the notification event occurred.</param>
            <param name="notificationKind">The type of notification, as a [NotificationKind enumeration](../uiautomationcore/ne-uiautomationcore-notificationkind.md) value.</param>
            <param name="notificationProcessing">The preferred way to process a notification, as a [NotificationProcessing enumeration](../uiautomationcore/ne-uiautomationcore-notificationprocessing.md) value.</param>
            <param name="displayString">A string to display in the notification message.</param>
            <param name="activityId">A unique non-localized string to identify an action or group of actions. Use this to pass additional information to the event handler.</param>
            <returns>If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
            <remarks>If your window uses the [`WS_POPUP`](/windows/win32/winmsg/window-styles) style, it must also implement the [Window Control Pattern](/windows/win32/winauto/uiauto-implementingwindow) and handle the [WM_GETOBJECT](/windows/win32/winauto/wm-getobject) message (see [How to Expose a Server-Side UI Automation Provider](/windows/win32/winauto/uiauto-howto-expose-serverside-uiautomation-provider) for more details).</remarks>
        </member>
        <!-- Badly formed XML comment ignored for member "M:Windows.Win32.PInvoke.MapVirtualKey(System.UInt32,Windows.Win32.UI.Input.KeyboardAndMouse.MAP_VIRTUAL_KEY_TYPE)" -->
        <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.PInvoke.EnableMouseInPointer(Windows.Win32.Foundation.BOOL)">
            <summary>Enables the mouse to act as a pointer input device and send WM_POINTER messages.</summary>
            <param name="fEnable"><b>TRUE</b> to turn on mouse input support in <a href="https://docs.microsoft.com/windows/win32/inputmsg/messages">WM_POINTER</a>.</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>This function can be called only once in the context of a process lifetime.  Prior to the first call, Windows Store apps run with mouse-in-pointer enabled, as do any desktop applications that consume mshtml.dll.  All other desktop applications run with mouse-in-pointer disabled. On the first call in the process lifetime, the state is changed as specified and the call succeeds. On subsequent calls, the state will not change.  If the current state is not equal to the specified state, the call fails. Call <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-ismouseinpointerenabled">IsMouseInPointerEnabled</a> to verify the mouse-in-pointer state.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enablemouseinpointer#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetFocus(Windows.Win32.Foundation.HWND)">
            <summary>Sets the keyboard focus to the specified window. The window must be attached to the calling thread's message queue.</summary>
            <param name="hWnd">
            <para>Type: **HWND** A handle to the window that will receive the keyboard input. If this parameter is NULL, keystrokes are ignored.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setfocus#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: **HWND** If the function succeeds, the return value is the handle to the window that previously had the keyboard focus. If the *hWnd* parameter is invalid or the window is not attached to the calling thread's message queue, the return value is NULL. To get extended error information, call [GetLastError function](../errhandlingapi/nf-errhandlingapi-getlasterror.md). Extended error ERROR_INVALID_PARAMETER (0x57) means that window is in disabled state.</para>
            </returns>
            <remarks>
            <para>This function sends a [WM_KILLFOCUS](/windows/desktop/inputdev/wm-killfocus) message to the window that loses the keyboard focus and a [WM_SETFOCUS](/windows/desktop/inputdev/wm-setfocus) message to the window that receives the keyboard focus. It also activates either the window that receives the focus or the parent of the window that receives the focus. If a window is active but does not have the focus, any key pressed produces the [WM_SYSCHAR](/windows/desktop/menurc/wm-syschar), [WM_SYSKEYDOWN](/windows/desktop/inputdev/wm-syskeydown), or [WM_SYSKEYUP](/windows/desktop/inputdev/wm-syskeyup) message. If the VK_MENU key is also pressed, bit 30 of the *lParam* parameter of the message is set. Otherwise, the messages produced do not have this bit set. By using the [AttachThreadInput function](nf-winuser-attachthreadinput.md), a thread can attach its input processing to another thread. This allows a thread to call SetFocus to set the keyboard focus to a window attached to another thread's message queue.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setfocus#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DestroyMenu(Windows.Win32.UI.WindowsAndMessaging.HMENU)">
            <summary>Destroys the specified menu and frees any memory that the menu occupies.</summary>
            <param name="hMenu">
            <para>Type: <b>HMENU</b> A handle to the menu to be destroyed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroymenu#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>Before closing, an application must use the <b>DestroyMenu</b> function to destroy a menu not assigned to a window. A menu that is assigned to a window is automatically destroyed when the application closes. <b>DestroyMenu</b> is recursive, that is, it will destroy the menu and all its submenus.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroymenu#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateWindowEx(Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE,System.String,System.String,Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE,System.Int32,System.Int32,System.Int32,System.Int32,Windows.Win32.Foundation.HWND,System.Runtime.InteropServices.SafeHandle,System.Runtime.InteropServices.SafeHandle,System.Void*)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.CreateWindowEx(Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR,Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE,System.Int32,System.Int32,System.Int32,System.Int32,Windows.Win32.Foundation.HWND,Windows.Win32.UI.WindowsAndMessaging.HMENU,Windows.Win32.Foundation.HINSTANCE,System.Void*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.CreateWindowEx(Windows.Win32.UI.WindowsAndMessaging.WINDOW_EX_STYLE,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR,Windows.Win32.UI.WindowsAndMessaging.WINDOW_STYLE,System.Int32,System.Int32,System.Int32,System.Int32,Windows.Win32.Foundation.HWND,Windows.Win32.UI.WindowsAndMessaging.HMENU,Windows.Win32.Foundation.HINSTANCE,System.Void*)">
            <summary>Creates an overlapped, pop-up, or child window with an extended window style; otherwise, this function is identical to the CreateWindow function. (Unicode)</summary>
            <param name="dwExStyle">
            <para>Type: <b>DWORD</b> The extended window style of the window being created. For a list of possible values, see  <a href="https://docs.microsoft.com/windows/desktop/winmsg/extended-window-styles">Extended Window Styles</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpClassName">
            <para>Type: <b>LPCTSTR</b> A <b>null</b>-terminated string or a class atom created by a previous call to the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassa">RegisterClass</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a> function. The atom must be in the low-order word of <i>lpClassName</i>; the high-order word must be zero. If <i>lpClassName</i> is a string, it specifies the window class name. The class name can be any name registered with <b>RegisterClass</b> or <b>RegisterClassEx</b>, provided that the module that registers the class is also the module that creates the window. The class name can also be any of the predefined <a href="https://docs.microsoft.com/windows/desktop/winmsg/about-window-classes">system class</a> names.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpWindowName">
            <para>Type: <b>LPCTSTR</b> The window name. If the window style specifies a title bar, the window title pointed to by <i>lpWindowName</i> is displayed in the title bar. When using <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowa">CreateWindow</a> to create controls, such as buttons, check boxes, and static controls, use <i>lpWindowName</i> to specify the text of the control. When creating a static control with the <b>SS_ICON</b> style, use <i>lpWindowName</i> to specify the icon name or identifier. To specify an identifier, use the syntax "#<i>num</i>".</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwStyle">
            <para>Type: <b>DWORD</b> The style of the window being created. This parameter can be a combination of the <a href="https://docs.microsoft.com/windows/desktop/winmsg/window-styles">window style values</a>, plus the control styles indicated in the Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="X">
            <para>Type: <b>int</b> The initial horizontal position of the window. For an overlapped or pop-up window, the <i>x</i> parameter is the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window, <i>x</i> is the x-coordinate of the upper-left corner of the window relative to the upper-left corner of the parent window's client area. If <i>x</i> is set to <b>CW_USEDEFAULT</b>, the system selects the default position for the window's upper-left corner and ignores the <i>y</i> parameter. <b>CW_USEDEFAULT</b> is valid only for overlapped windows; if it is specified for a pop-up or child window, the <i>x</i> and <i>y</i> parameters are set to zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="Y">
            <para>Type: <b>int</b> The initial vertical position of the window. For an overlapped or pop-up window, the <i>y</i> parameter is the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window, <i>y</i> is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left corner of the parent window's client area. For a list box <i>y</i> is the initial y-coordinate of the upper-left corner of the list box's client area relative to the upper-left corner of the parent window's client area.</para>
            <para>If an overlapped window is created with the <b>WS_VISIBLE</b> style bit set and the <i>x</i> parameter is set to <b>CW_USEDEFAULT</b>, then the <i>y</i> parameter determines how the window is shown. If the <i>y</i> parameter is <b>CW_USEDEFAULT</b>, then the window manager calls <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-showwindow">ShowWindow</a> with the <b>SW_SHOW</b> flag after the window has been created. If the <i>y</i> parameter is some other value, then the window manager calls <b>ShowWindow</b> with that value as the <i>nCmdShow</i> parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nWidth">
            <para>Type: <b>int</b> The width, in device units, of the window. For overlapped windows, <i>nWidth</i> is the window's width, in screen coordinates, or <b>CW_USEDEFAULT</b>. If <i>nWidth</i> is <b>CW_USEDEFAULT</b>, the system selects a default width and height for the window; the default width extends from the initial x-coordinates to the right edge of the screen; the default height extends from the initial y-coordinate to the top of the icon area. <b>CW_USEDEFAULT</b> is valid only for overlapped windows; if <b>CW_USEDEFAULT</b> is specified for a pop-up or child window, the <i>nWidth</i> and <i>nHeight</i> parameter are set to zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nHeight">
            <para>Type: <b>int</b> The height, in device units, of the window. For overlapped windows, <i>nHeight</i> is the window's height, in screen coordinates. If the <i>nWidth</i> parameter is set to <b>CW_USEDEFAULT</b>, the system ignores <i>nHeight</i>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="hWndParent">
            <para>Type: <b>HWND</b> A handle to the parent or owner window of the window being created. To create a child window or an owned window, supply a valid window handle. This parameter is optional for pop-up windows. To create a <a href="https://docs.microsoft.com/windows/desktop/winmsg/window-features">message-only window</a>, supply <b>HWND_MESSAGE</b> or a handle to an existing message-only window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="hMenu">
            <para>Type: <b>HMENU</b> A handle to a menu, or specifies a child-window identifier, depending on the window style. For an overlapped or pop-up window, <i>hMenu</i> identifies the menu to be used with the window; it can be <b>NULL</b> if the class menu is to be used. For a child window, <i>hMenu</i> specifies the child-window identifier, an integer value used by a dialog box control to notify its parent about events. The application determines the child-window identifier; it must be unique for all child windows with the same parent window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="hInstance">
            <para>Type: <b>HINSTANCE</b> A handle to the instance of the module to be associated with the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpParam">
            <para>Type: <b>LPVOID</b> Pointer to a value to be passed to the window through the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-createstructa">CREATESTRUCT</a> structure (<b>lpCreateParams</b> member) pointed to by the <i>lParam</i> param of the <b>WM_CREATE</b> message.  This message is sent to the created window by this function before it returns. If an application calls <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowa">CreateWindow</a> to create a MDI client window, <i>lpParam</i> should point to a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-clientcreatestruct">CLIENTCREATESTRUCT</a> structure. If an MDI client window calls <b>CreateWindow</b> to create an MDI child window, <i>lpParam</i> should point to a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-mdicreatestructa">MDICREATESTRUCT</a> structure. <i>lpParam</i> may be <b>NULL</b> if no additional data is needed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HWND</b> If the function succeeds, the return value is a handle to the new window. 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>. This function typically fails for one of the following reasons: </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The <b>CreateWindowEx</b> function sends <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-nccreate">WM_NCCREATE</a>, <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-nccalcsize">WM_NCCALCSIZE</a>, and <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-create">WM_CREATE</a> messages to the window being created. If the created window is a child window, its default position is at the bottom of the Z-order. If the created window is a top-level window, its default position is at the top of the Z-order (but beneath all topmost windows unless the created window is itself topmost). For information on controlling whether the Taskbar displays a button for the created window, see <a href="https://docs.microsoft.com/windows/desktop/shell/taskbar">Managing Taskbar Buttons</a>. For information on removing a window, see the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-destroywindow">DestroyWindow</a> function. The following predefined control classes can be specified in the <i>lpClassName</i> parameter. Note the corresponding control styles you can use in the <i>dwStyle</i> parameter. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-createwindowexw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DefWindowProc(Windows.Win32.Foundation.HWND,System.UInt32,Windows.Win32.Foundation.WPARAM,Windows.Win32.Foundation.LPARAM)">
            <summary>Calls the default window procedure to provide default processing for any window messages that an application does not process. (Unicode)</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window procedure that received the message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-defwindowprocw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="Msg">
            <para>Type: <b>UINT</b> The message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-defwindowprocw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="wParam">
            <para>Type: <b>WPARAM</b> Additional message information. The content of this parameter depends on the value of the <i>Msg</i> parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-defwindowprocw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lParam">
            <para>Type: <b>LPARAM</b> Additional message information. The content of this parameter depends on the value of the <i>Msg</i> parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-defwindowprocw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>LRESULT</b> The return value is the result of the message processing and depends on the message.</para>
            </returns>
            <remarks>
            <para>> [!NOTE] > The winuser.h header defines DefWindowProc 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-defwindowprocw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.DestroyWindow(Windows.Win32.Foundation.HWND)">
            <summary>Destroys the specified window.</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window to be destroyed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroywindow#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>A thread cannot use <b>DestroyWindow</b> to destroy a window created by a different thread. If the window being destroyed is a child window that does not have the <b>WS_EX_NOPARENTNOTIFY</b> style, a <a href="https://docs.microsoft.com/windows/win32/inputmsg/wm-parentnotify">WM_PARENTNOTIFY</a> message is sent to the parent.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroywindow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetSystemMetricsForDpi(Windows.Win32.UI.WindowsAndMessaging.SYSTEM_METRICS_INDEX,System.UInt32)">
            <summary>Retrieves the specified system metric or system configuration setting taking into account a provided DPI.</summary>
            <param name="nIndex">The system metric or configuration setting to be retrieved. See <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getsystemmetrics">GetSystemMetrics</a> for the possible values.</param>
            <param name="dpi">The DPI to use for scaling the metric.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>This function returns the same result as <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getsystemmetrics">GetSystemMetrics</a> but scales it according to an arbitrary DPI you provide if appropriate.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.RedrawWindow(Windows.Win32.Foundation.HWND,System.Nullable{Windows.Win32.Foundation.RECT},System.Runtime.InteropServices.SafeHandle,Windows.Win32.Graphics.Gdi.REDRAW_WINDOW_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.RedrawWindow(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.RECT*,Windows.Win32.Graphics.Gdi.HRGN,Windows.Win32.Graphics.Gdi.REDRAW_WINDOW_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.RedrawWindow(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.RECT*,Windows.Win32.Graphics.Gdi.HRGN,Windows.Win32.Graphics.Gdi.REDRAW_WINDOW_FLAGS)">
            <summary>The RedrawWindow function updates the specified rectangle or region in a window's client area.</summary>
            <param name="hWnd">A handle to the window to be redrawn. If this parameter is <b>NULL</b>, the desktop window is updated.</param>
            <param name="lprcUpdate">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure containing the coordinates, in device units, of the update rectangle. This parameter is ignored if the <i>hrgnUpdate</i> parameter identifies a region.</param>
            <param name="hrgnUpdate">A handle to the update region. If both the <i>hrgnUpdate</i> and <i>lprcUpdate</i> parameters are <b>NULL</b>, the entire client area is added to the update region.</param>
            <param name="flags">
            <para>One or more redraw flags. This parameter can be used to invalidate or validate a window, control repainting, and control which windows are affected by <b>RedrawWindow</b>. The following flags are used to invalidate the window. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-redrawwindow#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>When <b>RedrawWindow</b> is used to invalidate part of the desktop window, the desktop window does not receive a <a href="https://docs.microsoft.com/windows/desktop/gdi/wm-paint">WM_PAINT</a> message. To repaint the desktop, an application uses the RDW_ERASE flag to generate a <a href="https://docs.microsoft.com/windows/desktop/winmsg/wm-erasebkgnd">WM_ERASEBKGND</a> message.</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.MonitorFromWindow(Windows.Win32.Foundation.HWND,Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS)">
            <summary>The MonitorFromWindow function retrieves a handle to the display monitor that has the largest area of intersection with the bounding rectangle of a specified window.</summary>
            <param name="hwnd">A handle to the window of interest.</param>
            <param name="dwFlags">Determines the function's return value if the window does not intersect any display monitor.</param>
            <returns>
            <para>If the window 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 window. If the window does not intersect a display monitor, the return value depends on the value of <i>dwFlags</i>.</para>
            </returns>
            <remarks>If the window is currently minimized, <b>MonitorFromWindow</b> uses the rectangle of the window before it was minimized.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.MonitorFromPoint(System.Drawing.Point,Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS)">
            <summary>The MonitorFromPoint function retrieves a handle to the display monitor that contains a specified point.</summary>
            <param name="pt">A <a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a> structure that specifies the point of interest in virtual-screen coordinates.</param>
            <param name="dwFlags">Determines the function's return value if the point is not contained within any display monitor.</param>
            <returns>
            <para>If the point is contained by a display monitor, the return value is an <b>HMONITOR</b> handle to that display monitor. If the point is not contained by 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-monitorfrompoint">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.EnumDisplayMonitors(Windows.Win32.Graphics.Gdi.HDC,System.Nullable{Windows.Win32.Foundation.RECT},,Windows.Win32.Foundation.LPARAM)">
            <inheritdoc cref="!:EnumDisplayMonitors(winmdroot.Graphics.Gdi.HDC, winmdroot.Foundation.RECT*, delegate *unmanaged[Stdcall]&lt;global::Windows.Win32.Graphics.Gdi.HMONITOR,global::Windows.Win32.Graphics.Gdi.HDC,global::Windows.Win32.Foundation.RECT*,global::Windows.Win32.Foundation.LPARAM,global::Windows.Win32.Foundation.BOOL&gt;, winmdroot.Foundation.LPARAM)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.EnumDisplayMonitors(Windows.Win32.Graphics.Gdi.HDC,Windows.Win32.Foundation.RECT*,,Windows.Win32.Foundation.LPARAM)">
            <summary>The EnumDisplayMonitors function enumerates display monitors (including invisible pseudo-monitors associated with the mirroring drivers) that intersect a region formed by the intersection of a specified clipping rectangle and the visible region of a device context. EnumDisplayMonitors calls an application-defined MonitorEnumProc callback function once for each monitor that is enumerated. Note that GetSystemMetrics (SM_CMONITORS) counts only the display monitors.</summary>
            <param name="hdc">
            <para>A handle to a display device context that defines the visible region of interest. If this parameter is <b>NULL</b>, the <i>hdcMonitor</i> parameter passed to the callback function will be <b>NULL</b>, and the visible region of interest is the virtual screen that encompasses all the displays on the desktop.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enumdisplaymonitors#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lprcClip">
            <para>A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure that specifies a clipping rectangle. The region of interest is the intersection of the clipping rectangle with the visible region specified by <i>hdc</i>. If <i>hdc</i> is non-<b>NULL</b>, the coordinates of the clipping rectangle are relative to the origin of the <i>hdc</i>. If <i>hdc</i> is <b>NULL</b>, the coordinates are virtual-screen coordinates. This parameter can be <b>NULL</b> if you don't want to clip the region specified by <i>hdc</i>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enumdisplaymonitors#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpfnEnum">A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nc-winuser-monitorenumproc">MonitorEnumProc</a> application-defined callback function.</param>
            <param name="dwData">Application-defined data that <b>EnumDisplayMonitors</b> passes directly to the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nc-winuser-monitorenumproc">MonitorEnumProc</a> function.</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>There are two reasons to call the <b>EnumDisplayMonitors</b> function: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-enumdisplaymonitors#">Read more on 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.DestroyCursor(Windows.Win32.UI.WindowsAndMessaging.HCURSOR)">
            <summary>Destroys a cursor and frees any memory the cursor occupied. Do not use this function to destroy a shared cursor.</summary>
            <param name="hCursor">
            <para>Type: <b>HCURSOR</b> A handle to the cursor to be destroyed. The cursor must not be in use.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroycursor#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>The <b>DestroyCursor</b> function destroys a nonshared cursor. Do not use this function to destroy a shared cursor. A shared cursor is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared cursor: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-destroycursor#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.RegisterClassEx(Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.RegisterClassEx(Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.RegisterClassEx(Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW*)">
            <summary>Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function. (RegisterClassExW)</summary>
            <returns>
            <para>Type: <b>ATOM</b> If the function succeeds, the return value is a class atom that uniquely identifies the class being registered. This atom can only be used by the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowa">CreateWindow</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowexa">CreateWindowEx</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getclassinfoa">GetClassInfo</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getclassinfoexa">GetClassInfoEx</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-findwindowa">FindWindow</a>, <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-findwindowexa">FindWindowEx</a>, and <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-unregisterclassa">UnregisterClass</a> functions and the <b>IActiveIMMap::FilterClientWindows</b> method. 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 you register the window class by using <b>RegisterClassExA</b>, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using <b>RegisterClassExW</b>, the application requests that the system pass text parameters of messages as Unicode. The <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-iswindowunicode">IsWindowUnicode</a> function enables applications to query the nature of each window. For more information on ANSI and Unicode functions, see <a href="https://docs.microsoft.com/windows/desktop/Intl/conventions-for-function-prototypes">Conventions for Function Prototypes</a>. All window classes that an application registers are unregistered when it terminates. No window classes registered by a DLL are unregistered when the DLL is unloaded. A DLL must explicitly unregister its classes when it is unloaded.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-registerclassexw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetWindowLong(Windows.Win32.Foundation.HWND,Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX)">
            <summary>Retrieves information about the specified window. (GetWindowLongW)</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window and, indirectly, the class to which the window belongs.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getwindowlongw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nIndex">Type: <b>int</b></param>
            <returns>
            <para>Type: <b>LONG</b> If the function succeeds, the return value is the requested 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>. If <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setwindowlonga">SetWindowLong</a> has not been called previously, <b>GetWindowLong</b> returns zero for values in the extra window or class memory.</para>
            </returns>
            <remarks>
            <para>Reserve extra window memory by specifying a nonzero value in the <b>cbWndExtra</b> member of the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-wndclassexa">WNDCLASSEX</a> structure used with the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getwindowlongw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetWindowLong(Windows.Win32.Foundation.HWND,Windows.Win32.UI.WindowsAndMessaging.WINDOW_LONG_PTR_INDEX,System.Int32)">
            <summary>Changes an attribute of the specified window. The function also sets the 32-bit (long) value at the specified offset into the extra window memory. (Unicode)</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window and, indirectly, the class to which the window belongs.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowlongw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nIndex">Type: <b>int</b></param>
            <param name="dwNewLong">
            <para>Type: <b>LONG</b> The replacement value.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowlongw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>LONG</b> If the function succeeds, the return value is the previous value of the specified 32-bit integer. 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 previous value of the specified 32-bit integer is zero, and the function succeeds, the return value is zero, but the function does not clear the last error information. This makes it difficult to determine success or failure. To deal with this, you should clear the last error information by calling <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-setlasterror">SetLastError</a> with 0 before calling <b>SetWindowLong</b>. Then, function failure will be indicated by a return value of zero and a <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> result that is nonzero.</para>
            </returns>
            <remarks>
            <para>Certain window data is cached, so changes you make using <b>SetWindowLong</b> will not take effect until you call the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setwindowpos">SetWindowPos</a> function. Specifically, if you change any of the frame styles, you must call <b>SetWindowPos</b> with the <b>SWP_FRAMECHANGED</b> flag for the cache to be updated properly. If you use <b>SetWindowLong</b> with the <b>GWL_WNDPROC</b> index to replace the window procedure, the window procedure must conform to the guidelines specified in the description of the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms633573(v=vs.85)">WindowProc</a> callback function. If you use <b>SetWindowLong</b> with the <b>DWL_MSGRESULT</b> index to set the return value for a message processed by a dialog procedure, you should return <b>TRUE</b> directly afterward. Otherwise, if you call any function that results in your dialog procedure receiving a window message, the nested window message could overwrite the return value you set using <b>DWL_MSGRESULT</b>. Calling <b>SetWindowLong</b> with the <b>GWL_WNDPROC</b> index creates a subclass of the window class used to create the window. An application can subclass a system class, but should not subclass a window class created by another process. The <b>SetWindowLong</b> function creates the window subclass by changing the window procedure associated with a particular window class, causing the system to call the new window procedure instead of the previous one. An application must pass any messages not processed by the new window procedure to the previous window procedure by calling <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-callwindowproca">CallWindowProc</a>. This allows the application to create a chain of window procedures. Reserve extra window memory by specifying a nonzero value in the <b>cbWndExtra</b> member of the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-wndclassexa">WNDCLASSEX</a> structure used with the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a> function. You must not call <b>SetWindowLong</b> with the <b>GWL_HWNDPARENT</b> index to change the parent of a child window. Instead, use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setparent">SetParent</a> function. If the window has a class style of <b>CS_CLASSDC</b> or <b>CS_OWNDC</b>, do not set the extended window styles <b>WS_EX_COMPOSITED</b> or <b>WS_EX_LAYERED</b>. Calling <b>SetWindowLong</b> to set the style on a progressbar will reset its position.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowlongw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetWindowPos(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.HWND,System.Int32,System.Int32,System.Int32,System.Int32,Windows.Win32.UI.WindowsAndMessaging.SET_WINDOW_POS_FLAGS)">
            <summary>Changes the size, position, and Z order of a child, pop-up, or top-level window. These windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the Z order.</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="hWndInsertAfter">Type: <b>HWND</b></param>
            <param name="X">
            <para>Type: <b>int</b> The new position of the left side of the window, in client coordinates.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="Y">
            <para>Type: <b>int</b> The new position of the top of the window, in client coordinates.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="cx">
            <para>Type: <b>int</b> The new width of the window, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="cy">
            <para>Type: <b>int</b> The new height of the window, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="uFlags">Type: <b>UINT</b></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>As part of the Vista re-architecture, all services were moved off the interactive desktop into Session 0. hwnd and window manager operations are only effective inside a session and cross-session attempts to manipulate the hwnd will fail. For more information, see <a href="https://docs.microsoft.com/previous-versions/aa480152(v=msdn.10)">The Windows Vista Developer Story: Application Compatibility Cookbook</a>. If you have changed certain window data using <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setwindowlonga">SetWindowLong</a>, you must call <b>SetWindowPos</b> for the changes to take effect. Use the following combination for <i>uFlags</i>: <c>SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED</c>. A window can be made a topmost window either by setting the <i>hWndInsertAfter</i> parameter to <b>HWND_TOPMOST</b> and ensuring that the <b>SWP_NOZORDER</b> flag is not set, or by setting a window's position in the Z order so that it is above any existing topmost windows. When a non-topmost window is made topmost, its owned windows are also made topmost. Its owners, however, are not changed. If neither the <b>SWP_NOACTIVATE</b> nor <b>SWP_NOZORDER</b> flag is specified (that is, when the application requests that a window be simultaneously activated and its position in the Z order changed), the value specified in <i>hWndInsertAfter</i> is used only in the following circumstances. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-setwindowpos#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.LoadCursor(System.Runtime.InteropServices.SafeHandle,System.String)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.LoadCursor(Windows.Win32.Foundation.HINSTANCE,Windows.Win32.Foundation.PCWSTR)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.LoadCursor(Windows.Win32.Foundation.HINSTANCE,Windows.Win32.Foundation.PCWSTR)">
            <summary>Loads the specified cursor resource from the executable (.EXE) file associated with an application instance. (Unicode)</summary>
            <param name="hInstance">
            <para>Type: <b>HINSTANCE</b> A handle to an instance of the module whose executable file contains the cursor to be loaded.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-loadcursorw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpCursorName">
            <para>Type: <b>LPCTSTR</b> The name of the cursor resource to be loaded. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. The <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-makeintresourcea">MAKEINTRESOURCE</a> macro can also be used to create this value. To use one of the predefined cursors, the application must set the <i>hInstance</i> parameter to <b>NULL</b> and the <i>lpCursorName</i> parameter to one the following values. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-loadcursorw#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>Type: <b>HCURSOR</b> If the function succeeds, the return value is the handle to the newly loaded cursor. 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 <b>LoadCursor</b> function loads the cursor resource only if it has not been loaded; otherwise, it retrieves the handle to the existing resource. This function returns a valid cursor handle only if the <i>lpCursorName</i> parameter is a pointer to a cursor resource. If <i>lpCursorName</i> is a pointer to any type of resource other than a cursor (such as an icon), the return value is not <b>NULL</b>, even though it is not a valid cursor handle. The <b>LoadCursor</b> function searches the cursor resource most appropriate for the cursor for the current display device. The cursor resource can be a color or monochrome bitmap. <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-loadcursorw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.keybd_event(System.Byte,System.Byte,Windows.Win32.UI.Input.KeyboardAndMouse.KEYBD_EVENT_FLAGS,System.UIntPtr)">
            <summary>Synthesizes a keystroke.</summary>
            <param name="bVk">
            <para>Type: <b>BYTE</b> A virtual-key code. The code must be a value in the range 1 to 254. For a complete list, see <a href="https://docs.microsoft.com/windows/desktop/inputdev/virtual-key-codes">Virtual Key Codes</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-keybd_event#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="bScan">
            <para>Type: <b>BYTE</b> A hardware scan code for the key.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-keybd_event#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwFlags">Type: <b>DWORD</b></param>
            <param name="dwExtraInfo">
            <para>Type: <b>ULONG_PTR</b> An additional value associated with the key stroke.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-keybd_event#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <remarks>
            <para>An application can simulate a press of the PRINTSCRN key in order to obtain a screen snapshot and save it to the clipboard. To do this, call <b>keybd_event</b> with the <i>bVk</i> parameter set to <b>VK_SNAPSHOT</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-keybd_event#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetWindowRect(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.RECT@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetWindowRect(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.RECT*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetWindowRect(Windows.Win32.Foundation.HWND,Windows.Win32.Foundation.RECT*)">
            <summary>Retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getwindowrect#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="lpRect">
            <para>Type: <b>LPRECT</b> A pointer to a  <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure that receives the screen coordinates of the upper-left and lower-right corners of the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getwindowrect#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>In conformance with conventions for the <a href="https://docs.microsoft.com/windows/desktop/api/windef/ns-windef-rect">RECT</a> structure, the bottom-right coordinates of the returned rectangle are exclusive. In other words, the pixel at (<b>right</b>, <b>bottom</b>) lies immediately outside the rectangle. GetWindowRect is virtualized for DPI. In Windows Vista and later, the Window Rect now includes the area occupied by the drop shadow. Calling GetWindowRect will have different behavior depending on whether the window has ever been shown or not.  If the window has not been shown before, GetWindowRect will not include the area of the drop shadow. To get the window bounds excluding the drop shadow, use <a href="https://docs.microsoft.com/windows/win32/api/dwmapi/nf-dwmapi-dwmgetwindowattribute">DwmGetWindowAttribute</a>, specifying <b>DWMWA_EXTENDED_FRAME_BOUNDS</b>.  Note that unlike the Window Rect, the DWM Extended Frame Bounds are not adjusted for DPI.  Getting the extended frame bounds can only be done after the window has been shown at least once.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-getwindowrect#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.ShowWindow(Windows.Win32.Foundation.HWND,Windows.Win32.UI.WindowsAndMessaging.SHOW_WINDOW_CMD)">
            <summary>Sets the specified window's show state.</summary>
            <param name="hWnd">
            <para>Type: <b>HWND</b> A handle to the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-showwindow#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="nCmdShow">Type: <b>int</b></param>
            <returns>
            <para>Type: <b>BOOL</b> If the window was previously visible, the return value is nonzero. If the window was previously hidden, the return value is zero.</para>
            </returns>
            <remarks>
            <para>To perform certain special effects when showing or hiding a window, use <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-animatewindow">AnimateWindow</a>. The first time an application calls <b>ShowWindow</b>, it should use the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-winmain">WinMain</a> function's <i>nCmdShow</i> parameter as its <i>nCmdShow</i> parameter. Subsequent calls to <b>ShowWindow</b> must use one of the values in the given list, instead of the one specified by the <b>WinMain</b> function's <i>nCmdShow</i> parameter. As noted in the discussion of the <i>nCmdShow</i> parameter, the <i>nCmdShow</i> value is ignored in the first call to <b>ShowWindow</b> if the program that launched the application specifies startup information in the  structure. In this case, <b>ShowWindow</b> uses the information specified in the <a href="https://docs.microsoft.com/windows/desktop/api/processthreadsapi/ns-processthreadsapi-startupinfoa">STARTUPINFO</a> structure to show the window. On subsequent calls, the application must call <b>ShowWindow</b> with <i>nCmdShow</i> set to <b>SW_SHOWDEFAULT</b> to use the startup information provided by the program that launched the application. This behavior is designed for the following situations: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-showwindow#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="T:Windows.Win32.System.Com.BINDPTR">
            <summary>Describes a pointer.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-bindptr">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.BINDPTR.lpfuncdesc">
            <summary>Pointer to a function.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.BINDPTR.lpvardesc">
            <summary>Pointer to a variable, constant, or data member.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.BINDPTR.lptcomp">
            <summary>The <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> that binds the pointer.</summary>
        </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.CALLCONV">
            <summary>Identifies the calling convention used by a member function described in the METHODDATA structure.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-callconv">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_FASTCALL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_CDECL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_MSCPASCAL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_PASCAL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_MACPASCAL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_STDCALL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_FPFASTCALL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_SYSCALL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_MPWCDECL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_MPWPASCAL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Com.CALLCONV.CC_MAX">
            <summary></summary>
        </member>
        <member name="T:Windows.Win32.System.Com.CY">
            <summary>The CY structure is useful for calculations involving money, or for any fixed-point calculation where accuracy is particularly important.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.CY.int64">
            <summary></summary>
        </member>
        <member name="T:Windows.Win32.System.Com.DESCKIND">
            <summary>Identifies the type description being bound to.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-desckind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_NONE">
            <summary>No match was found.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_FUNCDESC">
            <summary>A <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-funcdesc">FUNCDESC</a> was returned.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_VARDESC">
            <summary>A <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ns-oaidl-vardesc">VARDESC</a> was returned.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_TYPECOMP">
            <summary>A TYPECOMP was returned.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_IMPLICITAPPOBJ">
            <summary>An IMPLICITAPPOBJ was returned.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DESCKIND.DESCKIND_MAX">
            <summary>The end of the enum.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.DISPPARAMS">
            <summary>Contains the arguments passed to a method or property.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-dispparams">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.DISPPARAMS.rgvarg">
            <summary>
            <para>An array of arguments. **Note**: these arguments appear in reverse order</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-dispparams#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DISPPARAMS.rgdispidNamedArgs">
            <summary>The dispatch IDs of the named arguments.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DISPPARAMS.cArgs">
            <summary>The number of arguments.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.DISPPARAMS.cNamedArgs">
            <summary>The number of named arguments.</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.ELEMDESC">
            <summary>The ELEMDESC structure contains the type description and process-transfer information for a variable, a function, or a function parameter. (ELEMDESC)</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.ELEMDESC.tdesc">
            <summary>The type of the element.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.EXCEPINFO">
            <summary>Describes an exception that occurred during IDispatch::Invoke.</summary>
            <remarks>
            <para>Use the <b>pfnDeferredFillIn</b> field to enable an object to defer filling in the <b>bstrDescription</b>, <b>bstrHelpFile</b>, and <b>dwHelpContext</b> fields until they are needed. This field might be used, for example, if loading the string for the error is a time-consuming operation. To use deferred fill-in, the object puts a function pointer in this slot and does not fill any of the other fields except <b>wCode</b>, which is required. To get additional information, the caller passes the <b>EXCEPINFO</b> structure back to the <b>pexcepinfo</b> callback function, which fills in the additional information. When the ActiveX object and the ActiveX client are in different processes, the ActiveX object calls <b>pfnDeferredFillIn</b> before returning to the controller.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-excepinfo#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.wCode">
            <summary>The error code. Error codes should be greater than 1000. Either this field or the scode field must be filled in; the other must be set to 0.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.wReserved">
            <summary>Reserved. Should be 0.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.bstrSource">
            <summary>The name of the exception source. Typically, this is an application name. This field should be filled in by the implementer of <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.bstrDescription">
            <summary>The exception description to display. If no description is available, use null.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.bstrHelpFile">
            <summary>The fully qualified help file path. If no Help is available, use null.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.dwHelpContext">
            <summary>The help context ID.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.pvReserved">
            <summary>Reserved. Must be null.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.pfnDeferredFillIn">
            <summary>Provides deferred fill-in. If deferred fill-in is not desired, this field should be set to null.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.EXCEPINFO.scode">
            <summary>A return value that describes the error. Either this field or wCode (but not both) must be filled in; the other must be set to 0. (16-bit Windows versions only.)</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="T:Windows.Win32.System.Com.FUNCDESC">
            <summary>Describes a function. (FUNCDESC)</summary>
            <remarks>
            <para>The <b>cParams</b> field specifies the total number of required and optional parameters.</para>
            <para>The <b>cParamsOpt</b> field specifies the form of optional parameters accepted by the function, as follows: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-funcdesc#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.memid">
            <summary>The function member ID.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.lprgscode">
            <summary>The status code.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.lprgelemdescParam">
            <summary>Description of the element.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.funckind">
            <summary>Indicates the type of function (virtual, static, or dispatch-only).</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.invkind">
            <summary>The invocation type. Indicates whether this is a property function, and if so, which type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.callconv">
            <summary>The calling convention.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.cParams">
            <summary>The total number of parameters.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.cParamsOpt">
            <summary>The number of optional parameters.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.oVft">
            <summary>For FUNC_VIRTUAL, specifies the offset in the VTBL.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.cScodes">
            <summary>The number of possible return values.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.elemdescFunc">
            <summary>The function return type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCDESC.wFuncFlags">
            <summary>The function flags. See <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ne-oaidl-funcflags">FUNCFLAGS</a>.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.FUNCFLAGS">
            <summary>Specifies function flags.</summary>
            <remarks>
            <para>FUNCFLAG_FHIDDEN means that the property should never be shown in object browsers, property browsers, and so on. This function is useful for removing items from an object model. Code can bind to the member, but the user will never know that the member exists. FUNCFLAG_FNONBROWSABLE means that the property should not be displayed in a properties browser. It is used in circumstances in which an error would occur if the property were shown in a properties browser. FUNCFLAG_FRESRICTED means that macro-oriented programmers should not be allowed to access this member. These members are usually treated as _FHIDDEN by tools such as Visual Basic, with the main difference being that code cannot bind to those members.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-funcflags#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FRESTRICTED">
            <summary>The function should not be accessible from macro languages. This flag is intended for system-level functions or functions that type browsers should not display.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FSOURCE">
            <summary>The function returns an object that is a source of events.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FBINDABLE">
            <summary>The function that supports data binding.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FREQUESTEDIT">
            <summary>When set, any call to a method that sets the property results first in a call to <b>IPropertyNotifySink::OnRequestEdit</b>. The implementation of <b>OnRequestEdit</b> determines if the call is allowed to set the property.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FDISPLAYBIND">
            <summary>The function that is displayed to the user as bindable. FUNC_FBINDABLE must also be set.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FDEFAULTBIND">
            <summary>The function that best represents the object. Only one function in a type information can have this attribute.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FHIDDEN">
            <summary>The function should not be displayed to the user, although it exists and is bindable.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FUSESGETLASTERROR">
            <summary>The function supports <b>GetLastError</b>. If an error occurs during the function, the caller can call <b>GetLastError</b> to retrieve the error code.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FDEFAULTCOLLELEM">
            <summary>Permits an optimization in which the compiler looks for a member named xyz on the type of abc. If such a member is found and is flagged as an accessor function for an element of the default collection, then a call is generated to that member function. Permitted on members in dispinterfaces and interfaces; not permitted on modules. For more information, refer to defaultcollelem in Type Libraries and the Object Description Language.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FUIDEFAULT">
            <summary>The type information member is the default member for display in the user interface.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FNONBROWSABLE">
            <summary>The property appears in an object browser, but not in a properties browser.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FREPLACEABLE">
            <summary>Tags the interface as having default behaviors.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCFLAGS.FUNCFLAG_FIMMEDIATEBIND">
            <summary>Mapped as individual bindable properties.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.FUNCKIND">
            <summary>Specifies the function type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-funckind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCKIND.FUNC_VIRTUAL">
            <summary>The function is accessed the same as PUREVIRTUAL, except the function has an implementation.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCKIND.FUNC_PUREVIRTUAL">
            <summary>The function is accessed through the virtual function table (VTBL), and takes an implicit this pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCKIND.FUNC_NONVIRTUAL">
            <summary>The function is accessed by static address and takes an implicit this pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCKIND.FUNC_STATIC">
            <summary>The function is accessed by static address and does not take an implicit this pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.FUNCKIND.FUNC_DISPATCH">
            <summary>The function can be accessed only through <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a>.</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.IDispatch.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDispatch.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.GetTypeInfoCount(System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDispatch.GetTypeInfoCount(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.GetTypeInfoCount(System.UInt32*)">
            <summary>Retrieves the number of type information interfaces that an object provides (either 0 or 1).</summary>
            <param name="pctinfo">The number of type information interfaces provided by the object. If the object provides type information, this number is 1; otherwise the number is 0.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The method may return zero, which indicates that the object does not provide any type information. In this case, the object may still be programmable through <b>IDispatch</b> or a VTBL, but does not provide run-time type information for browsers, compilers, or other programming tools that access type information. This can be useful for hiding an object from browsers.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.GetTypeInfo(System.UInt32,System.UInt32,Windows.Win32.System.Com.ITypeInfo**)">
            <summary>Retrieves the type information for an object, which can then be used to get the type information for an interface.</summary>
            <param name="iTInfo">The type information to return. Pass 0 to retrieve type information for the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> implementation.</param>
            <param name="lcid">The locale identifier for the type information. An object may be able to return different type information for different languages. This is important for classes that support localized member names. For classes that do not support localized member names, this parameter can be ignored.</param>
            <param name="ppTInfo">The requested type information object.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-idispatch-gettypeinfo">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.GetIDsOfNames(System.Guid@,System.ReadOnlySpan{Windows.Win32.Foundation.PWSTR},System.UInt32,System.Span{System.Int32})">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDispatch.GetIDsOfNames(System.Guid*,Windows.Win32.Foundation.PWSTR*,System.UInt32,System.UInt32,System.Int32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.GetIDsOfNames(System.Guid*,Windows.Win32.Foundation.PWSTR*,System.UInt32,System.UInt32,System.Int32*)">
            <summary>Maps a single member and an optional set of argument names to a corresponding set of integer DISPIDs, which can be used on subsequent calls to Invoke.</summary>
            <param name="riid">Reserved for future use. Must be IID_NULL.</param>
            <param name="rgszNames">The array of names to be mapped.</param>
            <param name="cNames">The count of the names to be mapped.</param>
            <param name="lcid">The locale context in which to interpret the names.</param>
            <param name="rgDispId">Caller-allocated array, each element of which contains an identifier (ID) corresponding to one of the names passed in the rgszNames array. The first element represents the member name. The subsequent elements represent each of the member's parameters.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>An <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> implementation can associate any positive integer ID value with a given name. Zero is reserved for the default, or <b>Value</b> property; –1 is reserved to indicate an unknown name; and other negative values are defined for other purposes. For example, if <b>GetIDsOfNames</b> is called, and the implementation does not recognize one or more of the names, it returns DISP_E_UNKNOWNNAME, and the <i>rgDispId</i> array contains DISPID_UNKNOWN for the entries that correspond to the unknown names. The member and parameter DISPIDs must remain constant for the lifetime of the object. This allows a client to obtain the DISPIDs once, and cache them for later use. When <b>GetIDsOfNames</b> is called with more than one name, the first name (<i>rgszNames</i>[0]) corresponds to the member name, and subsequent names correspond to the names of the member's parameters. The same name may map to different DISPIDs, depending on context. For example, a name may have a DISPID when it is used as a member name with a particular interface, a different ID as a member of a different interface, and different mapping for each time it appears as a parameter. <b>GetIDsOfNames</b> is used when an <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> client binds to names at run time. To bind at compile time instead, an <b>IDispatch</b> client can map names to DISPIDs by using the type information interfaces described in <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/type-description-interfaces">Type Description Interfaces</a>. This allows a client to bind to members at compile time and avoid calling <b>GetIDsOfNames</b> at run time. For a description of binding at compile time, see Type Description Interfaces. The implementation of <b>GetIDsOfNames</b> is case insensitive. Users that need case-sensitive name mapping should use type information interfaces to map names to DISPIDs, rather than call <b>GetIDsOfNames</b>. <div class="alert"><b>Caution</b>  You cannot use this method to access values that have been added dynamically, such as values added through JavaScript. Instead, use the GetDispID of the IDispatchEx interface. For more information, see the <a href="https://docs.microsoft.com/previous-versions/windows/internet-explorer/ie-developer/windows-scripting/reference/idispatchex-interface">IDispatchEx interface</a>.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-idispatch-getidsofnames#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.Invoke(System.Int32,System.Guid@,System.UInt32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS@,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.System.Com.IDispatch.Invoke(System.Int32,System.Guid*,System.UInt32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS*,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.IDispatch.Invoke(System.Int32,System.Guid*,System.UInt32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS*,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)">
            <summary>Provides access to properties and methods exposed by an object.</summary>
            <param name="dispIdMember">Identifies the member. Use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-getidsofnames">GetIDsOfNames</a> or the object's documentation to obtain the dispatch identifier.</param>
            <param name="riid">Reserved for future use. Must be IID_NULL.</param>
            <param name="lcid">
            <para>The locale context in which to interpret arguments. The <i>lcid</i> is used by the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-getidsofnames">GetIDsOfNames</a> function, and is also passed to <b>Invoke</b> to allow the object to interpret its arguments specific to a locale. Applications that do not support multiple national languages can ignore this parameter. For more information, refer to <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/supporting-multiple-national-languages">Supporting Multiple National Languages</a> and <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/exposing-activex-objects">Exposing ActiveX Objects</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="wFlags">
            <para>Flags describing the context of the <b>Invoke</b> call. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pDispParams">Pointer to a DISPPARAMS structure containing an array of arguments, an array of argument DISPIDs for named arguments, and counts for the number of elements in the arrays.</param>
            <param name="pVarResult">Pointer to the location where the result is to be stored, or NULL if the caller expects no result. This argument is ignored if DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF is specified.</param>
            <param name="pExcepInfo">Pointer to a structure that contains exception information. This structure should be filled in if DISP_E_EXCEPTION is returned. Can be NULL.</param>
            <param name="puArgErr">The index within rgvarg of the first argument that has an error. Arguments are stored in pDispParams-&gt;rgvarg in reverse order, so the first argument is the one with the highest index in the array. This parameter is returned only when the resulting return value is DISP_E_TYPEMISMATCH or DISP_E_PARAMNOTFOUND. This argument can be set to null. For details, see <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/returning-errors">Returning Errors</a>.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Generally, you should not implement <b>Invoke</b> directly. Instead, use the dispatch interface to create functions <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-createstddispatch">CreateStdDispatch</a> and <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-dispinvoke">DispInvoke</a>. For details, refer to <b>CreateStdDispatch</b>, <b>DispInvoke</b>, <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/creating-the-idispatch-interface">Creating the IDispatch Interface</a> and <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/exposing-activex-objects">Exposing ActiveX Objects</a>. If some application-specific processing needs to be performed before calling a member, the code should perform the necessary actions, and then call <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-invoke">ITypeInfo::Invoke</a> to invoke the member. <b>ITypeInfo::Invoke</b> acts exactly like <b>Invoke</b>. The standard implementations of <b>Invoke</b> created by <b>CreateStdDispatch</b> and <b>DispInvoke</b> defer to <b>ITypeInfo::Invoke</b>. In an ActiveX client, <b>Invoke</b> should be used to get and set the values of properties, or to call a method of an ActiveX object. The <i>dispIdMember</i> argument identifies the member to invoke. The DISPIDs that identify members are defined by the implementer of the object and can be determined by using the object's documentation, the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-getidsofnames">IDispatch::GetIDsOfNames</a> function, or the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> interface. When you use <b>IDispatch::Invoke()</b> with DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF, you have to specially initialize the <b>cNamedArgs</b> and <b>rgdispidNamedArgs</b> elements of your DISPPARAMS structure with the following:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-idispatch-invoke#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.IDispatch.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00020400-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="T:Windows.Win32.System.Com.INVOKEKIND">
            <summary>Specifies the way a function is invoked.</summary>
            <remarks>In C, value assignment is written as *pobj1 = *pobj2, while reference assignment is written as pobj1 = pobj2. Other languages have other syntactic conventions. A property or data member can support only a value assignment, a reference assignment, or both. The INVOKEKIND enumeration constants are the same constants that are passed to <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a> to specify the way in which a function is invoked.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.INVOKEKIND.INVOKE_FUNC">
            <summary>The member is called using a normal function invocation syntax.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.INVOKEKIND.INVOKE_PROPERTYGET">
            <summary>The function is invoked using a normal property-access syntax.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.INVOKEKIND.INVOKE_PROPERTYPUT">
            <summary>The function is invoked using a property value assignment syntax. Syntactically, a typical programming language might represent changing a property in the same way as assignment. For example: object.property : = value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.INVOKEKIND.INVOKE_PROPERTYPUTREF">
            <summary>The function is invoked using a property reference assignment syntax.</summary>
        </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.ITypeComp.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeComp.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeComp.Bind(Windows.Win32.Foundation.PWSTR,System.UInt32,System.UInt16,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.DESCKIND@,Windows.Win32.System.Com.BINDPTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeComp.Bind(Windows.Win32.Foundation.PWSTR,System.UInt32,System.UInt16,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.DESCKIND*,Windows.Win32.System.Com.BINDPTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeComp.Bind(Windows.Win32.Foundation.PWSTR,System.UInt32,System.UInt16,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.DESCKIND*,Windows.Win32.System.Com.BINDPTR*)">
            <summary>Maps a name to a member of a type, or binds global variables and functions contained in a type library.</summary>
            <param name="szName">The name to be bound.</param>
            <param name="lHashVal">The hash value for the name computed by <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-lhashvalofnamesys">LHashValOfNameSys</a>.</param>
            <param name="wFlags">One or more of the flags defined in the INVOKEKIND enumeration. Specifies whether the name was referenced as a method or a property. When binding to a variable, specify the flag INVOKE_PROPERTYGET. Specify zero to bind to any type of member.</param>
            <param name="ppTInfo">If a FUNCDESC or VARDESC was returned, then <i>ppTInfo</i> points to a pointer to the type description that contains the item to which it is bound.</param>
            <param name="pDescKind">Indicates whether the name bound to is a VARDESC, FUNCDESC, or TYPECOMP. If there was no match, DESCKIND_NONE.</param>
            <param name="pBindPtr">The bound-to VARDESC, FUNCDESC, or <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> interface.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Use <b>Bind</b> for binding to the variables and methods of a type, or for binding to the global variables and methods in a type library. The returned DESCKIND pointer <i>pDescKind</i> indicates whether the name was bound to a VARDESC, a FUNCDESC, or to an <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> instance. The returned <i>pBindPtr</i> points to the VARDESC, FUNCDESC, or <b>ITypeComp</b>. If a data member or method is bound to, then ppTInfopoints to the type description that contains the method or data member.</para>
            <para>If <b>Bind</b> binds the name to a nested binding context, it returns a pointer to an <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> instance in <i>pBindPtr</i> and a null type description pointer in <i>ppTInfo</i>. For example, if the name of a type description is passed for a module (TKIND_MODULE), enumeration (TKIND_ENUM), or coclass (TKIND_COCLASS), Bind returns the <b>ITypeComp</b> instance of the type description for the module, enumeration, or coclass. This feature supports languages such as Visual Basic that allow references to members of a type description to be qualified by the name of the type description. For example, a function in a module can be referenced by <i>modulename</i>.<i>functionname.</i> The members of TKIND_ENUM, TKIND_MODULE, and TKIND_COCLASS types marked as Application objects can be bound to directly from <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a>, without specifying the name of the module. The <b>ITypeComp</b> of a coclass defers to the <b>ITypeComp</b> of its default interface.</para>
            <para>As with other methods of <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a>, <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a>, and <b>ITypeInfo</b>, the calling code is responsible for releasing the returned object instances or structures. If a VARDESC or FUNCDESC is returned, the caller is responsible for deleting it with the returned type description and releasing the type description instance itself. Otherwise, if an <b>ITypeComp</b> instance is returned, the caller must release it.</para>
            <para>Special rules apply if you call a type library's <b>Bind</b> method, passing it the name of a member of an Application object class (a class that has the TYPEFLAG_FAPPOBJECT flag set). In this case, Bind returns DESCKIND_IMPLICITAPPOBJ in <i>pDescKind</i>, a VARDESC that describes the Application object in <i>pBindPtr</i>, and the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> of the Application object class in <i>ppTInfo</i>. To bind to the object, <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-gettypecomp">ITypeInfo::GetTypeComp</a> must make a call to get the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> of the Application object class, and then reinvoke its <b>Bind</b> method with the name initially passed to the type library's <b>ITypeComp</b>.</para>
            <para>The caller should use the returned <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> pointer (<i>ppTInfo</i>) to get the address of the member.</para>
            <para><div class="alert"><b>Note</b>  The <i>wflags</i> parameter is the same as the <i>wflags</i> parameter in <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a>. </div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypecomp-bind#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeComp.BindType(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.ITypeComp**)">
            <summary>Binds to the type descriptions contained within a type library.</summary>
            <param name="szName">The name to be bound.</param>
            <param name="lHashVal">The hash value for the name computed by <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-lhashvalofname">LHashValOfName</a>.</param>
            <param name="ppTInfo">An <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> of the type to which the name was bound.</param>
            <param name="ppTComp">Passes a valid pointer, such as the address of an <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> variable.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>Use the function <b>BindType</b> for binding a type name to the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> that describes the type. This function is invoked on the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> that is returned by <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypelib-gettypecomp">ITypeLib::GetTypeComp</a> to bind to types defined within that library. It can also be used in the future for binding to nested types.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.ITypeComp.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00020403-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetTypeAttr(Windows.Win32.System.Com.TYPEATTR*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetTypeAttr(Windows.Win32.System.Com.TYPEATTR**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetTypeAttr(Windows.Win32.System.Com.TYPEATTR**)">
            <summary>Retrieves a TYPEATTR structure that contains the attributes of the type description.</summary>
            <param name="ppTypeAttr">The attributes of this type description.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>To free the TYPEATTR structure, use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-releasetypeattr">ITypeInfo::ReleaseTypeAttr</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetTypeComp(Windows.Win32.System.Com.ITypeComp**)">
            <summary>Retrieves the ITypeComp interface for the type description, which enables a client compiler to bind to the type description's members.</summary>
            <param name="ppTComp">The <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> of the containing type library.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>A client compiler can use the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> interface to bind to members of the type.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetFuncDesc(System.UInt32,Windows.Win32.System.Com.FUNCDESC*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetFuncDesc(System.UInt32,Windows.Win32.System.Com.FUNCDESC**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetFuncDesc(System.UInt32,Windows.Win32.System.Com.FUNCDESC**)">
            <summary>Retrieves the FUNCDESC structure that contains information about a specified function.</summary>
            <param name="index">The index of the function whose description is to be returned. The <i>index</i> should be in the range of 0 to 1 less than the number of functions in this type.</param>
            <param name="ppFuncDesc">A FUNCDESC structure that describes the specified function.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The function <b>ITypeInfo::GetFuncDesc</b> provides access to a FUNCDESC structure that describes the function with the specified <i>index</i>. The FUNCDESC structure should be freed with <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-releasefuncdesc">ITypeInfo::ReleaseFuncDesc</a>. The number of functions in the type is one of the attributes contained in the TYPEATTR structure.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetVarDesc(System.UInt32,Windows.Win32.System.Com.VARDESC*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetVarDesc(System.UInt32,Windows.Win32.System.Com.VARDESC**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetVarDesc(System.UInt32,Windows.Win32.System.Com.VARDESC**)">
            <summary>Retrieves a VARDESC structure that describes the specified variable.</summary>
            <param name="index">The index of the variable whose description is to be returned. The index should be in the range of 0 to 1 less than the number of variables in this type.</param>
            <param name="ppVarDesc">A VARDESC that describes the specified variable.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>To free the VARDESC structure, use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-releasevardesc">ReleaseVarDesc</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetNames(System.Int32,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetNames(System.Int32,Windows.Win32.Foundation.BSTR*,System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetNames(System.Int32,Windows.Win32.Foundation.BSTR*,System.UInt32,System.UInt32*)">
            <summary>Retrieves the variable with the specified member ID or the name of the property or method and the parameters that correspond to the specified function ID.</summary>
            <param name="memid">The ID of the member whose name (or names) is to be returned.</param>
            <param name="rgBstrNames">The caller-allocated array. On return, each of the elements contains the name (or names) associated with the member.</param>
            <param name="cMaxNames">The length of the passed-in <i>rgBstrNames</i> array.</param>
            <param name="pcNames">The number of names in the <i>rgBstrNames</i> array.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The caller must release the returned BSTR array.</para>
            <para>If the member ID identifies a property that is implemented with property functions, the property name is returned. For property get functions, the names of the function and its parameters are always returned.</para>
            <para>For property put and put reference functions, the right side of the assignment is unnamed. If <i>cMaxNames</i> is less than is required to return all of the names of the parameters of a function, then only the names of the first <i>cMaxNames</i> - 1 parameters are returned. The names of the parameters are returned in the array in the same order that they appear elsewhere in the interface (for example, the same order in the parameter array associated with the FUNCDESC enumeration).</para>
            <para>If the type description inherits from another type description, this function is recursive to the base type description, if necessary, to find the item with the requested member ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getnames#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetRefTypeOfImplType(System.UInt32,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetRefTypeOfImplType(System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetRefTypeOfImplType(System.UInt32,System.UInt32*)">
            <summary>If a type description describes a COM class, it retrieves the type description of the implemented interface types.</summary>
            <param name="index">The index of the implemented type whose handle is returned. The valid range is 0 to the <b>cImplTypes</b> field in the TYPEATTR structure.</param>
            <param name="pRefType">A handle for the implemented interface (if any). This handle can be passed to <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-getreftypeinfo">ITypeInfo::GetRefTypeInfo</a> to get the type description.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>If the TKIND_DISPATCH type description is for a dual interface, the TKIND_INTERFACE type description can be obtained by calling <b>GetRefTypeOfImplType</b> with an <i>index</i> of –1, and by passing the returned <i>pRefTypehandle</i> to <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-getreftypeinfo">GetRefTypeInfo</a> to retrieve the type information.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetImplTypeFlags(System.UInt32,Windows.Win32.System.Com.IMPLTYPEFLAGS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetImplTypeFlags(System.UInt32,Windows.Win32.System.Com.IMPLTYPEFLAGS*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetImplTypeFlags(System.UInt32,Windows.Win32.System.Com.IMPLTYPEFLAGS*)">
            <summary>Retrieves the IMPLTYPEFLAGS enumeration for one implemented interface or base interface in a type description.</summary>
            <param name="index">The index of the implemented interface or base interface for which to get the flags.</param>
            <param name="pImplTypeFlags">The IMPLTYPEFLAGS enumeration value.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The flags are associated with the act of inheritance, and not with the inherited interface.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetIDsOfNames(System.ReadOnlySpan{Windows.Win32.Foundation.PWSTR},System.Span{System.Int32})">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetIDsOfNames(Windows.Win32.Foundation.PWSTR*,System.UInt32,System.Int32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetIDsOfNames(Windows.Win32.Foundation.PWSTR*,System.UInt32,System.Int32*)">
            <summary>Maps between member names and member IDs, and parameter names and parameter IDs.</summary>
            <param name="rgszNames">An array of names to be mapped.</param>
            <param name="cNames">The count of the names to be mapped.</param>
            <param name="pMemId">Caller-allocated array in which name mappings are placed.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The function <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-getidsofnames">GetIDsOfNames</a> maps the name of a member (<b>rgszNames</b>[0]) and its parameters (<b>rgszNames</b>[1] ...<b>rgszNames</b>[<b>cNames</b>- 1]) to the ID of the member (<b>pMemId</b>[0]), and to the IDs of the specified parameters (<b>pMemId</b>[1] ... <b>pMemId</b>[<b>cNames</b>- 1]). The IDs of parameters are 0 for the first parameter in the member function's argument list, 1 for the second, and so on.</para>
            <para>If the type description inherits from another type description, this function is recursive to the base type description, if necessary, to find the item with the requested member ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getidsofnames#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.Invoke(System.Void*,System.Int32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS@,Windows.Win32.System.Variant.VARIANT@,Windows.Win32.System.Com.EXCEPINFO@,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Invoke(System.Void*,System.Int32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS*,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.Invoke(System.Void*,System.Int32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS*,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)">
            <summary>Invokes a method, or accesses a property of an object, that implements the interface described by the type description.</summary>
            <param name="pvInstance">An instance of the interface described by this type description.</param>
            <param name="memid">The interface member.</param>
            <param name="wFlags">
            <para>Flags describing the context of the invoke call. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-invoke#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pDispParams">An array of arguments, an array of DISPIDs for named arguments, and counts of the number of elements in each array.</param>
            <param name="pVarResult">The result. Should be null if the caller does not expect any result. If <i>wFlags</i> specifies DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF, <i>pVarResultis</i> is ignored.</param>
            <param name="pExcepInfo">An exception information structure, which is filled in only if DISP_E_EXCEPTION is returned. If <i>pExcepInfo</i> is null on input, only an HRESULT error will be returned.</param>
            <param name="puArgErr">If Invoke returns DISP_E_TYPEMISMATCH, <i>puArgErr</i> indicates the index (within <i>rgvarg</i>) of the argument with incorrect type. If more than one argument returns an error, <i>puArgErr</i> indicates only the first argument with an error. Arguments in pDispParams-&gt;rgvarg appear in reverse order, so the first argument is the one having the highest index in the array. This parameter cannot be null.</param>
            <returns>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Use the function <b>ITypeInfo::Invoke</b> to access a member of an object or invoke a method that implements the interface described by this type description. For objects that support the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> interface, you can use <b>Invoke</b> to implement <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a>.</para>
            <para><b>ITypeInfo::Invoke</b> takes a pointer to an instance of the class. Otherwise, its parameters are the same as <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a>, except that <b>ITypeInfo::Invoke</b> omits the <i>refiid</i> and <i>lcid</i> parameters. When called, <b>ITypeInfo::Invoke</b> performs the actions described by the <b>IDispatch::Invoke</b> parameters on the specified instance.</para>
            <para>For VTBL interface members, <b>ITypeInfo::Invoke</b> passes the LCID of the type information into parameters tagged with the lcid attribute, and the returned value into the retval attribute.</para>
            <para>If the type description inherits from another type description, this function recurses on the base type description to find the item with the requested member ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-invoke#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetDocumentation(System.Int32,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)">
            <summary>Retrieves the documentation string, the complete Help file name and path, and the context ID for the Help topic for a specified type description.</summary>
            <param name="memid">The ID of the member whose documentation is to be returned.</param>
            <param name="pBstrName">The name of the specified item. If the caller does not need the item name, <i>pBstrName</i> can be null.</param>
            <param name="pBstrDocString">The documentation string for the specified item. If the caller does not need the documentation string, <i>pBstrDocString</i> can be null.</param>
            <param name="pdwHelpContext">The Help localization context. If the caller does not need the Help context, it can be null.</param>
            <param name="pBstrHelpFile">The fully qualified name of the file containing the DLL used for Help file. If the caller does not need the file name, it can be null.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The function <b>GetDocumentation</b> provides access to the documentation for the member specified by the <i>memid</i> parameter. If the passed-in <i>memid</i> is MEMBERID_NIL, then the documentation for the type description is returned.</para>
            <para>If the type description inherits from another type description, this function is recursive to the base type description, if necessary, to find the item with the requested member ID.</para>
            <para>The caller should use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-sysfreestring">SysFreeString</a> to free the BSTRs referenced by <i>pBstrName</i>, <i>pBstrDocString</i>, and <i>pBstrHelpFile</i>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getdocumentation#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetDllEntry(System.Int32,Windows.Win32.System.Com.INVOKEKIND,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt16@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetDllEntry(System.Int32,Windows.Win32.System.Com.INVOKEKIND,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt16*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetDllEntry(System.Int32,Windows.Win32.System.Com.INVOKEKIND,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt16*)">
            <summary>Retrieves a description or specification of an entry point for a function in a DLL.</summary>
            <param name="memid">The ID of the member function whose DLL entry description is to be returned.</param>
            <param name="invKind">The kind of member identified by <i>memid</i>. This is important for properties, because one <i>memid</i> can identify up to three separate functions.</param>
            <param name="pBstrDllName">If not null, the function sets <i>pBstrDllName</i> to the name of the DLL.</param>
            <param name="pBstrName">If not null, the function sets <i>pBstrName</i> to the name of the entry point. If the entry point is specified by an ordinal, this argument is null.</param>
            <param name="pwOrdinal">If not null, and if the function is defined by an ordinal, the function sets <i>pwOrdinal</i> to the ordinal.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The caller passes in a member ID, which represents the member function whose entry description is desired. If the function has a DLL entry point, the name of the DLL that contains the function, as well as its name or ordinal identifier, are placed in the passed-in pointers allocated by the caller. If there is no DLL entry point for the function, an error is returned.</para>
            <para>If the type description inherits from another type description, this function is recursive to the base type description, if necessary, to find the item with the requested member ID.</para>
            <para>The caller should use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-sysfreestring">SysFreeString</a> to free the BSTRs referenced by <i>pBstrName</i> and <i>pBstrDllName</i>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getdllentry#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetRefTypeInfo(System.UInt32,Windows.Win32.System.Com.ITypeInfo**)">
            <summary>If a type description references other type descriptions, it retrieves the referenced type descriptions.</summary>
            <param name="hRefType">A handle to the referenced type description to return.</param>
            <param name="ppTInfo">The referenced type description.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>On return, the second parameter contains a pointer to a pointer to a type description that is referenced by this type description. A type description must have a reference to each type description that occurs as the type of any of its variables, function parameters, or function return types. For example, if the type of a data member is a record type, the type description for that data member contains the <i>hRefType</i> of a referenced type description. To get a pointer to the type description, the reference is passed to <b>GetRefTypeInfo</b>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.AddressOfMember(System.Int32,Windows.Win32.System.Com.INVOKEKIND,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.AddressOfMember(System.Int32,Windows.Win32.System.Com.INVOKEKIND,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.AddressOfMember(System.Int32,Windows.Win32.System.Com.INVOKEKIND,System.Void**)">
            <summary>Retrieves the addresses of static functions or variables, such as those defined in a DLL.</summary>
            <param name="memid">The member ID of the static member whose address is to be retrieved. The member ID is defined by the DISPID.</param>
            <param name="invKind">Indicates whether the member is a property, and if so, what kind.</param>
            <param name="ppv">The static member.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The addresses are valid until the caller releases its reference to the type description. The <i>invKind</i> parameter can be ignored unless the address of a property function is being requested. If the type description inherits from another type description, this function is recursive to the base type description, if necessary, to find the item with the requested member ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-addressofmember#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.CreateInstance(Windows.Win32.System.Com.IUnknown*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.CreateInstance(Windows.Win32.System.Com.IUnknown*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.CreateInstance(Windows.Win32.System.Com.IUnknown*,System.Guid*,System.Void**)">
            <summary>Creates a new instance of a type that describes a component object class (coclass).</summary>
            <param name="pUnkOuter">The controlling <b>IUnknown</b>. If Null, then a stand-alone instance is created. If valid, then an aggregate object is created.</param>
            <param name="riid">An ID for the interface that the caller will use to communicate with the resulting object.</param>
            <param name="ppvObj">An instance of the created object.</param>
            <returns>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>For types that describe a component object class (coclass), <b>CreateInstance</b> creates a new instance of the class. Normally, <b>CreateInstance</b> calls <b>CoCreateInstance</b> with the type description's GUID. For an Application object, it first calls <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-getactiveobject">GetActiveObject</a>. If the application is active, <b>GetActiveObject</b> returns the active object; otherwise, if <b>GetActiveObject</b> fails, <b>CreateInstance</b> calls <b>CoCreateInstance</b>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetMops(System.Int32,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetMops(System.Int32,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetMops(System.Int32,Windows.Win32.Foundation.BSTR*)">
            <summary>Retrieves marshaling information.</summary>
            <param name="memid">The member ID that indicates which marshaling information is needed.</param>
            <param name="pBstrMops">The opcode string used in marshaling the fields of the structure described by the referenced type description, or null if there is no information to return.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>If the passed-in member ID is MEMBERID_NIL, the function returns the opcode string for marshaling the fields of the structure described by the type description. Otherwise, it returns the opcode string for marshaling the function specified by the index.</para>
            <para>If the type description inherits from another type description, this function recurses on the base type description, if necessary, to find the item with the requested member ID.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getmops#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetContainingTypeLib(Windows.Win32.System.Com.ITypeLib**,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.GetContainingTypeLib(Windows.Win32.System.Com.ITypeLib**,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.GetContainingTypeLib(Windows.Win32.System.Com.ITypeLib**,System.UInt32*)">
            <summary>Retrieves the containing type library and the index of the type description within that type library.</summary>
            <param name="ppTLib">The containing type library.</param>
            <param name="pIndex">The index of the type description within the containing type library.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-getcontainingtypelib">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseTypeAttr(Windows.Win32.System.Com.TYPEATTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.ReleaseTypeAttr(Windows.Win32.System.Com.TYPEATTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseTypeAttr(Windows.Win32.System.Com.TYPEATTR*)">
            <summary>Releases a TYPEATTR previously returned by ITypeInfo::GetTypeAttr.</summary>
            <param name="pTypeAttr">The TYPEATTR to be freed.</param>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-releasetypeattr">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseFuncDesc(Windows.Win32.System.Com.FUNCDESC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.ReleaseFuncDesc(Windows.Win32.System.Com.FUNCDESC*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseFuncDesc(Windows.Win32.System.Com.FUNCDESC*)">
            <summary>Releases a FUNCDESC previously returned by ITypeInfo::GetFuncDesc.</summary>
            <param name="pFuncDesc">The FUNCDESC to be freed.</param>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-releasefuncdesc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseVarDesc(Windows.Win32.System.Com.VARDESC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.ReleaseVarDesc(Windows.Win32.System.Com.VARDESC*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeInfo.ReleaseVarDesc(Windows.Win32.System.Com.VARDESC*)">
            <summary>Releases a VARDESC previously returned by ITypeInfo::GetVarDesc.</summary>
            <param name="pVarDesc">The VARDESC to be freed.</param>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypeinfo-releasevardesc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.ITypeInfo.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00020401-0000-0000-c000-000000000046}</value>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoCount">
            <summary>Provides the number of type descriptions that are in a type library.</summary>
            <returns>The number of type descriptions in the type library.</returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-gettypeinfocount">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfo(System.UInt32,Windows.Win32.System.Com.ITypeInfo**)">
            <summary>Retrieves the specified type description in the library.</summary>
            <param name="index">The index of the interface to be returned.</param>
            <param name="ppTInfo">If successful, returns a pointer to the pointer to the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> interface.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>For dual interfaces, <b>GetTypeInfo</b> returns only the TKIND_DISPATCH type information. To get the TKIND_INTERFACE type information, <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-getreftypeofimpltype">GetRefTypeOfImplType</a> can be called on the TKIND_DISPATCH type information, passing an index of –1. Then, the returned type information handle can be passed to <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypeinfo-getreftypeinfo">GetRefTypeInfo</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoType(System.UInt32,Windows.Win32.System.Com.TYPEKIND@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoType(System.UInt32,Windows.Win32.System.Com.TYPEKIND*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoType(System.UInt32,Windows.Win32.System.Com.TYPEKIND*)">
            <summary>Retrieves the type of a type description.</summary>
            <param name="index">The index of the type description within the type library.</param>
            <param name="pTKind">The <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ne-oaidl-typekind">TYPEKIND</a> enumeration value for the type description.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-gettypeinfotype">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoOfGuid(System.Guid@,Windows.Win32.System.Com.ITypeInfo**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoOfGuid(System.Guid*,Windows.Win32.System.Com.ITypeInfo**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeInfoOfGuid(System.Guid*,Windows.Win32.System.Com.ITypeInfo**)">
            <summary>Retrieves the type description that corresponds to the specified GUID.</summary>
            <param name="guid">The GUID of the type description.</param>
            <param name="ppTinfo">The <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypeinfo">ITypeInfo</a> interface.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-gettypeinfoofguid">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetLibAttr(Windows.Win32.System.Com.TLIBATTR*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.GetLibAttr(Windows.Win32.System.Com.TLIBATTR**)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetLibAttr(Windows.Win32.System.Com.TLIBATTR**)">
            <summary>Retrieves the structure that contains the library's attributes.</summary>
            <param name="ppTLibAttr">The library's attributes.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>Use <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypelib-releasetlibattr">ITypeLib::ReleaseTLibAttr</a> to free the memory occupied by the TLIBATTR structure.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetTypeComp(Windows.Win32.System.Com.ITypeComp**)">
            <summary>Enables a client compiler to bind to the types, variables, constants, and global functions for a library.</summary>
            <param name="ppTComp">The <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> instance for this <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypelib">ITypeLib</a>. A client compiler uses the methods in the <b>ITypeComp</b> interface to bind to types in <b>ITypeLib</b>, as well as to the global functions, variables, and constants defined in <b>ITypeLib</b></param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/nf-oaidl-itypecomp-bind">Bind</a> function of the returned <b>TypeComp</b> binds to global functions, variables, constants, enumerated values, and coclass members. The <b>Bind</b> function also binds the names of the TYPEKIND enumerations of TKIND_MODULE, TKIND_ENUM, and TKIND_COCLASS. These names shadow any global names defined within the type information. The members of TKIND_ENUM, TKIND_MODULE, and TKIND_COCLASS types marked as Application objects can be directly bound to from <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> without specifying the name of the module.</para>
            <para><a href="https://docs.microsoft.com/windows/desktop/api/oaidl/nf-oaidl-itypecomp-bind">ITypeComp::Bind</a> and <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-itypecomp-bindtype">ITypeComp::BindType</a> accept only unqualified names. <b>ITypeLib::GetTypeComp</b> returns a pointer to the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-itypecomp">ITypeComp</a> interface, which is then used to bind to global elements in the library. The names of some types (TKIND_ENUM, TKIND_MODULE, and TKIND_COCLASS) share the name space with variables, functions, constants, and enumerators. If a member requires qualification to differentiate it from other items in the name space, <b>GetTypeComp</b> can be called successively for each qualifier in order to bind to the desired member. This allows programming language compilers to access members of modules, enumerations, and coclasses, even though the member can't be bound to with a qualified name.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-gettypecomp#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetDocumentation(System.Int32,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)">
            <summary>Retrieves the documentation string for the library, the complete Help file name and path, and the context identifier for the library Help topic in the Help file.</summary>
            <param name="index">The index of the type description whose documentation is to be returned. If <i>index</i> is -1, then the documentation for the library itself is returned.</param>
            <param name="pBstrName">The name of the specified item. If the caller does not need the item name, then <i>pBstrName</i> can be null.</param>
            <param name="pBstrDocString">The documentation string for the specified item. If the caller does not need the documentation string, then <i>pBstrDocString</i> can be null..</param>
            <param name="pdwHelpContext">The Help context identifier (ID) associated with the specified item. If the caller does not need the Help context ID, then <i>pdwHelpContext</i> can be null.</param>
            <param name="pBstrHelpFile">The fully qualified name of the Help file. If the caller does not need the Help file name, then <i>pBstrHelpFile</i> can be null.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The caller should free the parameters <i>pBstrName</i>, <i>pBstrDocString</i>, and <i>pBstrHelpFile</i>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.IsName(System.Span{System.Char}@,System.UInt32,Windows.Win32.Foundation.BOOL@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.IsName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.Foundation.BOOL*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.IsName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.Foundation.BOOL*)">
            <summary>Indicates whether a passed-in string contains the name of a type or member described in the library.</summary>
            <param name="szNameBuf">The string to test. If this method is successful, <i>szNameBuf</i> is modified to match the case (capitalization) found in the type library.</param>
            <param name="lHashVal">The hash value of <i>szNameBuf</i>.</param>
            <param name="pfName">True if <i>szNameBuf</i> was found in the type library; otherwise false.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-isname">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.FindName(System.Span{System.Char}@,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,System.Int32*,System.UInt16@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.FindName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,System.Int32*,System.UInt16*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.FindName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,System.Int32*,System.UInt16*)">
            <summary>Finds occurrences of a type description in a type library. This may be used to quickly verify that a name exists in a type library.</summary>
            <param name="szNameBuf">The name to search for.</param>
            <param name="lHashVal">A hash value to speed up the search, computed by the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-lhashvalofnamesys">LHashValOfNameSys</a> function. If <i>lHashVal</i> = 0, a value is computed.</param>
            <param name="ppTInfo">An array of pointers to the type descriptions that contain the name specified in <i>szNameBuf</i>. This parameter cannot be null.</param>
            <param name="rgMemId">An array of the found items; <i>rgMemId</i>[<i>i</i>] is the MEMBERID that indexes into the type description specified by <i>ppTInfo</i>[<i>i</i>]. This parameter cannot be null.</param>
            <param name="pcFound">
            <para>On entry, indicates how many instances to look for. For example, *<i>pcFound</i> = 1 can be called to find the first occurrence. The search stops when one is found. On exit, indicates the number of instances that were found. If the in and out values of *<i>pcFound</i> are identical, there may be more type descriptions that contain the name.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-findname#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>Passing *<i>pcFound</i> = <i>n</i> indicates that there is enough room in the <i>ppTInfo</i> and <i>rgMemId</i> arrays for <i>n</i> (<i>ptinfo</i>, <i>memid</i>) pairs. The function returns MEMBERID_NIL in <i>rgMemId</i>[<i>i</i>], if the name in <i>szNameBuf</i> is the name of the type information in <i>ppTInfo</i>[<i>i</i>].</remarks>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.ReleaseTLibAttr(Windows.Win32.System.Com.TLIBATTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.ReleaseTLibAttr(Windows.Win32.System.Com.TLIBATTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Com.ITypeLib.ReleaseTLibAttr(Windows.Win32.System.Com.TLIBATTR*)">
            <summary>Releases the TLIBATTR originally obtained from GetLibAttr.</summary>
            <param name="pTLibAttr">The TLIBATTR to be freed.</param>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-itypelib-releasetlibattr">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.ITypeLib.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{00020402-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.REGCLS">
            <summary>Controls the type of connections to a class object.</summary>
            <remarks>
            <para>In <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coregisterclassobject">CoRegisterClassObject</a>, members of both the <b>REGCLS</b> and the <a href="https://docs.microsoft.com/windows/desktop/api/wtypesbase/ne-wtypesbase-clsctx">CLSCTX</a> enumerations, taken together, determine how the class object is registered.</para>
            <para>An EXE surrogate (in which DLL servers are run) calls <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coregisterclassobject">CoRegisterClassObject</a> to register a class factory using a new <b>REGCLS</b> value, REGCLS_SURROGATE. All class factories for DLL surrogates should be registered with REGCLS_SURROGATE set. Do not set REGCLS_SINGLUSE or REGCLS_MULTIPLEUSE when you register a surrogate for DLL servers. The following table summarizes the allowable <b>REGCLS</b> value combinations and the object registrations affected by the combinations. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/ne-combaseapi-regcls#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_SINGLEUSE">
            <summary>After an application is connected to a class object with <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cogetclassobject">CoGetClassObject</a>, the class object is removed from public view so that no other applications can connect to it. This value is commonly used for single document interface (SDI) applications. Specifying this value does not affect the responsibility of the object application to call <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-corevokeclassobject">CoRevokeClassObject</a>; it must always call <b>CoRevokeClassObject</b> when it is finished with an object class.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_MULTIPLEUSE">
            <summary>Multiple applications can connect to the class object through calls to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cogetclassobject">CoGetClassObject</a>. If both the REGCLS_MULTIPLEUSE and CLSCTX_LOCAL_SERVER are set in a call to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coregisterclassobject">CoRegisterClassObject</a>, the class object is also automatically registered as an in-process server, whether CLSCTX_INPROC_SERVER is explicitly set.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_MULTI_SEPARATE">
            <summary>
            <para>Useful for registering separate CLSCTX_LOCAL_SERVER and CLSCTX_INPROC_SERVER class factories through calls to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-cogetclassobject">CoGetClassObject</a>. If REGCLS_MULTI_SEPARATE is set, each execution context must be set separately; <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coregisterclassobject">CoRegisterClassObject</a> does not automatically register an out-of-process server (for which CLSCTX_LOCAL_SERVER is set) as an in-process server. This allows the EXE to create multiple instances of the object for in-process needs, such as self embeddings, without disturbing its CLSCTX_LOCAL_SERVER registration. If an EXE registers a REGCLS_MULTI_SEPARATE class factory and a CLSCTX_INPROC_SERVER class factory, instance creation calls that specify CLSCTX_INPROC_SERVER in the <a href="https://docs.microsoft.com/windows/desktop/api/wtypesbase/ne-wtypesbase-clsctx">CLSCTX</a> parameter executed by the EXE would be satisfied locally without approaching the SCM. This mechanism is useful when the EXE uses functions such as <a href="https://docs.microsoft.com/windows/desktop/api/ole/nf-ole-olecreate">OleCreate</a> and <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-oleload">OleLoad</a> to create embeddings, but at the same does not wish to launch a new instance of itself for the self-embedding case. The distinction is important for embeddings because the default handler aggregates the proxy manager by default and the application should override this default behavior by calling <a href="https://docs.microsoft.com/windows/desktop/api/ole2/nf-ole2-olecreateembeddinghelper">OleCreateEmbeddingHelper</a> for the self-embedding case. If your application need not distinguish between the local and inproc case, you need not register your class factory using REGCLS_MULTI_SEPARATE. In fact, the application incurs an extra network round trip to the SCM when it registers its MULTIPLEUSE class factory as MULTI_SEPARATE and does not register another class factory as INPROC_SERVER.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/ne-combaseapi-regcls#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_SUSPENDED">
            <summary>
            <para>Suspends registration and activation requests for the specified CLSID until there is a call to <a href="https://docs.microsoft.com/windows/desktop/api/combaseapi/nf-combaseapi-coresumeclassobjects">CoResumeClassObjects</a>. This is used typically to register the CLSIDs for servers that can register multiple class objects to reduce the overall registration time, and thus the server application startup time, by making a single call to the SCM, no matter how many CLSIDs are registered for the server. <div class="alert"><b>Note</b>  This flag prevents COM activation errors from a possible race condition between an application shutting down and that application attempting to register a COM class.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/ne-combaseapi-regcls#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_SURROGATE">
            <summary>The class object is a surrogate process used to run DLL servers. The class factory registered by the surrogate process is not the actual class factory implemented by the DLL server, but a generic class factory implemented by the surrogate. This generic class factory delegates instance creation and marshaling to the class factory of the DLL server running in the surrogate. For further information on DLL surrogates, see the <a href="https://docs.microsoft.com/windows/desktop/com/dllsurrogate">DllSurrogate</a> registry value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.REGCLS.REGCLS_AGILE">
            <summary>
            <para>The class object aggregates the free-threaded marshaler and will be made visible to all inproc apartments. Can be used together with other flags. For example, REGCLS_AGILE | REGCLS_MULTIPLEUSE to register a class object that can be used multiple times from different apartments. Without other flags, behavior will retain REGCLS_SINGLEUSE semantics in that only one instance can be generated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/combaseapi/ne-combaseapi-regcls#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.System.Com.SAFEARRAY">
            <summary>Represents a safe array.</summary>
            <remarks>
            <para>The array <b>rgsabound</b> is stored with the left-most dimension in rgsabound[0] and the right-most dimension in <c>rgsabound[cDims - 1]</c>. If an array was specified in a C-like syntax as a [2][5], it would have two elements in the <b>rgsabound</b> vector. Element 0 has an <b>lLbound</b> of 0 and a <b>cElements</b> of 2. Element 1 has an <b>lLbound</b> of 0 and a <b>cElements</b> of 5.</para>
            <para>The <b>fFeatures</b> flags describe attributes of an array that can affect how the array is released. The <b>fFeatures</b> field describes what type of data is stored in the <b>SAFEARRAY</b> and how the array is allocated. This allows freeing the array without referencing its containing variant.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.cDims">
            <summary>The number of dimensions.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.fFeatures">
            <summary>
            <para>Flags. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearray#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.cbElements">
            <summary>The size of an array element.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.cLocks">
            <summary>The number of times the array has been locked without a corresponding unlock.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.pvData">
            <summary>The data.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAY.rgsabound">
            <summary>One bound for each dimension.</summary>
        </member>
        <member name="M:Windows.Win32.System.Com.SAFEARRAY.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.SAFEARRAYBOUND">
            <summary>Represents the bounds of one dimension of the array.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-safearraybound">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAYBOUND.cElements">
            <summary>The number of elements in the dimension.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SAFEARRAYBOUND.lLbound">
            <summary>The lower bound of the dimension.</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.SYSKIND">
            <summary>Identifies the target operating system platform.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-syskind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.SYSKIND.SYS_WIN16">
            <summary>The target operating system for the type library is 16-bit Windows. By default, data members are packed.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SYSKIND.SYS_WIN32">
            <summary>The target operating system for the type library is 32-bit Windows. By default, data members are naturally aligned (for example, 2-byte integers are aligned on even-byte boundaries; 4-byte integers are aligned on quad-word boundaries, and so on).</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SYSKIND.SYS_MAC">
            <summary>The target operating system for the type library is Apple Macintosh. By default, all data members are aligned on even-byte boundaries.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.SYSKIND.SYS_WIN64">
            <summary>The target operating system for the type library is 64-bit Windows.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.TLIBATTR">
            <summary>Contains information about a type library. Information from this structure is used to identify the type library and to provide national language support for member names.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-tlibattr">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.guid">
            <summary>The globally unique identifier.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.lcid">
            <summary>The locale identifier.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.syskind">
            <summary>The target hardware platform.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.wMajorVerNum">
            <summary>The major version number.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.wMinorVerNum">
            <summary>The minor version number.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TLIBATTR.wLibFlags">
            <summary>The library flags.</summary>
        </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.Com.TYPEATTR">
            <summary>Contains attributes of a type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-typeattr">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.guid">
            <summary>The GUID of the type information.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.lcid">
            <summary>The locale of member names and documentation strings.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.dwReserved">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.memidConstructor">
            <summary>The constructor ID, or MEMBERID_NIL if none.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.memidDestructor">
            <summary>The destructor ID, or MEMBERID_NIL if none.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.lpstrSchema">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cbSizeInstance">
            <summary>The size of an instance of this type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.typekind">
            <summary>The kind of type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cFuncs">
            <summary>The number of functions.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cVars">
            <summary>The number of variables or data members.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cImplTypes">
            <summary>The number of implemented interfaces.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cbSizeVft">
            <summary>The size of this type's VTBL.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.cbAlignment">
            <summary>The byte alignment for an instance of this type. A value of 0 indicates alignment on the 64K boundary; 1 indicates no special alignment. For other values, <i>n</i> indicates aligned on byte <i>n</i>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.wTypeFlags">
            <summary>The type flags. See <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ne-oaidl-typeflags">TYPEFLAGS</a>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.wMajorVerNum">
            <summary>The major version number.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.wMinorVerNum">
            <summary>The minor version number.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.tdescAlias">
            <summary>If <b>typekind</b> is TKIND_ALIAS, specifies the type for which this type is an alias.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEATTR.idldescType">
            <summary>The IDL attributes of the described type.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.TYPEDESC">
            <summary>Describes the type of a variable, the return type of a function, or the type of a function parameter.</summary>
            <remarks>If the variable is VT_SAFEARRAY or VT_PTR, the union portion of the TYPEDESC contains a pointer to a TYPEDESC that specifies the element type.</remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEDESC.vt">
            <summary>The variant type.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.TYPEKIND">
            <summary>Specifies a type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-typekind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_ENUM">
            <summary>A set of enumerators.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_RECORD">
            <summary>A structure with no methods.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_MODULE">
            <summary>A module that can only have static functions and data (for example, a DLL).</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_INTERFACE">
            <summary>A type that has virtual and pure functions.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_DISPATCH">
            <summary>A set of methods and properties that are accessible through <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a>. By default, dual interfaces return TKIND_DISPATCH.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_COCLASS">
            <summary>A set of implemented component object interfaces.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_ALIAS">
            <summary>A type that is an alias for another type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_UNION">
            <summary>A union, all of whose members have an offset of zero.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.TYPEKIND.TKIND_MAX">
            <summary>End of enum marker.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.VARDESC">
            <summary>Describes a variable, constant, or data member.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-vardesc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.VARDESC.memid">
            <summary>The member ID.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARDESC.lpstrSchema">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARDESC.elemdescVar">
            <summary>The variable type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARDESC.wVarFlags">
            <summary>The variable flags. See <a href="https://docs.microsoft.com/windows/desktop/api/oaidl/ne-oaidl-varflags">VARFLAGS</a>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARDESC.varkind">
            <summary>The variable type.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.VARFLAGS">
            <summary>Specifies variable flags.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-varflags">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FREADONLY">
            <summary>Assignment to the variable should not be allowed.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FSOURCE">
            <summary>The variable returns an object that is a source of events.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FBINDABLE">
            <summary>The variable supports data binding.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FREQUESTEDIT">
            <summary>When set, any attempt to directly change the property results in a call to <b>IPropertyNotifySink::OnRequestEdit</b>. The implementation of <b>OnRequestEdit</b> determines if the change is accepted.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FDISPLAYBIND">
            <summary>The variable is displayed to the user as bindable. VARFLAG_FBINDABLE must also be set.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FDEFAULTBIND">
            <summary>The variable is the single property that best represents the object. Only one variable in type information can have this attribute.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FHIDDEN">
            <summary>The variable should not be displayed to the user in a browser, although it exists and is bindable.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FRESTRICTED">
            <summary>The variable should not be accessible from macro languages. This flag is intended for system-level variables or variables that you do not want type browsers to display.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FDEFAULTCOLLELEM">
            <summary>Permits an optimization in which the compiler looks for a member named "xyz" on the type of abc. If such a member is found and is flagged as an accessor function for an element of the default collection, then a call is generated to that member function. Permitted on members in dispinterfaces and interfaces; not permitted on modules.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FUIDEFAULT">
            <summary>The variable is the default display in the user interface.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FNONBROWSABLE">
            <summary>The variable appears in an object browser, but not in a properties browser.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FREPLACEABLE">
            <summary>Tags the interface as having default behaviors.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARFLAGS.VARFLAG_FIMMEDIATEBIND">
            <summary>The variable is mapped as individual bindable properties.</summary>
        </member>
        <member name="T:Windows.Win32.System.Com.VARKIND">
            <summary>Specifies the variable type.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ne-oaidl-varkind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Com.VARKIND.VAR_PERINSTANCE">
            <summary>The variable is a field or member of the type. It exists at a fixed offset within each instance of the type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARKIND.VAR_STATIC">
            <summary>There is only one instance of the variable.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARKIND.VAR_CONST">
            <summary>The VARDESC describes a symbolic constant. There is no memory associated with it.</summary>
        </member>
        <member name="F:Windows.Win32.System.Com.VARKIND.VAR_DISPATCH">
            <summary>The variable can only be accessed through <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-idispatch-invoke">IDispatch::Invoke</a>.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ole.ARRAYDESC">
            <summary>Describes an array, its element type, and its dimension.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-arraydesc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.ARRAYDESC.tdescElem">
            <summary>The element type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ole.ARRAYDESC.cDims">
            <summary>The dimension count.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ole.ARRAYDESC.rgbounds">
            <summary>A variable-length array containing one element for each dimension.</summary>
        </member>
        <member name="M:Windows.Win32.System.Ole.ARRAYDESC.SizeOf(System.Int32)">
            <summary>Computes the amount of memory that must be allocated to store this struct, including the specified number of elements in the variable length inline array at the end.</summary>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordInit(System.Void*)">
            <summary>Initializes a new instance of a record.</summary>
            <param name="pvNew">An instance of a record.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The caller must allocate the memory of the record by its appropriate size using the <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-getsize">GetSize</a> method. <b>RecordInit</b> sets all contents of the record to 0 and the record should hold no resources.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-recordinit#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordClear(System.Void*)">
            <summary>Releases object references and other values of a record without deallocating the record.</summary>
            <param name="pvExisting">The record to be cleared.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks><b>RecordClear</b> releases memory blocks held by VT_PTR or VT_SAFEARRAY instance fields. The caller needs to free the instance fields memory, <b>RecordClear</b> will do nothing if there are no resources held.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordCopy(System.Void*,System.Void*)">
            <summary>Copies an existing record into the passed in buffer.</summary>
            <param name="pvExisting">The current record instance.</param>
            <param name="pvNew">The destination where the record will be copied.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks><b>RecordCopy</b> will release the resources in the destination first. The caller is responsible for allocating sufficient memory in the destination by calling <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-getsize">GetSize</a> or  <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recordcreate">RecordCreate</a>. If <b>RecordCopy</b> fails to copy any of the fields then all fields will be cleared, as though <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recordclear">RecordClear</a> had been called.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetGuid(System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetGuid(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetGuid(System.Guid*)">
            <summary>Gets the GUID of the record type.</summary>
            <param name="pguid">The class GUID of the TypeInfo that describes the UDT.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getguid">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetName(Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetName(Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetName(Windows.Win32.Foundation.BSTR*)">
            <summary>Gets the name of the record type.</summary>
            <param name="pbstrName">The name.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The caller must free the BSTR by calling <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-sysfreestring">SysFreeString</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetSize(System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetSize(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetSize(System.UInt32*)">
            <summary>Gets the number of bytes of memory necessary to hold the record instance.</summary>
            <param name="pcbSize">The size of a record instance, in bytes.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getsize">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetTypeInfo(Windows.Win32.System.Com.ITypeInfo**)">
            <summary>Retrieves the type information that describes a UDT or safearray of UDTs.</summary>
            <param name="ppTypeInfo">The information type of the record.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks><b>AddRef</b> is called on the pointer <i>ppTypeInfo</i>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetField(System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetField(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetField(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)">
            <summary>Returns a pointer to the VARIANT containing the value of a given field name.</summary>
            <param name="pvData">The instance of a record.</param>
            <param name="szFieldName">The field name.</param>
            <param name="pvarField">The VARIANT that you want to hold the value of the field name, <i>szFieldName</i>. On return, places a copy of the field's value in the variant.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The VARIANT that you pass in contains a copy of the field's value upon return. If you modify the VARIANT then the underlying record field does not change. The caller allocates memory of the VARIANT. The method <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-variantclear">VariantClear</a> is called for <i>pvarField</i> before copying.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getfield#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNoCopy(System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNoCopy(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNoCopy(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*,System.Void**)">
            <summary>Returns a pointer to the value of a given field name without copying the value and allocating resources.</summary>
            <param name="pvData">The instance of a record.</param>
            <param name="szFieldName">The name of the field.</param>
            <param name="pvarField">The VARIANT that will contain the UDT upon return.</param>
            <param name="ppvDataCArray">Receives the value of the field upon return.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>Upon return, the VARIANT you pass contains a direct pointer to the record's field, <i>ppvDataCArray</i>. If you modify the VARIANT, then the underlying record field will change. The caller allocates memory of the VARIANT, but does not own the memory so cannot free <i>pvarField</i>. This method calls <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-variantclear">VariantClear</a> for <i>pvarField</i> before filling in the requested field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getfieldnocopy#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.PutField(System.UInt32,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.PutField(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.PutField(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)">
            <summary>Puts a variant into a field.</summary>
            <param name="wFlags">
            <para>The only legal values for the wFlags parameter is INVOKE_PROPERTYPUT or INVOKE_PROPERTYPUTREF. If INVOKE_PROPERTYPUTREF is passed in then <b>PutField</b> just assigns the value of the variant that is passed in to the field using normal coercion rules. If INVOKE_PROPERTYPUT is passed in then specific rules apply. If the field is declared as a class that derives from <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> and the field's value is NULL then an error will be returned. If the field's value is not NULL then the variant will be passed to the default property supported by the object referenced by the field. If the field is not declared as a class derived from <b>IDispatch</b> then an error will be returned. If the field is declared as a variant of type VT_Dispatch then the default value of the object is assigned to the field. Otherwise, the variant's value is assigned to the field.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-putfield#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="pvData">The pointer to an instance of the record.</param>
            <param name="szFieldName">The name of the field of the record.</param>
            <param name="pvarField">The pointer to the variant.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-putfield">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.PutFieldNoCopy(System.UInt32,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.PutFieldNoCopy(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.PutFieldNoCopy(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)">
            <summary>Passes ownership of the data to the assigned field by placing the actual data into the field.</summary>
            <param name="wFlags">The only legal values for the wFlags parameter is INVOKE_PROPERTYPUT or INVOKE_PROPERTYPUTREF.</param>
            <param name="pvData">An instance of the record described by <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-irecordinfo">IRecordInfo</a>.</param>
            <param name="szFieldName">The name of the field of the record.</param>
            <param name="pvarField">The variant to be put into the field.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-putfieldnocopy">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNames(System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNames(System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.GetFieldNames(System.UInt32*,Windows.Win32.Foundation.BSTR*)">
            <summary>Gets the names of the fields of the record.</summary>
            <param name="pcNames">The number of names to return.</param>
            <param name="rgBstrNames">
            <para>The name of the array of type BSTR. If the <i>rgBstrNames</i> parameter is NULL, then <i>pcNames</i> is returned with the number of field names. It the <i>rgBstrNames</i> parameter is not NULL, then the string names contained in <i>rgBstrNames</i> are returned. If the number of names in <i>pcNames</i> and <i>rgBstrNames</i> are not equal then the lesser number of the two is the number of returned field names. The caller needs to free the BSTRs inside the array returned in <i>rgBstrNames</i>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getfieldnames#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The caller should allocate memory for the array of BSTRs. If the array is larger than needed, set the unused portion to 0. On return, the caller will need to free each contained BSTR using <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oleauto/nf-oleauto-sysfreestring">SysFreeString</a>. In case of out of memory, <i>pcNames</i> points to error code.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-getfieldnames#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.IsMatchingType(Windows.Win32.System.Ole.IRecordInfo*)">
            <summary>Determines whether the record that is passed in matches that of the current record information.</summary>
            <param name="pRecordInfo">The information of the record.</param>
            <returns>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-ismatchingtype">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordCreate">
            <summary>Allocates memory for a new record, initializes the instance and returns a pointer to the record.</summary>
            <returns>This method returns a pointer to the created record.</returns>
            <remarks>
            <para>The memory is set to zeros before it is returned. The records created must be freed by calling <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recorddestroy">RecordDestroy</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-recordcreate#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordCreateCopy(System.Void*,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.RecordCreateCopy(System.Void*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordCreateCopy(System.Void*,System.Void**)">
            <summary>Creates a copy of an instance of a record to the specified location.</summary>
            <param name="pvSource">An instance of the record to be copied.</param>
            <param name="ppvDest">The new record with data copied from <i>pvSource</i>.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>The records created must be freed by calling <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recorddestroy">RecordDestroy</a>.</remarks>
        </member>
        <member name="M:Windows.Win32.System.Ole.IRecordInfo.RecordDestroy(System.Void*)">
            <summary>Releases the resources and deallocates the memory of the record.</summary>
            <param name="pvRecord">An instance of the record to be destroyed.</param>
            <returns>
            <para>This method can return one of these values. </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para><a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recordclear">RecordClear</a> is called to release the resources held by the instance of a record without deallocating memory. <div class="alert"><b>Note</b>  This method can only be called on records allocated through <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recordcreate">RecordCreate</a> and <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nf-oaidl-irecordinfo-recordcreatecopy">RecordCreateCopy</a>. If you allocate the record yourself, you cannot call this method.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/nf-oaidl-irecordinfo-recorddestroy#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.IRecordInfo.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{0000002f-0000-0000-c000-000000000046}</value>
        </member>
        <member name="T:Windows.Win32.System.Ole.PARAMDESC">
            <summary>Contains information needed for transferring a structure element, parameter, or function return value between processes.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-paramdesc">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.PARAMDESC.pparamdescex">
            <summary>The default value for the parameter, if PARAMFLAG_FHASDEFAULT is specified in <b>wParamFlags</b>.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ole.PARAMDESC.wParamFlags">
            <summary>The parameter flags. See <a href="https://docs.microsoft.com/previous-versions/windows/desktop/automat/paramflags">PARAMFLAG Constants</a>.</summary>
        </member>
        <member name="T:Windows.Win32.System.Ole.PARAMDESCEX">
            <summary>Contains information about the default value of a parameter.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-paramdescex">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Ole.PARAMDESCEX.cBytes">
            <summary>The size of the structure.</summary>
        </member>
        <member name="F:Windows.Win32.System.Ole.PARAMDESCEX.varDefaultValue">
            <summary>The default value of the parameter.</summary>
        </member>
        <member name="T:Windows.Win32.System.Variant.VARENUM">
            <summary>Specifies the variant types.</summary>
            <remarks>
            <para>The following table shows where these values can be used. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/wtypes/ne-wtypes-varenum#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_EMPTY">
            <summary>Not specified.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_NULL">
            <summary>Null.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_I2">
            <summary>A 2-byte integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_I4">
            <summary>A 4-byte integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_R4">
            <summary>A 4-byte real.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_R8">
            <summary>An 8-byte real.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_CY">
            <summary>Currency.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_DATE">
            <summary>A date.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BSTR">
            <summary>A string.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_DISPATCH">
            <summary>An <a href="https://docs.microsoft.com/previous-versions/windows/desktop/api/oaidl/nn-oaidl-idispatch">IDispatch</a> pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_ERROR">
            <summary>An SCODE value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BOOL">
            <summary>A Boolean value. True is -1 and false is 0.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_VARIANT">
            <summary>A variant pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UNKNOWN">
            <summary>An <a href="https://docs.microsoft.com/windows/desktop/api/unknwn/nn-unknwn-iunknown">IUnknown</a> pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_DECIMAL">
            <summary>A 16-byte fixed-pointer value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_I1">
            <summary>A character.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UI1">
            <summary>An unsigned character.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UI2">
            <summary>An unsigned short.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UI4">
            <summary>An unsigned long.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_I8">
            <summary>A 64-bit integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UI8">
            <summary>A 64-bit unsigned integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_INT">
            <summary>An integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UINT">
            <summary>An unsigned integer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_VOID">
            <summary>A C-style void.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_HRESULT">
            <summary>An HRESULT value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_PTR">
            <summary>A pointer type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_SAFEARRAY">
            <summary>A safe array. Use VT_ARRAY in VARIANT.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_CARRAY">
            <summary>A C-style array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_USERDEFINED">
            <summary>A user-defined type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_LPSTR">
            <summary>A null-terminated string.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_LPWSTR">
            <summary>A wide null-terminated string.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_RECORD">
            <summary>A user-defined type.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_INT_PTR">
            <summary>A signed machine register size width.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_UINT_PTR">
            <summary>An unsigned machine register size width.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_FILETIME">
            <summary>A <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> value.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BLOB">
            <summary>Length-prefixed bytes.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_STREAM">
            <summary>The name of the stream follows.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_STORAGE">
            <summary>The name of the storage follows.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_STREAMED_OBJECT">
            <summary>The stream contains an object.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_STORED_OBJECT">
            <summary>The storage contains an object.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BLOB_OBJECT">
            <summary>The blob contains an object.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_CF">
            <summary>A clipboard format.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_CLSID">
            <summary>A class ID.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_VERSIONED_STREAM">
            <summary>A stream with a GUID version.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BSTR_BLOB">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_VECTOR">
            <summary>A simple counted array.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_ARRAY">
            <summary>A SAFEARRAY pointer.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_BYREF">
            <summary>A void pointer for local use.</summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_RESERVED">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_ILLEGAL">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_ILLEGALMASKED">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.System.Variant.VARENUM.VT_TYPEMASK">
            <summary></summary>
        </member>
        <member name="T:Windows.Win32.System.Variant.VARIANT">
            <summary>VARIANTARG describes arguments passed within DISPPARAMS, and VARIANT to specify variant data that cannot be passed by reference.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/oaidl/ns-oaidl-variant">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="P:Windows.Win32.Foundation.BSTR.Length">
            <summary>
            Gets the length of the BSTR in characters.
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.DECIMAL">
            <summary>The DECIMAL structure represents a decimal data type that provides a sign and scale for a number.</summary>
            <remarks></remarks>
        </member>
        <member name="F:Windows.Win32.Foundation.DECIMAL.wReserved">
            <summary>Reserved.</summary>
        </member>
        <member name="F:Windows.Win32.Foundation.DECIMAL.Hi32">
            <summary>The high 32 bits of the number.</summary>
        </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="F:Windows.Win32.Foundation.HRESULT.S_OK">
            <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnconnectioncontextevents-onsetprovisionedcontextcomplete">IMbnConnectionContextEvents.OnSetProvisionedContextComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnconnectionevents-onconnectcomplete">IMbnConnectionEvents.OnConnectComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onchangecomplete">IMbnPinEvents.OnChangeComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-ondisablecomplete">IMbnPinEvents.OnDisableComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onenablecomplete">IMbnPinEvents.OnEnableComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onentercomplete">IMbnPinEvents.OnEnterComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onunblockcomplete">IMbnPinEvents.OnUnblockComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinmanagerevents-ongetpinstatecomplete">IMbnPinManagerEvents.OnGetPinStateComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnradioevents-onsetsoftwareradiostatecomplete">IMbnRadioEvents.OnSetSoftwareRadioStateComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnserviceactivationevents-onactivationcomplete">IMbnServiceActivationEvents.OnActivationComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsetsmsconfigurationcomplete">IMbnSmsEvents.OnSetSmsConfigurationComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmsdeletecomplete">IMbnSmsEvents.OnSmsDeleteComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmsreadcomplete">IMbnSmsEvents.OnSmsReadComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmssendcomplete">IMbnSmsEvents.OnSmsSendComplete</see>.</summary>
        </member>
        <member name="T:Windows.Win32.Foundation.PCSTR">
            <summary>
            A pointer to a null-terminated, constant, ANSI character string.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PCSTR.Value">
            <summary>
            A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PCSTR.Length">
            <summary>
            Gets the number of characters up to the first null character (exclusive).
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PCSTR.ToString">
            <summary>
            Returns a <see langword="string"/> with a copy of this character array, decoding as UTF-8.
            </summary>
            <returns>A <see langword="string"/>, or <see langword="null"/> if <see cref="F:Windows.Win32.Foundation.PCSTR.Value"/> is <see langword="null"/>.</returns>
        </member>
        <member name="M:Windows.Win32.Foundation.PCSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.PCWSTR">
            <summary>
            A pointer to a null-terminated, constant character string.
            </summary>
        </member>
        <member name="F:Windows.Win32.Foundation.PCWSTR.Value">
            <summary>
            A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK.
            </summary>
        </member>
        <member name="P:Windows.Win32.Foundation.PCWSTR.Length">
            <summary>
            Gets the number of characters up to the first null character (exclusive).
            </summary>
        </member>
        <member name="M:Windows.Win32.Foundation.PCWSTR.ToString">
            <summary>
            Returns a <see langword="string"/> with a copy of this character array, up to the first null character (exclusive).
            </summary>
            <returns>A <see langword="string"/>, or <see langword="null"/> if <see cref="F:Windows.Win32.Foundation.PCWSTR.Value"/> is <see langword="null"/>.</returns>
        </member>
        <member name="M:Windows.Win32.Foundation.PCWSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </summary>
        </member>
        <member name="T:Windows.Win32.Foundation.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.PSTR.ToString">
            <inheritdoc cref="M:Windows.Win32.Foundation.PCSTR.ToString"/>
        </member>
        <member name="P:Windows.Win32.Foundation.PSTR.Length">
            <inheritdoc cref="P:Windows.Win32.Foundation.PCSTR.Length"/>
        </member>
        <member name="M:Windows.Win32.Foundation.PSTR.AsSpan">
            <summary>
            Returns a span of the characters in this string, up to the first null character (exclusive).
            </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="T:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW">
            <summary>Defines the initialization parameters passed to the window procedure of an application. These members are identical to the parameters of the CreateWindowEx function. (Unicode)</summary>
            <remarks>
            <para>Because the <b>lpszClass</b> member can contain a pointer to a local (and thus inaccessible) atom, do not obtain the class name by using this member. Use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getclassname">GetClassName</a> function instead. You should access the data represented by the <b>lpCreateParams</b> member using a pointer that has been declared using the <b>UNALIGNED</b> type, because the pointer may not be <b>DWORD</b> aligned. This is demonstrated in the following example:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.lpCreateParams">
            <summary>
            <para>Type: <b>LPVOID</b> Contains additional data which may be used to create the window. If the window is being created as a result of a call to the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowa">CreateWindow</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-createwindowexa">CreateWindowEx</a> function, this member contains the value of the <i>lpParam</i> parameter specified in the function call. If the window being created is a MDI client window, this member contains a pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-clientcreatestruct">CLIENTCREATESTRUCT</a> structure. If the window being created is a MDI child window, this member contains a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/winuser/ns-winuser-mdicreatestructa">MDICREATESTRUCT</a> structure. If the window is being created from a dialog template, this member is the address of a <b>SHORT</b> value that specifies the size, in bytes, of the window creation data. The value is immediately followed by the creation data. For more information, see the following Remarks section.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.hInstance">
            <summary>
            <para>Type: <b>HINSTANCE</b> A handle to the module that owns the new window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.hMenu">
            <summary>
            <para>Type: <b>HMENU</b> A handle to the menu to be used by the new window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.hwndParent">
            <summary>
            <para>Type: <b>HWND</b> A handle to the parent window, if the window is a child window. If the window is owned, this member identifies the owner window. If the window is not a child or owned window, this member is <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.cy">
            <summary>
            <para>Type: <b>int</b> The height of the new window, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.cx">
            <summary>
            <para>Type: <b>int</b> The width of the new window, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.y">
            <summary>
            <para>Type: <b>int</b> The y-coordinate of the upper left corner of the new window. If the new window is a child window, coordinates are relative to the parent window. Otherwise, the coordinates are relative to the screen origin.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.x">
            <summary>
            <para>Type: <b>int</b> The x-coordinate of the upper left corner of the new window. If the new window is a child window, coordinates are relative to the parent window. Otherwise, the coordinates are relative to the screen origin.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.lpszName">
            <summary>
            <para>Type: <b>LPCTSTR</b> The name of the new window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.lpszClass">
            <summary>
            <para>Type: <b>LPCTSTR</b> A pointer to a null-terminated string or an atom that specifies the class name of the new window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.CREATESTRUCTW.dwExStyle">
            <summary>
            <para>Type: <b>DWORD</b> The extended window style for the new window. For a list of possible values, see  <a href="https://docs.microsoft.com/windows/desktop/winmsg/extended-window-styles">Extended Window Styles</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-createstructw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO">
            <summary>Contains information about a window's maximized size and position and its minimum and maximum tracking size.</summary>
            <remarks>For systems with multiple monitors, the <b>ptMaxSize</b> and <b>ptMaxPosition</b> members describe the maximized size and position of the window on the primary monitor, even if the window ultimately maximizes onto a secondary monitor. In that case, the window manager adjusts these values to compensate for differences between the primary monitor and the monitor that displays the window. Thus, if the user leaves <b>ptMaxSize</b> untouched, a window on a monitor larger than the primary monitor maximizes to the size of the larger monitor.</remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO.ptReserved">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> Reserved; do not use.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-minmaxinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO.ptMaxSize">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The maximized width (<b>x</b> member) and the maximized height (<b>y</b> member) of the window. For top-level windows, this value is based on the width of the primary monitor.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-minmaxinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO.ptMaxPosition">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The position of the left side of the maximized window (<b>x</b> member) and the position of the top of the maximized window (<b>y</b> member). For top-level windows, this value is based on the position of the primary monitor.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-minmaxinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO.ptMinTrackSize">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The minimum tracking width (<b>x</b> member) and the minimum tracking height (<b>y</b> member) of the window. This value can be obtained programmatically from the system metrics <b>SM_CXMINTRACK</b> and <b>SM_CYMINTRACK</b> (see the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getsystemmetrics">GetSystemMetrics</a> function).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-minmaxinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.MINMAXINFO.ptMaxTrackSize">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-point">POINT</a></b> The maximum tracking width (<b>x</b> member) and the maximum tracking height (<b>y</b> member) of the window. This value is based on the size of the virtual screen and can be obtained programmatically from the system metrics <b>SM_CXMAXTRACK</b> and <b>SM_CYMAXTRACK</b> (see the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getsystemmetrics">GetSystemMetrics</a> function).</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-minmaxinfo#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS">
            <summary>Contains information about the size and position of a window.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.hwnd">
            <summary>
            <para>Type: <b>HWND</b> A handle to the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.hwndInsertAfter">
            <summary>
            <para>Type: <b>HWND</b> The position of the window in Z order (front-to-back position). This member can be a handle to the window behind which this window is placed, or can be one of the special values listed with the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-setwindowpos">SetWindowPos</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.x">
            <summary>
            <para>Type: <b>int</b> The position of the left edge of the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.y">
            <summary>
            <para>Type: <b>int</b> The position of the top edge of the window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.cx">
            <summary>
            <para>Type: <b>int</b> The window width, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.cy">
            <summary>
            <para>Type: <b>int</b> The window height, in pixels.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-windowpos#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WINDOWPOS.flags">
            <summary>Type: <b>UINT</b></summary>
        </member>
        <member name="T:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW">
            <summary>Contains window class information. (Unicode)</summary>
            <remarks>
            <para>> [!NOTE] > The winuser.h header defines WNDCLASSEX 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/ns-winuser-wndclassexw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.cbSize">
            <summary>
            <para>Type: <b>UINT</b> The size, in bytes, of this structure. Set this member to <c>sizeof(WNDCLASSEX)</c>. Be sure to set this member before calling the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-getclassinfoexa">GetClassInfoEx</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.style">
            <summary>
            <para>Type: <b>UINT</b> The class style(s). This member can be any combination of the <a href="https://docs.microsoft.com/windows/win32/winmsg/window-class-styles">Class Styles</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.lpfnWndProc">
            <summary>
            <para>Type: <b>WNDPROC</b> A pointer to the window procedure. You must use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-callwindowproca">CallWindowProc</a> function to call the window procedure. For more information, see <a href="https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms633573(v=vs.85)">WindowProc</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.cbClsExtra">
            <summary>
            <para>Type: <b>int</b> The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.cbWndExtra">
            <summary>
            <para>Type: <b>int</b> The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses <b>WNDCLASSEX</b> to register a dialog box created by using the <b>CLASS</b> directive in the resource file, it must set this member to <b>DLGWINDOWEXTRA</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.hInstance">
            <summary>
            <para>Type: <b>HINSTANCE</b> A handle to the instance that contains the window procedure for the class.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.hIcon">
            <summary>
            <para>Type: <b>HICON</b> A handle to the class icon. This member must be a handle to an icon resource. If this member is <b>NULL</b>, the system provides a default icon.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.hCursor">
            <summary>
            <para>Type: <b>HCURSOR</b> A handle to the class cursor. This member must be a handle to a cursor resource. If this member is <b>NULL</b>, an application must explicitly set the cursor shape whenever the mouse moves into the application's window.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.hbrBackground">
            <summary>
            <para>Type: <b>HBRUSH</b> A handle to the class background brush. This member can be a handle to the brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following <b>HBRUSH</b> types: </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.lpszMenuName">
            <summary>
            <para>Type: <b>LPCTSTR</b> Pointer to a null-terminated character string that specifies the resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-makeintresourcea">MAKEINTRESOURCE</a> macro. If this member is <b>NULL</b>, windows belonging to this class have no default menu.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.lpszClassName">
            <summary>
            <para>Type: <b>LPCTSTR</b> A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassa">RegisterClass</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a> function. The atom must be in the low-order word of <b>lpszClassName</b>; the high-order word must be zero.</para>
            <para>If <b>lpszClassName</b> is a string, it specifies the window class name. The class name can be any name registered with <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassa">RegisterClass</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a>, or any of the predefined control-class names. The maximum length for <b>lpszClassName</b> is 256. If <b>lpszClassName</b> is greater than the maximum length, the <a href="https://docs.microsoft.com/windows/desktop/api/winuser/nf-winuser-registerclassexa">RegisterClassEx</a> function will fail.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.WindowsAndMessaging.WNDCLASSEXW.hIconSm">
            <summary>
            <para>Type: <b>HICON</b> A handle to a small icon that is associated with the window class. If this member is <b>NULL</b>, the system searches the icon resource specified by the <b>hIcon</b> member for an icon of the appropriate size to use as the small icon.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-wndclassexw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.FILEDESCRIPTORW">
            <summary>Describes the properties of a file that is being copied by means of the clipboard during a Microsoft ActiveX drag-and-drop operation. (Unicode)</summary>
            <remarks>
            <para>If the <a href="https://docs.microsoft.com/windows/desktop/shell/clipboard">CFSTR_FILECONTENTS</a> format that corresponds to this structure contains the file as a global memory object, <b>nFileSizeHigh</b> and <b>nFileSizeLow</b> specify the size of the associated memory block. If they are set, they can also be used if a user-interface needs to be displayed. For example, if a file is about to be overwritten, you would typically use information from this structure to display a dialog box containing the size, data, and name of the file. To create a zero-length file, set the <b>FD_FILESIZE</b> flag in the <b>dwFlags</b>, and set <b>nFileSizeHigh</b> and <b>nFileSizeLow</b> to zero. The <a href="https://docs.microsoft.com/windows/desktop/shell/clipboard">CFSTR_FILECONTENTS</a> format should represent the file as either a stream or global memory object (<a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-tymed">TYMED_ISTREAM</a> or <a href="https://docs.microsoft.com/windows/desktop/api/objidl/ne-objidl-tymed">TYMED_HGLOBAL</a>).</para>
            <para>> [!NOTE] > The shlobj_core.h header defines FILEDESCRIPTOR 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/shlobj_core/ns-shlobj_core-filedescriptorw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.dwFlags">
            <summary>Type: <b>DWORD</b></summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.clsid">
            <summary>
            <para>Type: <b>CLSID</b> The file type identifier.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.sizel">
            <summary>
            <para>Type: <b>SIZEL</b> The width and height of the file icon.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.pointl">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/win32/api/windef/ns-windef-pointl">POINTL</a></b> The screen coordinates of the file object.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.dwFileAttributes">
            <summary>
            <para>Type: <b>DWORD</b> File attribute flags. This will be a combination of the FILE_ATTRIBUTE_ values described in <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-getfileattributesa">GetFileAttributes</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.ftCreationTime">
            <summary>
            <para>Type: <b>FILETIME</b> The <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure that contains the time of file creation.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.ftLastAccessTime">
            <summary>
            <para>Type: <b>FILETIME</b> The <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure that contains the time that the file was last accessed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.ftLastWriteTime">
            <summary>
            <para>Type: <b>FILETIME</b> The <a href="https://docs.microsoft.com/windows/desktop/api/minwinbase/ns-minwinbase-filetime">FILETIME</a> structure that contains the time of the last write operation.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.nFileSizeHigh">
            <summary>
            <para>Type: <b>DWORD</b> The high-order <b>DWORD</b> of the file size, in bytes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.nFileSizeLow">
            <summary>
            <para>Type: <b>DWORD</b> The low-order <b>DWORD</b> of the file size, in bytes.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEDESCRIPTORW.cFileName">
            <summary>
            <para>Type: <b>TCHAR[MAX_PATH]</b> The null-terminated string that contains the name of the file.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filedescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Shell.FILEGROUPDESCRIPTORW">
            <summary>Defines the CF_FILEGROUPDESCRIPTOR clipboard format. (Unicode)</summary>
            <remarks>
            <para>> [!NOTE] > The shlobj_core.h header defines FILEGROUPDESCRIPTOR 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/shlobj_core/ns-shlobj_core-filegroupdescriptorw#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEGROUPDESCRIPTORW.cItems">
            <summary>
            <para>Type: <b>UINT</b> The number of elements in <b>fgd</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filegroupdescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Shell.FILEGROUPDESCRIPTORW.fgd">
            <summary>
            <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shlobj_core/ns-shlobj_core-filedescriptora">FILEDESCRIPTOR</a>[1]</b> An array of <a href="https://docs.microsoft.com/windows/desktop/api/shlobj_core/ns-shlobj_core-filedescriptora">FILEDESCRIPTOR</a> structures that contain the file information.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/shlobj_core/ns-shlobj_core-filegroupdescriptorw#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="M:Windows.Win32.UI.Shell.FILEGROUPDESCRIPTORW.SizeOf(System.Int32)">
            <summary>Computes the amount of memory that must be allocated to store this struct, including the specified number of elements in the variable length inline array at the end.</summary>
        </member>
        <member name="M:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.QueryInterface(System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.QueryInterface(System.Guid*,System.Void**)"/>
        </member>
        <member name="P:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.ProviderOptions">
            <summary>Specifies the type of Microsoft UI Automation provider; for example, whether it is a client-side (proxy) or server-side provider.</summary>
            <remarks>
            <para>The method must return either <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationcore/ne-uiautomationcore-provideroptions">ProviderOptions_ServerSideProvider</a> or <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationcore/ne-uiautomationcore-provideroptions">ProviderOptions_ClientSideProvider</a>. UI Automation handles the various types of providers differently. For example, events from a server-side provider are broadcast to all listening clients, but events from client-side (proxy) providers remain in the client.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-get_provideroptions#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.GetPatternProvider(Windows.Win32.UI.Accessibility.UIA_PATTERN_ID)">
            <summary>Retrieves a pointer to an object that provides support for a control pattern on a Microsoft UI Automation element.</summary>
            <param name="patternId">
            <para>Type: <b>PATTERNID</b> The identifier of the control pattern. For a list of control pattern IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-controlpattern-ids">Control Pattern Identifiers</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-getpatternprovider#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">HRESULT</a></b> If this method 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/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-getpatternprovider">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.GetPropertyValue(Windows.Win32.UI.Accessibility.UIA_PROPERTY_ID)">
            <summary>Retrieves the value of a property supported by the Microsoft UI Automation provider.</summary>
            <param name="propertyId">
            <para>Type: <b>PROPERTYID</b> The property identifier. For a list of property IDs, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-entry-propids">Property Identifiers</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-getpropertyvalue#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">HRESULT</a></b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an  <a href="https://docs.microsoft.com/windows/desktop/WinProg/windows-data-types">HRESULT</a> error code. If the provider does not support the <i>propertyId</i> property, the provider should set <i>pRetVal-&gt;vt</i> to <b>VT_EMPTY</b> and return <b>S_OK</b>.</para>
            </returns>
            <remarks>
            <para>If a provider is explicitly hiding the property value (that is, the provider does not supply the property, and the request is not to be passed through to other providers), it should return a pointer obtained by using the             <a href="https://docs.microsoft.com/windows/desktop/api/uiautomationcoreapi/nf-uiautomationcoreapi-uiagetreservednotsupportedvalue">UiaGetReservedNotSupportedValue</a> function. For example:</para>
            <para></para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-getpropertyvalue#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="P:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.HostRawElementProvider">
            <summary>Specifies the host provider for this element.</summary>
            <remarks>
            <para>This property is generally the Microsoft UI Automation provider for the window of a custom control. UI Automation uses this provider in combination with the custom provider. For example, the runtime identifier of the element is usually obtained from the host provider. A host provider must be returned in the following cases: when the element is a fragment root, when the element is a simple element (such as a push button), and when the provider is a repositioning placeholder (for more information, see <a href="https://docs.microsoft.com/windows/desktop/WinAuto/uiauto-serversideprovider">Provider Repositioning</a>). In other cases, the property should be <b>NULL</b>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/nf-uiautomationcore-irawelementprovidersimple-get_hostrawelementprovider#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.IID_Guid">
            <summary>The IID guid for this interface.</summary>
            <value>{d6dd68d1-86fd-4332-8666-9abedea2d24c}</value>
        </member>
        <member name="T:Windows.Win32.UI.Accessibility.NotificationKind">
            <summary>Defines values that indicate the type of a notification event, and a hint to the listener about the processing of the event.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationkind">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationKind.NotificationKind_ItemAdded">
            <summary>The current element and/or the container has had something added to it that should be presented to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationKind.NotificationKind_ItemRemoved">
            <summary>The current element has had something removed from inside of it that should be presented to the user.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationKind.NotificationKind_ActionCompleted">
            <summary>The current element has a notification that an action was completed.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationKind.NotificationKind_ActionAborted">
            <summary>The current element has a notification that an action was aborted.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationKind.NotificationKind_Other">
            <summary>The current element has a notification not an add, remove, completed, or aborted action.</summary>
        </member>
        <member name="T:Windows.Win32.UI.Accessibility.NotificationProcessing">
            <summary>Defines values that indicate how a notification should be processed.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationProcessing.NotificationProcessing_ImportantAll">
            <summary>
            <para>These notifications should be presented to the user as soon as possible and all of the notifications from this source should be delivered to the user. <div class="alert"><b>Warning</b>  Use this in a limited capacity as this style of message could cause a flooding of information to the user due to the nature of the request to deliver all notifications.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationProcessing.NotificationProcessing_ImportantMostRecent">
            <summary>
            <para>These notifications should be presented to the user as soon as possible. The most recent notification from this source should be delivered to the user because it supersedes all of the other notifications.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationProcessing.NotificationProcessing_All">
            <summary>
            <para>These notifications should be presented to the user when possible. All of the notifications from this source should be delivered to the user.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationProcessing.NotificationProcessing_MostRecent">
            <summary>
            <para>These notifications should be presented to the user when possible. The most recent notification from this source should be delivered to the user because it supersedes all of the other notifications.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.NotificationProcessing.NotificationProcessing_CurrentThenMostRecent">
            <summary>
            <para>These notifications should be presented to the user when possible. Don’t interrupt the current notification for this one. If new notifications come in from the same source while the current notification is being presented, keep the most recent and ignore the rest until the current processing is completed.  Then, use the most recent message as the current message.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-notificationprocessing#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.UI.Accessibility.ProviderOptions">
            <summary>Contains values that specify the type of UI Automation provider. The IRawElementProviderSimple::ProviderOptions property uses this enumeration.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/uiautomationcore/ne-uiautomationcore-provideroptions">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_ClientSideProvider">
            <summary>The provider is a client-side (proxy) provider.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_ServerSideProvider">
            <summary>The provider is a server-side provider.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_NonClientAreaProvider">
            <summary>The provider is a non-client-area provider.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_OverrideProvider">
            <summary>The provider overrides another provider.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_ProviderOwnsSetFocus">
            <summary>The provider handles its own focus, and does not want UI Automation to set focus to the nearest window on its behalf. This option is typically used by providers for windows that appear to take focus without actually receiving Win32 focus, such as menus and drop-downs.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_UseComThreading">
            <summary>The provider has explicit support for COM threading models, so that calls by UI Automation on COM-based providers are received on the appropriate thread. This means that STA-based provider implementations will be called back on their own STA thread, and therefore do not need extra synchronization to safely access resources that belong to that STA. MTA-based provider implementations will be called back on some other thread in the MTA, and will require appropriate synchronization to be added, as is usual for MTA code.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_RefuseNonClientSupport">
            <summary>The provider handles its own non-client area and does not want UI Automation to provide default accessibility support for controls in the non-client area, such as minimize/maximize buttons and menu bars.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_HasNativeIAccessible">
            <summary>The provider implements the <a href="https://docs.microsoft.com/windows/desktop/api/oleacc/nn-oleacc-iaccessible">IAccessible</a> interface.</summary>
        </member>
        <member name="F:Windows.Win32.UI.Accessibility.ProviderOptions.ProviderOptions_UseClientCoordinates">
            <summary>The provider works in client coordinates instead of screen coordinates.</summary>
        </member>
        <member name="T:Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE">
            <summary>Identifies the dots per inch (dpi) setting for a monitor.</summary>
            <remarks>All of these settings are affected by the <a href="https://docs.microsoft.com/windows/desktop/api/shellscalingapi/ne-shellscalingapi-process_dpi_awareness">PROCESS_DPI_AWARENESS</a> of your application</remarks>
        </member>
        <member name="F:Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE.MDT_EFFECTIVE_DPI">
            <summary>The effective DPI. This value should be used when determining the correct scale factor for scaling UI elements. This incorporates the scale factor set by the user for this specific display.</summary>
        </member>
        <member name="F:Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE.MDT_ANGULAR_DPI">
            <summary>The angular DPI. This DPI ensures rendering at a compliant angular resolution on the screen. This does not include the scale factor set by the user for this specific display.</summary>
        </member>
        <member name="F:Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE.MDT_RAW_DPI">
            <summary>The raw DPI. This value is the linear DPI of the screen as measured on the screen itself. Use this value when you want to read the pixel density and not the recommended scaling setting. This does not include the scale factor set by the user for this specific display and is not guaranteed to be a supported DPI value.</summary>
        </member>
        <member name="F:Windows.Win32.UI.HiDpi.MONITOR_DPI_TYPE.MDT_DEFAULT">
            <summary>The default DPI setting for a monitor is MDT_EFFECTIVE_DPI.</summary>
        </member>
        <member name="T:Windows.Win32.DestroyCursorSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.DestroyCursor(Windows.Win32.UI.WindowsAndMessaging.HCURSOR)"/>.
            </summary>
        </member>
        <member name="T:Windows.Win32.FreeLibrarySafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.FreeLibrary(Windows.Win32.Foundation.HMODULE)"/>.
            </summary>
        </member>
        <member name="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="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.SysFreeStringSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.SysFreeString(Windows.Win32.Foundation.BSTR)"/>.
            </summary>
        </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_ITypeComp_Extensions.Bind(Windows.Win32.System.Com.ITypeComp.Interface,Windows.Win32.Foundation.PWSTR,System.UInt32,System.UInt16,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.DESCKIND@,Windows.Win32.System.Com.BINDPTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeComp.Interface.Bind(Windows.Win32.Foundation.PWSTR,System.UInt32,System.UInt16,Windows.Win32.System.Com.ITypeInfo**,Windows.Win32.System.Com.DESCKIND*,Windows.Win32.System.Com.BINDPTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetTypeAttr(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.TYPEATTR*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetTypeAttr(Windows.Win32.System.Com.TYPEATTR**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetFuncDesc(Windows.Win32.System.Com.ITypeInfo.Interface,System.UInt32,Windows.Win32.System.Com.FUNCDESC*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetFuncDesc(System.UInt32,Windows.Win32.System.Com.FUNCDESC**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetVarDesc(Windows.Win32.System.Com.ITypeInfo.Interface,System.UInt32,Windows.Win32.System.Com.VARDESC*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetVarDesc(System.UInt32,Windows.Win32.System.Com.VARDESC**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetNames(Windows.Win32.System.Com.ITypeInfo.Interface,System.Int32,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetNames(System.Int32,Windows.Win32.Foundation.BSTR*,System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetRefTypeOfImplType(Windows.Win32.System.Com.ITypeInfo.Interface,System.UInt32,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetRefTypeOfImplType(System.UInt32,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetImplTypeFlags(Windows.Win32.System.Com.ITypeInfo.Interface,System.UInt32,Windows.Win32.System.Com.IMPLTYPEFLAGS@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetImplTypeFlags(System.UInt32,Windows.Win32.System.Com.IMPLTYPEFLAGS*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetIDsOfNames(Windows.Win32.System.Com.ITypeInfo.Interface,System.ReadOnlySpan{Windows.Win32.Foundation.PWSTR},System.Span{System.Int32})">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetIDsOfNames(Windows.Win32.Foundation.PWSTR*,System.UInt32,System.Int32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.Invoke(Windows.Win32.System.Com.ITypeInfo.Interface,System.Void*,System.Int32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS@,Windows.Win32.System.Variant.VARIANT@,Windows.Win32.System.Com.EXCEPINFO@,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.Invoke(System.Void*,System.Int32,Windows.Win32.System.Com.DISPATCH_FLAGS,Windows.Win32.System.Com.DISPPARAMS*,Windows.Win32.System.Variant.VARIANT*,Windows.Win32.System.Com.EXCEPINFO*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetDocumentation(Windows.Win32.System.Com.ITypeInfo.Interface,System.Int32,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetDllEntry(Windows.Win32.System.Com.ITypeInfo.Interface,System.Int32,Windows.Win32.System.Com.INVOKEKIND,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt16@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetDllEntry(System.Int32,Windows.Win32.System.Com.INVOKEKIND,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt16*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.AddressOfMember(Windows.Win32.System.Com.ITypeInfo.Interface,System.Int32,Windows.Win32.System.Com.INVOKEKIND,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.AddressOfMember(System.Int32,Windows.Win32.System.Com.INVOKEKIND,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.CreateInstance(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.IUnknown*,System.Guid@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.CreateInstance(Windows.Win32.System.Com.IUnknown*,System.Guid*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetMops(Windows.Win32.System.Com.ITypeInfo.Interface,System.Int32,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetMops(System.Int32,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.GetContainingTypeLib(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.ITypeLib**,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.GetContainingTypeLib(Windows.Win32.System.Com.ITypeLib**,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.ReleaseTypeAttr(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.TYPEATTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.ReleaseTypeAttr(Windows.Win32.System.Com.TYPEATTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.ReleaseFuncDesc(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.FUNCDESC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.ReleaseFuncDesc(Windows.Win32.System.Com.FUNCDESC*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeInfo_Extensions.ReleaseVarDesc(Windows.Win32.System.Com.ITypeInfo.Interface,Windows.Win32.System.Com.VARDESC@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeInfo.Interface.ReleaseVarDesc(Windows.Win32.System.Com.VARDESC*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.GetTypeInfoType(Windows.Win32.System.Com.ITypeLib.Interface,System.UInt32,Windows.Win32.System.Com.TYPEKIND@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.GetTypeInfoType(System.UInt32,Windows.Win32.System.Com.TYPEKIND*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.GetTypeInfoOfGuid(Windows.Win32.System.Com.ITypeLib.Interface,System.Guid@,Windows.Win32.System.Com.ITypeInfo**)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.GetTypeInfoOfGuid(System.Guid*,Windows.Win32.System.Com.ITypeInfo**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.GetLibAttr(Windows.Win32.System.Com.ITypeLib.Interface,Windows.Win32.System.Com.TLIBATTR*@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.GetLibAttr(Windows.Win32.System.Com.TLIBATTR**)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.GetDocumentation(Windows.Win32.System.Com.ITypeLib.Interface,System.Int32,Windows.Win32.SysFreeStringSafeHandle@,Windows.Win32.SysFreeStringSafeHandle@,System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.GetDocumentation(System.Int32,Windows.Win32.Foundation.BSTR*,Windows.Win32.Foundation.BSTR*,System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.IsName(Windows.Win32.System.Com.ITypeLib.Interface,System.Span{System.Char}@,System.UInt32,Windows.Win32.Foundation.BOOL@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.IsName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.Foundation.BOOL*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.FindName(Windows.Win32.System.Com.ITypeLib.Interface,System.Span{System.Char}@,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,System.Int32*,System.UInt16@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.FindName(Windows.Win32.Foundation.PWSTR,System.UInt32,Windows.Win32.System.Com.ITypeInfo**,System.Int32*,System.UInt16*)"/>
        </member>
        <member name="M:Windows.Win32.System_Com_ITypeLib_Extensions.ReleaseTLibAttr(Windows.Win32.System.Com.ITypeLib.Interface,Windows.Win32.System.Com.TLIBATTR@)">
            <inheritdoc cref="M:Windows.Win32.System.Com.ITypeLib.Interface.ReleaseTLibAttr(Windows.Win32.System.Com.TLIBATTR*)"/>
        </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_IRecordInfo_Extensions.GetGuid(Windows.Win32.System.Ole.IRecordInfo.Interface,System.Guid@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetGuid(System.Guid*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.GetName(Windows.Win32.System.Ole.IRecordInfo.Interface,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetName(Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.GetSize(Windows.Win32.System.Ole.IRecordInfo.Interface,System.UInt32@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetSize(System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.GetField(Windows.Win32.System.Ole.IRecordInfo.Interface,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetField(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.GetFieldNoCopy(Windows.Win32.System.Ole.IRecordInfo.Interface,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetFieldNoCopy(System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.PutField(Windows.Win32.System.Ole.IRecordInfo.Interface,System.UInt32,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.PutField(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.PutFieldNoCopy(Windows.Win32.System.Ole.IRecordInfo.Interface,System.UInt32,System.Void*,System.String,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.PutFieldNoCopy(System.UInt32,System.Void*,Windows.Win32.Foundation.PCWSTR,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.GetFieldNames(Windows.Win32.System.Ole.IRecordInfo.Interface,System.UInt32@,Windows.Win32.SysFreeStringSafeHandle@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.GetFieldNames(System.UInt32*,Windows.Win32.Foundation.BSTR*)"/>
        </member>
        <member name="M:Windows.Win32.System_Ole_IRecordInfo_Extensions.RecordCreateCopy(Windows.Win32.System.Ole.IRecordInfo.Interface,System.Void*,System.Void*@)">
            <inheritdoc cref="M:Windows.Win32.System.Ole.IRecordInfo.Interface.RecordCreateCopy(System.Void*,System.Void**)"/>
        </member>
        <member name="M:Windows.Win32.UI_Accessibility_IRawElementProviderSimple_Extensions.GetPropertyValue(Windows.Win32.UI.Accessibility.IRawElementProviderSimple.Interface,Windows.Win32.UI.Accessibility.UIA_PROPERTY_ID,Windows.Win32.System.Variant.VARIANT@)">
            <inheritdoc cref="M:Windows.Win32.UI.Accessibility.IRawElementProviderSimple.Interface.GetPropertyValue(Windows.Win32.UI.Accessibility.UIA_PROPERTY_ID,Windows.Win32.System.Variant.VARIANT*)"/>
        </member>
        <member name="T:XamlGeneratedNamespace.GeneratedInternalTypeHelper">
            <summary>
            GeneratedInternalTypeHelper
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateInstance(System.Type,System.Globalization.CultureInfo)">
            <summary>
            CreateInstance
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.GetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Globalization.CultureInfo)">
            <summary>
            GetPropertyValue
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.SetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Object,System.Globalization.CultureInfo)">
            <summary>
            SetPropertyValue
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateDelegate(System.Type,System.Object,System.String)">
            <summary>
            CreateDelegate
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.AddEventHandler(System.Reflection.EventInfo,System.Object,System.Delegate)">
            <summary>
            AddEventHandler
            </summary>
        </member>
    </members>
</doc>
