<?xml version="1.0"?>
<doc>
    <assembly>
        <name>YourPhone.Devices.Managed</name>
    </assembly>
    <members>
        <member name="T:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions">
            <summary>
            Manages per-device CNG encryption keys for SQLite database encryption.
            <para>
            Each device gets a named AES-256 key persisted in the Windows CNG
            Microsoft Software Key Storage Provider under the name
            <c>cd_k_{deviceId}</c>. The key material is exportable so
            it can be passed to the SQLite Encryption Extension via
            <c>sqlite3_key</c>.
            </para>
            <para>
            <b>Transient vs permanent failures:</b>
            <c>CngKey.Open</c> (which uses <c>NCryptOpenKey</c>) can throw
            <c>NTE_BAD_KEYSET</c> even when the key still exists — for example
            during a transient OS authentication issue. To distinguish this from
            a truly missing key (e.g. user profile rebuilt), we fall back to
            <c>NCryptEnumKeys</c> which uses a different code path and can succeed
            when <c>NCryptOpenKey</c> fails. See
            <c>KeyManager.GetExistingKey</c> in <c>YourPhone.YPP.Auth</c> for
            the same pattern.
            </para>
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions.GetDatabaseKey(YourPhone.AppCore.WinRT.Devices.IDeviceData)">
            <summary>
            Returns the 256-bit AES key used to encrypt this device's SQLite
            databases. Creates the key on first call. On
            <c>NTE_BAD_KEYSET</c>, distinguishes transient failures (rethrows)
            from permanently missing keys (creates a new one — existing
            encrypted databases will be recreated via the corruption-recovery
            path in <see cref="T:YourPhone.Utilities.Database.SqliteConnection"/>).
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions.ClearDatabaseKey(YourPhone.AppCore.WinRT.Devices.IDeviceData)">
            <summary>
            Deletes the persisted CNG database key for this device. After this
            call, <see cref="M:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions.GetDatabaseKey(YourPhone.AppCore.WinRT.Devices.IDeviceData)"/> will create a new key. Existing
            databases encrypted with the old key will be unreadable and will be
            recreated via corruption recovery.
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions.IsCngKeyPresentViaEnumeration(System.String)">
            <summary>
            Checks whether a CNG key exists by enumerating all keys in the
            Microsoft Software KSP. Uses <c>NCryptEnumKeys</c> — a different
            code path from <c>NCryptOpenKey</c> (used by
            <see cref="M:System.Security.Cryptography.CngKey.Open(System.String,System.Security.Cryptography.CngProvider,System.Security.Cryptography.CngKeyOpenOptions)"/> and <see cref="M:System.Security.Cryptography.CngKey.Exists(System.String,System.Security.Cryptography.CngProvider)"/>). The
            enumeration can succeed even when Open/Exists fail transiently
            with <c>NTE_BAD_KEYSET</c>.
            </summary>
        </member>
        <member name="T:YourPhone.Devices.Managed.Services.ActiveDeviceKeepAliveApplicationService">
            <summary>
            In fulltrust, we keep the process alive if a device is setup to maintain connection.
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.AccountDeviceSettingsGroupView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.AccountDeviceSettingsGroupView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.AccountDeviceSettingsGroupView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.MobileDevicesSettingsGroupView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.MobileDevicesSettingsGroupView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.MobileDevicesSettingsGroupView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.RemoveDeviceDialog.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.RemoveDeviceDialog.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.RemoveDeviceDialog.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.WallpaperSettingsGroupView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.WallpaperSettingsGroupView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Settings.WallpaperSettingsGroupView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Store.Device.GetDatabaseConnection(YourPhone.AppCore.WinRT.DataStore.IDatabaseInitializer)">
            <summary>
            Opens (or reuses) an encrypted SQLite database for this device.
            <para>
            <b>Connection lifecycle:</b> connections are ref-counted and cached
            per <see cref="P:YourPhone.AppCore.WinRT.DataStore.IDatabaseInitializer.Name"/>. The first caller creates
            the connection; subsequent callers get an additional reference to the
            same instance. When the last reference is disposed, the connection is
            closed and the cache entry is removed.
            </para>
            <para>
            <b>Encryption:</b> every connection is opened with the device's
            CNG-managed database key (see <see cref="M:YourPhone.Devices.Managed.Extensions.DeviceKeyExtensions.GetDatabaseKey(YourPhone.AppCore.WinRT.Devices.IDeviceData)"/>). For
            databases created before encryption was added, the
            <see cref="T:YourPhone.Utilities.Database.SqliteConnection"/> constructor detects the unencrypted
            file and opens it without a key for immediate access. After the
            <paramref name="initializer"/> has run (ensuring the schema exists),
            <see cref="M:YourPhone.Utilities.Database.SqliteConnection.PrepareEncryptedCopyIfNeeded(System.Byte[])"/> is
            fire-and-forgot to migrate the file to an encrypted copy in the
            background. See <see cref="T:YourPhone.Utilities.Database.SqliteConnection"/> class docs for the
            full encryption, migration, and corruption-recovery lifecycle.
            </para>
            </summary>
        </member>
        <member name="T:YourPhone.Devices.Managed.Store.InMemoryDeviceDataContainer">
            <summary>
            In-memory implementation of IDeviceDataContainer that doesn't persist to storage.
            Used when a device is detached from its storage container.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Utilities.AccountUserNameDeviceData.AccountUserNameFallback">
            <summary>
            This property should only be set when we are not able to match the remote device's account
            to an existing account on Windows. This allows us to prompt the user to re-enter creds
            for this account, specifically.
            Once the account has been authenticated and we have an AccountId, this property will be cleared.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.ViewModels.DccSyncOverMeteredConnectionViewModel.SyncOverMeteredConnectionEnabled">
            <summary>
            Note: Don't use the setter directly if setting value programmatically. See <see cref="M:YourPhone.Devices.Managed.ViewModels.DccSyncOverMeteredConnectionViewModel.SetSyncOverMeteredConnection(System.Boolean)"/>
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.ViewModels.DccSyncOverMeteredConnectionViewModel.UpdateSyncOverMeteredConnectionFromState(YourPhone.Contracts.Devices.ISyncOverMeteredConnectionOperationState)">
            <summary>
            Updates <see cref="P:YourPhone.Devices.Managed.ViewModels.DccSyncOverMeteredConnectionViewModel.SyncOverMeteredConnectionEnabled"/> either from transient state or disk
            </summary>
            <param name="state">The transient state</param>
        </member>
        <member name="M:YourPhone.Devices.Managed.ViewModels.DccSyncOverMeteredConnectionViewModel.SetSyncOverMeteredConnection(System.Boolean)">
            <summary>
            Needed to prevent doing unnecessary work when setting the underlying value programmatically.
            </summary>
        </member>
        <member name="E:YourPhone.Devices.Managed.ViewModels.Indicators.RingMyPhoneIndicatorViewModel.RingMyPhoneStateChanged">
            <summary>
            Raised when the phone starts ringing (sound starts playing) or stops ringing
            (sound stops playing and the button reverts to its play sound state). The view
            listens to this event to make Narrator announce the change.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.ViewModels.Indicators.RingMyPhoneIndicatorViewModel.RingStateChangeAccessibleText">
            <summary>
            Narrator announcement text describing the current ringing state of the indicator.
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.ConfirmationDialog.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.ConfirmationDialog.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.ConfirmationDialog.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="F:YourPhone.Devices.Managed.Views.DeviceActionIndicatorsView.ViewModelProperty">
            <summary>
            The Dependency property backing the ViewModel property
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceActionIndicatorsView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceActionIndicatorsView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceActionIndicatorsView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityButtonView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityButtonView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityButtonView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityCardView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityCardView.UnloadObject(Microsoft.UI.Xaml.DependencyObject)">
            <summary>
            UnloadObject(DependencyObject)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityCardView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityCardView.DisconnectUnloadedObject(System.Int32)">
            <summary>
            DisconnectUnloadedObject(int connectionId)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceConnectivityCardView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="F:YourPhone.Devices.Managed.Views.DeviceStatusIndicatorsView.DeviceStatusIndicatorViewModelProperty">
            <summary>
            The Dependency property backing the ViewModel property
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusIndicatorsView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusIndicatorsView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusIndicatorsView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusTitleBarView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusTitleBarView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceStatusTitleBarView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="F:YourPhone.Devices.Managed.Views.DeviceView.ViewModelProperty">
            <summary>
            The Dependency property backing the ViewModel property
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceView.UnloadObject(Microsoft.UI.Xaml.DependencyObject)">
            <summary>
            UnloadObject(DependencyObject)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceView.DisconnectUnloadedObject(System.Int32)">
            <summary>
            DisconnectUnloadedObject(int connectionId)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DeviceView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DoNotDisturbFailureDialog.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DoNotDisturbFailureDialog.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.DoNotDisturbFailureDialog.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="F:YourPhone.Devices.Managed.Views.LiteDeviceView.ViewModelProperty">
            <summary>
            The Dependency property backing the ViewModel property
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.LiteDeviceView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.LiteDeviceView.UnloadObject(Microsoft.UI.Xaml.DependencyObject)">
            <summary>
            UnloadObject(DependencyObject)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.LiteDeviceView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.LiteDeviceView.DisconnectUnloadedObject(System.Int32)">
            <summary>
            DisconnectUnloadedObject(int connectionId)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.LiteDeviceView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.TutorialTip.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.TutorialTip.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Views.TutorialTip.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.Boolean">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.WidgetDeviceConnectivity">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.WidgetDeviceIndicators">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.WidgetDeviceStatus">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.String">
            <summary>
            Defines the source generated JSON serialization contract metadata for a given type.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.Default">
            <summary>
            The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
            </summary>
        </member>
        <member name="P:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.GeneratedSerializerOptions">
            <summary>
            The source-generated options associated with this context.
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.#ctor">
            <inheritdoc/>
        </member>
        <member name="M:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.#ctor(System.Text.Json.JsonSerializerOptions)">
            <inheritdoc/>
        </member>
        <member name="M:YourPhone.Devices.Managed.Widgets.WidgetDeviceStatusContext.GetTypeInfo(System.Type)">
            <inheritdoc/>
        </member>
        <member name="T:YourPhone.Devices.Managed.YourPhone_Devices_Managed_XamlTypeInfo.XamlMetaDataProvider">
            <summary>
            Main class for providing metadata for the app or library
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.YourPhone_Devices_Managed_XamlTypeInfo.XamlMetaDataProvider.GetXamlType(System.Type)">
            <summary>
            GetXamlType(Type)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.YourPhone_Devices_Managed_XamlTypeInfo.XamlMetaDataProvider.GetXamlType(System.String)">
            <summary>
            GetXamlType(String)
            </summary>
        </member>
        <member name="M:YourPhone.Devices.Managed.YourPhone_Devices_Managed_XamlTypeInfo.XamlMetaDataProvider.GetXmlnsDefinitions">
            <summary>
            GetXmlnsDefinitions()
            </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.LUID">
            <summary>The LUID structure is an opaque structure that specifies an identifier that is guaranteed to be unique on the local machine. For more information, see the reference page for LUID in the Microsoft Windows SDK documentation.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ntdef/ns-ntdef-luid">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </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="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.Security.Cryptography.NCryptKeyName">
            <summary>Used to contain information about a CNG key.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/ns-ncrypt-ncryptkeyname">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Security.Cryptography.NCryptKeyName.pszName">
            <summary>A pointer to a null-terminated Unicode string that contains the name of the key.</summary>
        </member>
        <member name="F:Windows.Win32.Security.Cryptography.NCryptKeyName.pszAlgid">
            <summary>A pointer to a null-terminated Unicode string that contains the identifier of the cryptographic algorithm that the key was created with. This can be one of the standard <a href="https://docs.microsoft.com/windows/desktop/SecCNG/cng-algorithm-identifiers">CNG Algorithm Identifiers</a> or the identifier for another registered algorithm.</summary>
        </member>
        <member name="F:Windows.Win32.Security.Cryptography.NCryptKeyName.dwLegacyKeySpec">
            <summary></summary>
        </member>
        <member name="F:Windows.Win32.Security.Cryptography.NCryptKeyName.dwFlags">
            <summary>
            <para>A set of flags that provide more information about the key. This can be zero or the following value. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/ns-ncrypt-ncryptkeyname#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="T:Windows.Win32.Security.LUID_AND_ATTRIBUTES">
            <summary>Represents a locally unique identifier (LUID) and its attributes.</summary>
            <remarks>An <b>LUID_AND_ATTRIBUTES</b> structure can represent an LUID whose attributes change frequently, such as when the LUID is used to represent privileges in the <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-privilege_set">PRIVILEGE_SET</a> structure. Privileges are represented by LUIDs and have attributes indicating whether they are currently enabled or disabled.</remarks>
        </member>
        <member name="F:Windows.Win32.Security.LUID_AND_ATTRIBUTES.Luid">
            <summary>Specifies an <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-luid">LUID</a> value.</summary>
        </member>
        <member name="F:Windows.Win32.Security.LUID_AND_ATTRIBUTES.Attributes">
            <summary>Specifies attributes of the LUID. This value contains up to 32 one-bit flags. Its meaning is dependent on the definition and use of the LUID.</summary>
        </member>
        <member name="T:Windows.Win32.Security.TOKEN_PRIVILEGES">
            <summary>Contains information about a set of privileges for an access token.</summary>
            <remarks>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winnt/ns-winnt-token_privileges">Learn more about this API from docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="F:Windows.Win32.Security.TOKEN_PRIVILEGES.PrivilegeCount">
            <summary>This must be set to the number of entries in the <b>Privileges</b> array.</summary>
        </member>
        <member name="F:Windows.Win32.Security.TOKEN_PRIVILEGES.Privileges">
            <summary>
            <para>Specifies an array of <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-luid_and_attributes">LUID_AND_ATTRIBUTES</a> structures. Each structure contains the <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-luid">LUID</a> and attributes of a privilege. To get the name of the privilege associated with a  <b>LUID</b>, call the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-lookupprivilegenamea">LookupPrivilegeName</a> function, passing the address of the <b>LUID</b> as the value of the <i>lpLuid</i> parameter. <div class="alert"><b>Important</b>  The constant<b> ANYSIZE_ARRAY</b> is defined as 1 in the public header Winnt.h. To create this array with more than one element, you must allocate sufficient memory for the structure to take into account additional elements.</div> <div> </div></para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winnt/ns-winnt-token_privileges#members">Read more on docs.microsoft.com</see>.</para>
            </summary>
        </member>
        <member name="M:Windows.Win32.Security.TOKEN_PRIVILEGES.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.NCryptFreeObjectSafeHandle">
            <summary>
            Represents a Win32 handle that can be closed with <see cref="M:Windows.Win32.PInvoke.NCryptFreeObject(Windows.Win32.Security.Cryptography.NCRYPT_HANDLE)"/>.
            </summary>
        </member>
        <member name="T:Windows.Win32.PInvoke">
            <content>
            Contains extern methods from "ADVAPI32.dll".
            </content>
            <content>
            Contains extern methods from "KERNEL32.dll".
            </content>
            <content>
            Contains extern methods from "ncrypt.dll".
            </content>
            <content>
            Contains extern methods from "POWRPROF.dll".
            </content>
            <content>
            Contains extern methods from "USER32.dll".
            </content>
        </member>
        <member name="M:Windows.Win32.PInvoke.OpenProcessToken(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Security.TOKEN_ACCESS_MASK,Microsoft.Win32.SafeHandles.SafeFileHandle@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.OpenProcessToken(Windows.Win32.Foundation.HANDLE,Windows.Win32.Security.TOKEN_ACCESS_MASK,Windows.Win32.Foundation.HANDLE*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.OpenProcessToken(Windows.Win32.Foundation.HANDLE,Windows.Win32.Security.TOKEN_ACCESS_MASK,Windows.Win32.Foundation.HANDLE*)">
            <summary>Opens the access token associated with a process.</summary>
            <param name="ProcessHandle">A handle to the process whose access token is opened. The process must have the PROCESS_QUERY_LIMITED_INFORMATION access permission. See [Process Security and Access Rights](/windows/win32/procthread/process-security-and-access-rights) for more info.</param>
            <param name="DesiredAccess">
            <para>Specifies an <a href="https://docs.microsoft.com/windows/desktop/SecGloss/a-gly">access mask</a> that specifies the requested types of access to the access token. These requested access types are compared with the <a href="https://docs.microsoft.com/windows/desktop/SecGloss/d-gly">discretionary access control list</a> (DACL) of the token to determine which accesses are granted or denied.</para>
            <para>For a list of access rights for access tokens, see <a href="https://docs.microsoft.com/windows/desktop/SecAuthZ/access-rights-for-access-token-objects">Access Rights for Access-Token Objects</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocesstoken#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="TokenHandle">A pointer to a handle that identifies the newly opened access token when the function returns.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>To get a handle to an elevated process from within a non-elevated process, both processes must be started from the same account. If the process being checked was started by a different account, the checking process needs to have the SE_DEBUG_NAME privilege enabled. See [Privilege Constants (Authorization)](/windows/win32/secauthz/privilege-constants) for more info. To close the access token handle returned through the <i>TokenHandle</i> parameter, call <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-closehandle">CloseHandle</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocesstoken#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.AdjustTokenPrivileges(System.Runtime.InteropServices.SafeHandle,Windows.Win32.Foundation.BOOL,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32*)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.AdjustTokenPrivileges(Windows.Win32.Foundation.HANDLE,Windows.Win32.Foundation.BOOL,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.AdjustTokenPrivileges(Windows.Win32.Foundation.HANDLE,Windows.Win32.Foundation.BOOL,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32,Windows.Win32.Security.TOKEN_PRIVILEGES*,System.UInt32*)">
            <summary>Enables or disables privileges in the specified access token. Enabling or disabling privileges in an access token requires TOKEN_ADJUST_PRIVILEGES access.</summary>
            <param name="TokenHandle">A handle to the access token that contains the privileges to be modified. The handle must have TOKEN_ADJUST_PRIVILEGES access to the token. If the <i>PreviousState</i> parameter is not <b>NULL</b>, the handle must also have TOKEN_QUERY access.</param>
            <param name="DisableAllPrivileges">Specifies whether the function disables all of the token's privileges. If this value is <b>TRUE</b>, the function disables all privileges and ignores the <i>NewState</i> parameter. If it is <b>FALSE</b>, the function modifies privileges based on the information pointed to by the <i>NewState</i> parameter.</param>
            <param name="NewState">
            <para>A pointer to a <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-token_privileges">TOKEN_PRIVILEGES</a> structure that specifies an array of privileges and their attributes. If the <i>DisableAllPrivileges</i> parameter is <b>FALSE</b>, the  <b>AdjustTokenPrivileges</b>  function enables, disables, or removes these privileges for the token. The following table describes the action taken by the <b>AdjustTokenPrivileges</b> function, based on the privilege attribute. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/securitybaseapi/nf-securitybaseapi-adjusttokenprivileges#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="BufferLength">Specifies the size, in bytes, of the buffer pointed to by the <i>PreviousState</i> parameter. This parameter can be zero if the <i>PreviousState</i> parameter is <b>NULL</b>.</param>
            <param name="PreviousState">
            <para>A pointer to a buffer that the function fills with a <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-token_privileges">TOKEN_PRIVILEGES</a> structure that contains the previous state of any privileges that the function modifies.  That is, if a privilege has been modified by this function, the privilege and its previous state are contained in the <b>TOKEN_PRIVILEGES</b> structure referenced by <i>PreviousState</i>. If the <b>PrivilegeCount</b> member of <b>TOKEN_PRIVILEGES</b> is zero, then no privileges have been changed by this function. This parameter can be <b>NULL</b>.</para>
            <para>If you specify a buffer that is too small to receive the complete list of modified privileges, the function fails and does not adjust any privileges. In this case, the function sets the variable pointed to by the <i>ReturnLength</i> parameter to the number of bytes required to hold the complete list of modified privileges.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/securitybaseapi/nf-securitybaseapi-adjusttokenprivileges#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="ReturnLength">A pointer to a variable that receives the required size, in bytes, of the buffer pointed to by the <i>PreviousState</i> parameter. This parameter can be <b>NULL</b> if <i>PreviousState</i> is <b>NULL</b>.</param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. To determine whether the function adjusted all of the specified privileges, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>, which returns one of the following values when the function succeeds: </para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>The <b>AdjustTokenPrivileges</b> function cannot add new privileges to the access token. It can only enable or disable the token's existing privileges. To determine the token's privileges, call the <a href="https://docs.microsoft.com/windows/desktop/api/securitybaseapi/nf-securitybaseapi-gettokeninformation">GetTokenInformation</a> function. The <i>NewState</i> parameter can specify privileges that the token does not have, without causing the function to fail. In this case, the function adjusts the privileges that the token does have and ignores the other privileges so that the function succeeds. Call the <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a> function to determine whether the function adjusted all of the specified privileges. The <i>PreviousState</i> parameter indicates the privileges that were adjusted. The <i>PreviousState</i> parameter retrieves a <a href="https://docs.microsoft.com/windows/desktop/api/winnt/ns-winnt-token_privileges">TOKEN_PRIVILEGES</a> structure that contains the original state of the adjusted privileges. To restore the original state, pass the <i>PreviousState</i> pointer as the <i>NewState</i> parameter in a subsequent call to the <b>AdjustTokenPrivileges</b> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/securitybaseapi/nf-securitybaseapi-adjusttokenprivileges#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.LookupPrivilegeValue(System.String,System.String,Windows.Win32.Foundation.LUID@)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.LookupPrivilegeValue(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.LUID*)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.LookupPrivilegeValue(Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Foundation.LUID*)">
            <summary>Retrieves the locally unique identifier (LUID) used on a specified system to locally represent the specified privilege name. (Unicode)</summary>
            <param name="lpSystemName">A pointer to a null-terminated string that specifies the name of the system on which the privilege name is retrieved. If a null string is specified, the function attempts to find the privilege name on the local system.</param>
            <param name="lpName">A pointer to a null-terminated string that specifies the name of the privilege, as defined in the Winnt.h header file. For example, this parameter could specify the constant, SE_SECURITY_NAME, or its corresponding string, "SeSecurityPrivilege".</param>
            <param name="lpLuid">A pointer to a variable that receives the LUID by which the privilege is known on the system specified by the <i>lpSystemName</i> parameter.</param>
            <returns>
            <para>If the function succeeds, the function returns nonzero.</para>
            <para>If the function fails, it returns zero. To get extended error information, call <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>The <b>LookupPrivilegeValue</b> function supports only the privileges specified in the Defined Privileges section of Winnt.h. For a list of values, see <a href="https://docs.microsoft.com/windows/desktop/SecAuthZ/privilege-constants">Privilege Constants</a>.</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.GetCurrentProcess_SafeHandle">
            <inheritdoc cref="M:Windows.Win32.PInvoke.GetCurrentProcess"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.GetCurrentProcess">
            <summary>Retrieves a pseudo handle for the current process.</summary>
            <returns>The return value is a pseudo handle to the current process.</returns>
            <remarks>
            <para>A pseudo handle is a special constant, currently (<b>HANDLE</b>)-1, that is interpreted as the current process handle. For compatibility with future operating systems, it is best to call <b>GetCurrentProcess</b> instead of hard-coding this constant value. The calling process can use a pseudo handle to specify its own process whenever a process handle is required. Pseudo handles are not inherited by child processes. This handle has the <b>PROCESS_ALL_ACCESS</b> access right to the process object. For more information, see <a href="https://docs.microsoft.com/windows/desktop/ProcThread/process-security-and-access-rights">Process Security and Access Rights</a>. <b>Windows Server 2003 and Windows XP:  </b>This handle has the maximum access allowed by the security descriptor of the process to the primary token of the process. A process can create a "real" handle to itself that is valid in the context of other processes, or that can be inherited by other processes, by specifying the pseudo handle as the source handle in a call to the <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-duplicatehandle">DuplicateHandle</a> function. A process can also use the <a href="https://docs.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-openprocess">OpenProcess</a> function to open a real handle to itself. The pseudo handle need not be closed when it is no longer needed. Calling the <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-closehandle">CloseHandle</a> function with a pseudo handle has no effect. If the pseudo handle is duplicated by <a href="https://docs.microsoft.com/windows/desktop/api/handleapi/nf-handleapi-duplicatehandle">DuplicateHandle</a>, the duplicate handle must be closed.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptFreeObject(Windows.Win32.Security.Cryptography.NCRYPT_HANDLE)">
            <summary>Frees a CNG key storage object.</summary>
            <param name="hObject">The handle of the object to free. This can be either a provider handle (<b>NCRYPT_PROV_HANDLE</b>) or a key handle (<b>NCRYPT_KEY_HANDLE</b>).</param>
            <returns>
            <para>Returns a status code that indicates the success or failure of the function.</para>
            <para>Possible return codes include, but are not limited to, the following.</para>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>A service must not call this function from its <a href="https://docs.microsoft.com/windows/win32/api/winsvc/nf-winsvc-startservicea">StartService Function</a>. If a service calls this function from its StartService function, a deadlock can occur, and the service may stop responding.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptOpenStorageProvider(Windows.Win32.NCryptFreeObjectSafeHandle@,System.String,System.UInt32)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.NCryptOpenStorageProvider(Windows.Win32.Security.Cryptography.NCRYPT_PROV_HANDLE*,Windows.Win32.Foundation.PCWSTR,System.UInt32)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptOpenStorageProvider(Windows.Win32.Security.Cryptography.NCRYPT_PROV_HANDLE*,Windows.Win32.Foundation.PCWSTR,System.UInt32)">
            <summary>Loads and initializes a CNG key storage provider.</summary>
            <param name="phProvider">A pointer to a <b>NCRYPT_PROV_HANDLE</b> variable that receives the provider handle. When you have finished using this handle, release it by passing it to the <a href="https://docs.microsoft.com/windows/desktop/api/ncrypt/nf-ncrypt-ncryptfreeobject">NCryptFreeObject</a> function.</param>
            <param name="pszProviderName">
            <para>A pointer to a null-terminated Unicode string that identifies the key storage provider to load. This is the registered alias of the key storage provider. This parameter is optional and can be <b>NULL</b>. If this parameter is <b>NULL</b>, the default key storage provider is loaded. The following values identify the built-in key storage providers. </para>
            <para>This doc was truncated.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/nf-ncrypt-ncryptopenstorageprovider#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwFlags">Flags that modify the behavior of the function. No flags are defined for this function.</param>
            <returns>
            <para>Returns a status code that indicates the success or failure of the function.</para>
            <para>Possible return codes include, but are not limited to, the following.</para>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>In the case that an error condition is returned, the provider will have been unloaded from memory. Functions within the provider must not be called after a failure error is returned. A service must not call this function from its <a href="https://docs.microsoft.com/windows/win32/api/winsvc/nf-winsvc-startservicea">StartService Function</a>. If a service calls this function from its StartService function, a deadlock can occur, and the service may stop responding.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/nf-ncrypt-ncryptopenstorageprovider#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptEnumKeys(System.Runtime.InteropServices.SafeHandle,System.String,Windows.Win32.Security.Cryptography.NCryptKeyName*@,System.Void*@,Windows.Win32.Security.Cryptography.NCRYPT_FLAGS)">
            <inheritdoc cref="M:Windows.Win32.PInvoke.NCryptEnumKeys(Windows.Win32.Security.Cryptography.NCRYPT_PROV_HANDLE,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Security.Cryptography.NCryptKeyName**,System.Void**,Windows.Win32.Security.Cryptography.NCRYPT_FLAGS)"/>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptEnumKeys(Windows.Win32.Security.Cryptography.NCRYPT_PROV_HANDLE,Windows.Win32.Foundation.PCWSTR,Windows.Win32.Security.Cryptography.NCryptKeyName**,System.Void**,Windows.Win32.Security.Cryptography.NCRYPT_FLAGS)">
            <summary>Obtains the names of the keys that are stored by the provider.</summary>
            <param name="hProvider">The handle of the key storage provider to enumerate the keys for. This handle is obtained with the <a href="https://docs.microsoft.com/windows/desktop/api/ncrypt/nf-ncrypt-ncryptopenstorageprovider">NCryptOpenStorageProvider</a> function.</param>
            <param name="pszScope">This parameter is not currently used and must be <b>NULL</b>.</param>
            <param name="ppKeyName">The address of a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/ncrypt/ns-ncrypt-ncryptkeyname">NCryptKeyName</a> structure that receives the name of the retrieved key. When the application has finished using this memory, free it by calling the <a href="https://docs.microsoft.com/windows/desktop/api/ncrypt/nf-ncrypt-ncryptfreebuffer">NCryptFreeBuffer</a> function.</param>
            <param name="ppEnumState">
            <para>The address of a <b>VOID</b> pointer that receives enumeration state information that is used in subsequent calls to this function. This information only has meaning to the key storage provider and is opaque to the caller. The key storage provider uses this information to determine which item is next in the enumeration. If the variable pointed to by this parameter contains <b>NULL</b>, the enumeration is started from the beginning. When this memory is no longer needed, it must be freed by passing this pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/ncrypt/nf-ncrypt-ncryptfreebuffer">NCryptFreeBuffer</a> function.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/nf-ncrypt-ncryptenumkeys#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="dwFlags"></param>
            <returns>
            <para>Returns a status code that indicates the success or failure of the function.</para>
            <para>Possible return codes include, but are not limited to, the following.</para>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>
            <para>This function retrieves only one item each time it is called. The state of the enumeration is stored in the variable pointed to by the <i>ppEnumState</i> parameter, so this must be preserved between calls to this function. When the last key stored by the provider has been retrieved, this function will return <b>NTE_NO_MORE_ITEMS</b> the next time it is called. To start the enumeration over, set the variable pointed to by the <i>ppEnumState</i> parameter to <b>NULL</b>, free the memory pointed to by the <i>ppKeyName</i> parameter, if it is not <b>NULL</b>, and call this function again. A service must not call this function from its <a href="https://docs.microsoft.com/windows/win32/api/winsvc/nf-winsvc-startservicea">StartService Function</a>. If a service calls this function from its StartService function, a deadlock can occur, and the service may stop responding.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/ncrypt/nf-ncrypt-ncryptenumkeys#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.NCryptFreeBuffer(System.Void*)">
            <summary>Releases a block of memory allocated by a CNG key storage provider.</summary>
            <param name="pvInput">The address of the memory to be released.</param>
            <returns>
            <para>Returns a status code that indicates the success or failure of the function.</para>
            <para>Possible return codes include, but are not limited to, the following.</para>
            <para></para>
            <para>This doc was truncated.</para>
            </returns>
            <remarks>A service must not call this function from its <a href="https://docs.microsoft.com/windows/win32/api/winsvc/nf-winsvc-startservicea">StartService Function</a>. If a service calls this function from its StartService function, a deadlock can occur, and the service may stop responding.</remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.SetSuspendState(Windows.Win32.Foundation.BOOLEAN,Windows.Win32.Foundation.BOOLEAN,Windows.Win32.Foundation.BOOLEAN)">
            <summary>Suspends the system by shutting power down. Depending on the Hibernate parameter, the system either enters a suspend (sleep) state or hibernation (S4).</summary>
            <param name="bHibernate">
            <para>If this parameter is <b>TRUE</b>, the system hibernates. If the parameter is <b>FALSE</b>, the system is suspended.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/powrprof/nf-powrprof-setsuspendstate#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <param name="bForce">This parameter has no effect.</param>
            <param name="bWakeupEventsDisabled">
            <para>If this parameter is <b>TRUE</b>, the system disables all wake events. If the parameter is <b>FALSE</b>, any system wake events remain enabled.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/powrprof/nf-powrprof-setsuspendstate#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 <a href="https://docs.microsoft.com/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror">GetLastError</a>.</para>
            </returns>
            <remarks>
            <para>The calling process must have the <b>SE_SHUTDOWN_NAME</b> privilege. To enable the <b>SE_SHUTDOWN_NAME</b> privilege, use the <a href="https://docs.microsoft.com/windows/desktop/api/securitybaseapi/nf-securitybaseapi-adjusttokenprivileges">AdjustTokenPrivileges</a> function. For more information, see <a href="https://docs.microsoft.com/windows/desktop/SecBP/changing-privileges-in-a-token">Changing Privileges in a Token</a>. An application may use <b>SetSuspendState</b> to transition the system from the working state to the standby (sleep), or optionally, hibernate (S4) state. This function is similar to the <a href="https://docs.microsoft.com/windows/desktop/api/winbase/nf-winbase-setsystempowerstate">SetSystemPowerState</a> function. For more information on using PowrProf.h, see <a href="https://docs.microsoft.com/windows/desktop/Power/power-schemes">Power Schemes</a>. For information about events that can wake the system, see <a href="https://docs.microsoft.com/windows/desktop/Power/system-wake-up-events">System Wake-up Events</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/powrprof/nf-powrprof-setsuspendstate#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.LockWorkStation">
            <summary>Locks the workstation's display.</summary>
            <returns>
            <para>If the function succeeds, the return value is nonzero. Because the function executes asynchronously, a nonzero return value indicates that the operation has been initiated. It does not indicate whether the workstation has been successfully locked. 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>LockWorkStation</b> function is callable only by processes running on the interactive desktop. In addition, the user must be logged on, and the workstation cannot already be locked. Common reasons the workstation might not be locked even if the function succeeds include the following: no user is logged on, the workstation is already locked, the process is not running on the interactive desktop, or the request is denied by the Graphical Identification and Authentication (GINA) DLL. This function has the same result as pressing Ctrl+Alt+Del and clicking <b>Lock</b>. To unlock the workstation, the user must log in. There is no function you can call to determine whether the workstation is locked. To receive a notification when the user locks the workstation or logs in, use the <a href="https://docs.microsoft.com/windows/desktop/api/wtsapi32/nf-wtsapi32-wtsregistersessionnotification">WTSRegisterSessionNotification</a> function to receive <a href="https://docs.microsoft.com/windows/desktop/TermServ/wm-wtssession-change">WM_WTSSESSION_CHANGE</a> messages. You can use session notifications to track the desktop state so you know whether it is possible to interact with the user.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-lockworkstation#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
        <member name="M:Windows.Win32.PInvoke.ExitWindowsEx(Windows.Win32.System.Shutdown.EXIT_WINDOWS_FLAGS,Windows.Win32.System.Shutdown.SHUTDOWN_REASON)">
            <summary>Logs off the interactive user, shuts down the system, or shuts down and restarts the system.</summary>
            <param name="uFlags"></param>
            <param name="dwReason">
            <para>The reason for initiating the shutdown. This parameter must be one of the <a href="https://docs.microsoft.com/windows/desktop/Shutdown/system-shutdown-reason-codes">system shutdown reason codes</a>. If this parameter is zero, the SHTDN_REASON_FLAG_PLANNED reason code  will not be set and therefore the default action is an undefined shutdown that is logged as "No title for this reason could be found". By default, it is also an unplanned shutdown. Depending on how the system is configured, an unplanned shutdown triggers the creation of a file that contains the system state information, which can delay shutdown. Therefore, do not use zero for this parameter.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-exitwindowsex#parameters">Read more on docs.microsoft.com</see>.</para>
            </param>
            <returns>
            <para>If the function succeeds, the return value is nonzero. Because the function executes asynchronously, a nonzero return value indicates that the shutdown has been initiated. It does not indicate whether the shutdown will succeed. It is possible that the system, the user, or another application will abort the shutdown. 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>ExitWindowsEx</b> function returns as soon as it has initiated the shutdown process. The shutdown or logoff then proceeds asynchronously. The function is designed to stop all processes in the caller's logon session. Therefore, if you are not the interactive user, the function can succeed without actually shutting down the computer. If you are not the interactive user, use the <a href="https://docs.microsoft.com/windows/desktop/api/winreg/nf-winreg-initiatesystemshutdowna">InitiateSystemShutdown</a> or <a href="https://docs.microsoft.com/windows/desktop/api/winreg/nf-winreg-initiatesystemshutdownexa">InitiateSystemShutdownEx</a> function. A non-zero return value does not mean the logoff was or will be successful. The shutdown is an asynchronous process, and it can occur long  after the API call has returned, or not  at all. Even if the timeout value is zero,  the shutdown can still be aborted by applications, services, or even the system. The non-zero return value indicates that the validation of the rights and parameters was  successful and that the system accepted the shutdown request. When this function is called, the caller must specify whether or not applications with unsaved changes should be forcibly closed.  If the caller chooses not to force these applications to close and an application with unsaved changes is running on the console session, the shutdown will remain in progress until the user logged into the console session aborts the shutdown, saves changes, closes the application, or forces the application to close.  During this period, the shutdown may not be aborted except by the console user, and another shutdown may not be initiated. Calling this function with the value of the <i>uFlags</i> parameter set to EWX_FORCE avoids this situation. Remember that doing this  may result in loss of data. To set a shutdown priority for an application relative to other applications in the system, use the <a href="https://docs.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-setprocessshutdownparameters">SetProcessShutdownParameters</a> function. During a shutdown or log-off operation, running applications are allowed a specific amount of time to respond to the shutdown request. If this time expires before all applications have stopped, the system displays a user interface that allows the user to forcibly shut down the system or to cancel the shutdown request. If the EWX_FORCE value is specified, the system forces running applications to stop when the time expires. If the EWX_FORCEIFHUNG value is specified, the system forces hung applications to close and does not display the dialog box. Console processes receive a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT, as the situation warrants. A console process routes these messages to its <a href="https://docs.microsoft.com/windows/console/handlerroutine">HandlerRoutine</a> function. <b>ExitWindowsEx</b> sends these notification messages asynchronously; thus, an application cannot assume that the console notification messages have been handled when a call to <b>ExitWindowsEx</b> returns. To shut down or restart the system, the calling process must use the <a href="https://docs.microsoft.com/windows/desktop/api/securitybaseapi/nf-securitybaseapi-adjusttokenprivileges">AdjustTokenPrivileges</a> function to enable the SE_SHUTDOWN_NAME privilege. For more information, see <a href="https://docs.microsoft.com/windows/desktop/SecBP/running-with-special-privileges">Running with Special Privileges</a>.</para>
            <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-exitwindowsex#">Read more on docs.microsoft.com</see>.</para>
            </remarks>
        </member>
    </members>
</doc>
