| File: System\Private\Windows\Ole\IOleServices.cs | Web Access |
| Project: src\winforms\src\System.Private.Windows.Core\src\System.Private.Windows.Core.csproj (System.Private.Windows.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Windows.Win32.System.Com; namespace System.Private.Windows.Ole; /// <summary> /// Platform specific OLE services. /// </summary> internal unsafe interface IOleServices { /// <summary> /// This method is called to validate that OLE is initialized and /// that the current thread is a single-threaded apartment (STA). /// </summary> /// <exception cref="ThreadStateException">Current thread is not in the right state for OLE.</exception> #if NET static abstract #endif void EnsureThreadState(); /// <summary> /// Called after unsuccessfully performing clipboard <see cref="TYMED.TYMED_HGLOBAL"/> serialization. /// </summary> /// <remarks> /// <para> /// <paramref name="pformatetc"/> and <paramref name="pmedium"/> are checked for validity before this call. /// </para> /// </remarks> /// <param name="format">The data format that is being serialized.</param> /// <inheritdoc cref="IDataObject.GetDataHere(FORMATETC*, STGMEDIUM*)"/> #if NET static abstract #endif HRESULT GetDataHere(string format, object data, FORMATETC* pformatetc, STGMEDIUM* pmedium); /// <summary> /// If the <typeparamref name="T"/> is a the requested format this method will attempt to extract it /// from the <paramref name="dataObject"/>. /// </summary> /// <param name="format">The data format that is being requested.</param> /// <remarks> /// <para> /// This is intended for platform specific logic, notably for bitmaps and metafiles. /// </para> /// </remarks> /// <returns><see langword="true"/> if a bitmap was extracted.</returns> #if NET static abstract #endif bool TryGetObjectFromDataObject<T>( IDataObject* dataObject, string format, [NotNullWhen(true)] out T data); /// <summary> /// Returns true if the given <paramref name="type"/> is a valid type for the given <paramref name="format"/>. /// </summary> /// <remarks> /// <para> /// Basic predefined formats that map to <see langword="string"/> are checked before this call. /// </para> /// </remarks> #if NET static abstract #endif bool IsValidTypeForFormat(Type type, string format); /// <summary> /// Allows the given <typeparamref name="T"/> to pass pre-validation without a resolver. /// </summary> #if NET static abstract #endif bool AllowTypeWithoutResolver<T>(); /// <summary> /// Allows custom validation or adapting of <see cref="DataStore{TOleServices}"/> data and formats. /// </summary> /// <param name="format"> /// The format to be checked against <paramref name="data"/>, can be modified to another format name if /// <paramref name="autoConvert"/> is true. /// </param> /// <param name="data">The data to be checked against <paramref name="data"/>.</param> #if NET static abstract #endif void ValidateDataStoreData(ref string format, bool autoConvert, object? data); /// <summary> /// Creates an <see cref="IComVisibleDataObject"/> instance. /// </summary> #if NET static abstract #endif IComVisibleDataObject CreateDataObject(); /// <inheritdoc cref="PInvokeCore.OleGetClipboard(IDataObject**)"/> #if NET static abstract #endif HRESULT OleGetClipboard(IDataObject** dataObject); /// <inheritdoc cref="PInvokeCore.OleSetClipboard(IDataObject*)"/> #if NET static abstract #endif HRESULT OleSetClipboard(IDataObject* dataObject); /// <inheritdoc cref="PInvokeCore.OleFlushClipboard"/> #if NET static abstract #endif HRESULT OleFlushClipboard(); }