Files
Xune/UIX.Skia/Microsoft/Iris/OS/NativeApi.cs
T

1044 lines
39 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.OS.NativeApi
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using Microsoft.Iris.CodeModel.Cpp;
using Microsoft.Iris.Drawing;
using Microsoft.Iris.Render;
using Microsoft.Iris.RenderAPI;
using Microsoft.Iris.RenderAPI.Drawing;
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
namespace Microsoft.Iris.OS
{
[SuppressUnmanagedCodeSecurity]
internal static unsafe class NativeApi
{
private const string s_stRenderDll = "UIXRender.dll";
private const string s_stSupportDll = "UIXsup.dll";
public const int DOWNLOAD_ERROR_GENERALFAILURE = -1;
public const int DOWNLOAD_ERROR_NONE = 0;
internal const uint WM_IME_STARTCOMPOSITION = 269;
internal const uint WM_IME_ENDCOMPOSITION = 270;
internal const uint FM_DEFERRED_IME_DISASSOCIATE_CONTEXT = 1032;
public const int HTTPDOWNLOAD_ERROR_INVALIDURI = 1;
public const int HTTPDOWNLOAD_ERROR_HOSTCONNECTIONFAILED = 2;
public static bool SUCCEEDED(uint hr) => (int)hr >= 0;
public static bool FAILED(uint hr) => (int)hr < 0;
[DllImport("UIXRender.dll")]
public static extern void SpInitializeTracing();
[DllImport("UIXRender.dll")]
public static extern void SpUninitializeTracing();
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpUpdateTraceSettings(
string debugTraceFile,
string writeLinePrefix,
bool sendOutputToDebugger,
bool showCategories,
bool timedWriteLines);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpLogTrace(string categoryName, string message, int indentLevel);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr SpDownloadGetBuffer(IntPtr handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDownloadClose(IntPtr handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpFileDownload(
string path,
NativeApi.DownloadCompleteHandler handler,
IntPtr context,
out IntPtr handle);
public static IntPtr DownloadGetBuffer(IntPtr handle)
{
IntPtr buffer = SpDownloadGetBuffer(handle);
return !(buffer == IntPtr.Zero) ? buffer : throw new OutOfMemoryException();
}
public static bool SpLoadBinaryResource(string moduleBaseName, string resourceName, bool allowLoadAsCode, out byte[] pBits)
{
pBits = null;
Assembly assembly = Assembly.GetExecutingAssembly();
System.IO.MemoryStream stream = new System.IO.MemoryStream();
using (var input = assembly.GetManifestResourceStream(resourceName.ToUpperInvariant()))
{
if (input == null) return false;
input.CopyTo(stream);
}
pBits = stream.GetBuffer();
return true;
}
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern bool SpLoadFontResource(string moduleBaseName, string resourceName);
[DllImport("UIXRender.dll")]
private static extern IntPtr SpMemAlloc(uint cb, bool zeroMemory);
[DllImport("UIXRender.dll")]
private static extern void SpMemFree(IntPtr pv);
public static IntPtr MemAlloc(uint cb, bool zeroMemory)
{
IntPtr num = SpMemAlloc(cb, zeroMemory);
return !(num == IntPtr.Zero) ? num : throw new OutOfMemoryException();
}
public static void MemFree(IntPtr pv) => SpMemFree(pv);
[DllImport("UIXRender.dll")]
public static extern void SpFreeDib(IntPtr hdib);
[DllImport("UIXRender.dll")]
public static extern int SpGetDpi();
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpLoadDll(string uri, out IntPtr moduleHandle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpFreeDll(IntPtr moduleHandle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpCreateDllLoadResultFactory(
IntPtr moduleHandle,
out IntPtr schemaFactory);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpCreateDllLoadResult(
IntPtr schemaFactory,
string qualifier,
out IntPtr loadResult);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpSendDllSchemaUnloadNotification(IntPtr moduleHandle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpSetSchemaID(IntPtr schema, ushort id);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryTypeCount(IntPtr schema, out uint typeCount);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEnumCount(IntPtr schema, out uint enumCount);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetTypeSchema(
IntPtr schema,
uint index,
out IntPtr type,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetEnumSchema(
IntPtr schema,
uint index,
out IntPtr enumType,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryTypeName(IntPtr typeSchema, out char* name);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpIsRuntimeImmutable(IntPtr typeSchema, out bool isRuntimeImmutable);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryBaseType(IntPtr typeSchema, out uint baseTypeID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetMarshalAs(IntPtr typeSchema, out uint interopEquivalent);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryConstructorCount(IntPtr typeSchema, out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetConstructorSchema(
IntPtr typeSchema,
uint index,
out IntPtr constructor,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyCount(IntPtr typeSchema, out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetPropertySchema(
IntPtr typeSchema,
uint index,
out IntPtr property,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryMethodCount(IntPtr typeSchema, out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetMethodSchema(
IntPtr typeSchema,
uint index,
out IntPtr method,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEventCount(IntPtr typeSchema, out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetEventSchema(
IntPtr typeSchema,
uint index,
out IntPtr eventObj,
out uint ID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpInvokeConstructor(
IntPtr typeSchema,
uint constructorID,
UIXVariant* parameters,
uint parameterCount,
out IntPtr nativeObject);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetPropertyValue(
IntPtr typeSchema,
IntPtr nativeObject,
uint propertyID,
out UIXVariant propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpSetPropertyValue(
IntPtr typeSchema,
IntPtr nativeObject,
uint propertyID,
UIXVariant* propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpInvokeMethod(
IntPtr typeSchema,
IntPtr nativeObject,
uint methodID,
UIXVariant* parameters,
uint parameterCount,
out UIXVariant returnValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpInvokeToString(
IntPtr typeSchema,
IntPtr nativeObject,
out IntPtr value);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryConstructorParameterCount(
IntPtr constructorSchema,
out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetConstructorParameterTypes(
IntPtr constructorSchema,
uint[] IDs,
uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyName(IntPtr propertySchema, out char* name);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyType(IntPtr propertySchema, out uint type);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyCanRead(IntPtr propertySchema, out bool canRead);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyCanWrite(IntPtr propertySchema, out bool canWrite);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyIsStatic(IntPtr propertySchema, out bool isStatic);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryPropertyNotifiesOnChange(
IntPtr propertySchema,
out bool notifiesOnChange);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryMethodName(IntPtr methodSchema, out char* name);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryMethodReturnType(IntPtr methodSchema, out uint type);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryMethodParameterCount(IntPtr methodSchema, out uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetMethodParameterTypes(
IntPtr methodSchema,
uint[] IDs,
uint count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryMethodIsStatic(IntPtr methodSchema, out bool isStatic);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEventName(IntPtr eventSchema, out char* name);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEventIsStatic(IntPtr eventSchema, out bool isStatic);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpAddRefExternalObject(IntPtr nativeObject);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpReleaseExternalObject(IntPtr nativeObject);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetTypeID(IntPtr nativeObject, out uint typeID);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryForMarshalAsInterface(
IntPtr nativeObject,
uint interfaceID,
out IntPtr interfaceImpl);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpSetStateCache(IntPtr nativeObject, ulong state);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpGetStateCache(IntPtr nativeObject, out ulong state);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListRegisterCallbacks(
IntPtr nativeList,
IUIXListCallbacks listener);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListUnregisterCallbacks(
IntPtr nativeList,
IUIXListCallbacks listener);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpUIXListAdd(
IntPtr nativeList,
UIXVariant* item,
out int count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListClear(IntPtr nativeList);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpUIXListIndexOf(
IntPtr nativeList,
UIXVariant* item,
out int index);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpUIXListInsert(
IntPtr nativeList,
int index,
UIXVariant* item);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpUIXListRemove(IntPtr nativeList, UIXVariant* item);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListRemoveAt(IntPtr nativeList, int index);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListGetItem(IntPtr nativeList, int index, out UIXVariant item);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpUIXListSetItem(
IntPtr nativeList,
int index,
UIXVariant* item);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListGetCount(IntPtr nativeList, out int count);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListMove(IntPtr nativeList, int oldIndex, int newIndex);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListIsItemAvailable(
IntPtr nativeList,
int index,
out bool isAvailable);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListFetchSlowData(IntPtr nativeList, int index);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListWantSlowDataRequests(
IntPtr nativeList,
out bool wantSlowDataRequests);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListNotifyVisualsCreated(IntPtr nativeList, int index);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpUIXListNotifyVisualsReleased(IntPtr nativeList, int index);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEnumName(IntPtr nativeObject, out char* name);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEnumIsFlags(IntPtr nativeObject, out bool isFlags);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpQueryEnumValueCount(IntPtr nativeObject, out uint valueCount);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpGetEnumNameValue(
IntPtr nativeObject,
uint index,
out char* name,
out int value);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpInvokeEnumToString(
IntPtr nativeObject,
int value,
out IntPtr result);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpDataBaseObjectGetTypeHandle(
IntPtr nativeQuery,
out ulong typeHandle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataBaseObjectGetProperty(
IntPtr nativeQuery,
string propertyName,
out UIXVariant propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpDataBaseObjectSetProperty(
IntPtr nativeQuery,
string propertyName,
UIXVariant* propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataBaseObjectSetInternalHandle(
IntPtr nativeQuery,
ulong frameworkQuery);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataBaseObjectGetInternalHandle(
IntPtr nativeQuery,
out ulong frameworkQuery);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataProviderConstructQuery(
IntPtr nativeFactory,
string providerName,
ulong queryTypeHandle,
ulong resultTypeHandle,
ulong queryHandle,
out IntPtr query);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQueryNotifyInitialized(IntPtr nativeQuery);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQueryRefresh(IntPtr nativeQuery);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQueryGetEnabledProperty(
IntPtr nativeQuery,
out bool propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQuerySetEnabledProperty(IntPtr nativeQuery, bool propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQueryGetStatusProperty(
IntPtr nativeQuery,
out DataProviderQueryStatus propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQuerySetStatusProperty(
IntPtr nativeQuery,
DataProviderQueryStatus propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataQueryGetResultProperty(
IntPtr nativeQuery,
out UIXVariant propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe uint SpDataQuerySetResultProperty(
IntPtr nativeQuery,
UIXVariant* propertyValue);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpDataProviderReportDataMapping(
IntPtr nativeCallback,
string providerName,
ulong typeHandle,
uint entryCount,
[MarshalAs(UnmanagedType.LPArray)] NativeApi.NativeDataMappingEntry[] entries);
public static uint SpRegisterNativeServicesCallbacks(IRawUIXServices rawServices)
{
Debug.Trace.WriteLine(Debug.TraceCategory.NativeCodeModel, "Attempted to call {0} with {1}='{2}'",
nameof(SpRegisterNativeServicesCallbacks), nameof(rawServices), rawServices);
return 0;
}
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpUnregisterNativeServicesCallbacks();
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpCallDeferredInvokeProc(IntPtr pfnCallback, IntPtr pvCallbackData);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpGetStringHandle(IntPtr nativeString, out ulong handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpConvertStringToManaged(IntPtr nativeString, out ulong handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern bool SpCreateNativeString(
ulong handle,
int length,
out IntPtr nativeString);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern unsafe void SpCopyString(string source, char* destintation, uint length);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpGetImageHandle(IntPtr nativeImage, out ulong handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern HRESULT SpConvertImageToManaged(
IntPtr nativeImage,
out ulong handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern HRESULT SpCreateNativeImage(
ulong handle,
string source,
out IntPtr nativeImage);
public static HRESULT SpCreateNotifyWindow(out IntPtr handle, NativeApi.NotifyWindowCallback callback)
{
ulong hresult = 0;
int intHresult = 0;
Vanara.PInvoke.Win32Error lastError;
string winTitle = "UIX Host Window";
Vanara.PInvoke.User32.SafeHWND uixHostWindow = null;
Vanara.PInvoke.HINSTANCE module;
Vanara.PInvoke.User32.WindowProc wndProc = (Vanara.PInvoke.HWND hwnd, uint uMsg, IntPtr wParam, IntPtr lParam) =>
{
if (uMsg == 0x3D && callback != null)
{
callback(NotificationType.GetObject, (int)(((uint)wParam.ToInt32()) & 0xffffffff), (int)(((uint)lParam.ToInt32()) & 0xffffffff));
}
else
{
Vanara.PInvoke.User32.DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return IntPtr.Zero;
};
var winClass = Vanara.PInvoke.User32.RegisterClassEx(new Vanara.PInvoke.User32.WNDCLASSEX
{
lpfnWndProc = wndProc,
cbSize = 0x50,
hInstance = Vanara.PInvoke.Kernel32.GetModuleHandle(),
lpszClassName = "UIX Host Window"
});
if (winClass == 0)
{
lastError = Vanara.PInvoke.Kernel32.GetLastError();
hresult = hresult & 0xffffffff;
}
else
{
hresult = 0;
}
handle = IntPtr.Zero;
if (-1 < (int)hresult)
{
module = Vanara.PInvoke.Kernel32.GetModuleHandle();
uixHostWindow =
Vanara.PInvoke.User32.CreateWindowEx(Vanara.PInvoke.User32.WindowStylesEx.WS_EX_CONTROLPARENT | Vanara.PInvoke.User32.WindowStylesEx.WS_EX_APPWINDOW,
"UIX Host Window", "", 0, -0x80000000, -0x80000000, -0x80000000,
-0x80000000, Vanara.PInvoke.HWND.NULL, IntPtr.Zero, module, IntPtr.Zero);
if (uixHostWindow.IsNull)
{
var err = Marshal.GetLastWin32Error();
lastError = Vanara.PInvoke.Kernel32.GetLastError();
//hresult = FUN_3109b944(lastError);
hresult = hresult & 0xffffffff;
}
else
{
hresult = 0;
}
intHresult = (int)hresult;
if (intHresult < 0) goto LAB_310bf9ed;
hresult = 0;
handle = uixHostWindow.DangerousGetHandle();
}
LAB_310bf9ed:
if (intHresult != 0)
{
if (uixHostWindow != null && !uixHostWindow.IsNull)
{
Vanara.PInvoke.User32.DestroyWindow(uixHostWindow);
uixHostWindow = null;
}
module = Vanara.PInvoke.Kernel32.GetModuleHandle();
Vanara.PInvoke.User32.UnregisterClass(winTitle, module);
}
return new HRESULT((int)hresult);
}
[DllImport("UIXRender.dll")]
public static extern void SpDestroyNotifyWindow();
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextBuildObject(
bool fRichTextMode,
Size sizeMaximumSurface,
[MarshalAs(UnmanagedType.Interface)] IRichTextCallbacks pCallbacks,
out Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern void SpRichTextDestroyObject(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern void SpRichTextDestroyGlyphRunInfo(IntPtr hGlyphRunInfo);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextForwardKeyCharacter(
Win32Api.HANDLE hRto,
uint message,
int character,
int scanCode,
int repeatCount,
uint modifierState,
ushort flags,
out bool handled);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextForwardKeyState(
Win32Api.HANDLE hRto,
uint message,
int virtualKey,
int scanCode,
int repeatCount,
uint modifierState,
ushort flags,
out bool handled);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextForwardMouseInput(
Win32Api.HANDLE hRto,
uint message,
uint modifierState,
int mouseButton,
int x,
int y,
int mouseWheelDelta,
out bool handled);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextForwardImeMessage(
Win32Api.HANDLE hRto,
uint message,
UIntPtr wParam,
UIntPtr lParam);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextGetNaturalBounds(
Win32Api.HANDLE hRto,
out int cWidth,
out int cHeight);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextGetSimpleContent(
Win32Api.HANDLE hRto,
StringBuilder textBuffer,
int cchBuffer);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextGetSimpleContentLength(
Win32Api.HANDLE hRto,
out int textLength);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextMeasure(
Win32Api.HANDLE hRto,
ref TextMeasureParams.MarshalledData measureParams,
NativeApi.ReportRunCallback rrcb,
IntPtr pvData);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextRasterize(
IntPtr hGlyphRunInfo,
int fOutlineMode,
Color clrText,
int fShadowMode,
out IntPtr phTextBitmap,
out IntPtr ppvBits,
out Size psizeBitmap);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetFocus(
Win32Api.HANDLE hRto,
bool gainingFocus);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetContent(
Win32Api.HANDLE hRto,
string pszContent);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetWordWrap(
Win32Api.HANDLE hRto,
bool fWordWrap);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetMaximumLength(
Win32Api.HANDLE hRto,
int maximumLength);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetDetectUrls(
Win32Api.HANDLE hRto,
bool detectUrls);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetOversampleMode(
Win32Api.HANDLE hRto,
bool fOversample);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextCut(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextCopy(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextPaste(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextDelete(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextCanUndo(Win32Api.HANDLE hRto, out bool canUndo);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextUndo(Win32Api.HANDLE hRto);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetReadOnly(Win32Api.HANDLE hRto, bool readOnly);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextSetScale(Win32Api.HANDLE hRto, float flScale);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextSetSelectionRange(
Win32Api.HANDLE hRto,
int selectionStart,
int selectionEnd);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern HRESULT SpRichTextOnTimerTick(Win32Api.HANDLE hRto, uint timerId);
[DllImport("UIXRender.dll")]
internal static extern bool SpSimpleTextIsAvailable();
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpSimpleTextBuildObject(
Size sizeMaximumSurface,
out Win32Api.HANDLE hSto);
[DllImport("UIXRender.dll")]
internal static extern void SpSimpleTextDestroyObject(Win32Api.HANDLE hSto);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern unsafe HRESULT SpSimpleTextMeasure(
Win32Api.HANDLE hSto,
string pszRef,
short wAlignment,
TextStyle.MarshalledData* textStyle,
Size sizeConstraint,
out IntPtr hGlyphRunInfo,
NativeApi.RasterizeRunPacket* pRun);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
internal static extern unsafe HRESULT SpSimpleTextMeasurePossible(
Win32Api.HANDLE hSto,
string pszRef,
TextStyle.MarshalledData* textStyle,
out bool fPossible);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextScroll(
Win32Api.HANDLE hRto,
int whichBar,
int scrollType);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextScrollToPosition(
Win32Api.HANDLE hRto,
int whichBar,
int whereTo);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRichTextSetScrollbars(
Win32Api.HANDLE hRto,
bool allowVertical,
bool allowHorizontal);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpRegisterImeCallbacks(
[MarshalAs(UnmanagedType.Interface)] IImeCallbacks pImeCallbacks,
out uint dwToken);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpUnregisterImeCallbacks(uint dwToken);
[DllImport("UIXRender.dll")]
internal static extern HRESULT SpPostDeferredImeMessage(
uint message,
UIntPtr wParam,
UIntPtr lParam);
[DllImport("UIXRender.dll")]
public static extern int SpExtractDroppedFileNames(
IntPtr punk,
NativeApi.ExtractDroppedFileNamesCallback callback);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteCreateXmlReader(
IntPtr buffer,
int length,
bool isFragment,
out IntPtr xmlReader);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpXmlLiteDeleteXmlReader(IntPtr xmlReader);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteRead(IntPtr xmlReader, out NativeXmlNodeType nodeType);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteMoveToFirstAttribute(IntPtr xmlReader);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteMoveToNextAttribute(IntPtr xmlReader);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern bool SpXmlLiteIsEmptyElement(IntPtr xmlReader);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetQualifiedName(
IntPtr xmlReader,
out IntPtr name,
out uint length);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetLocalName(
IntPtr xmlReader,
out IntPtr name,
out uint length);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetPrefix(
IntPtr xmlReader,
out IntPtr prefix,
out uint length);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetValue(
IntPtr xmlReader,
out IntPtr value,
out uint length);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetLinePosition(IntPtr xmlReader, out uint linePosition);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpXmlLiteGetLineNumber(IntPtr xmlReader, out uint lineNumber);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern HRESULT SpRegNotifyChangeKey(
IntPtr hkey,
string wszPath,
NativeApi.RegChangeCallback callback,
out IntPtr handle);
[DllImport("UIXRender.dll")]
public static extern HRESULT SpRegRevokeNotifyChangeKey(IntPtr handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpHttpStartup();
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern uint SpHttpDownload(
string url,
NativeApi.DownloadCompleteHandler handler,
IntPtr context,
out IntPtr handle);
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpHttpShutdown();
[DllImport("UIXRender.dll")]
public static extern void SpHttpFlushProxyCache();
[DllImport("UIXRender.dll", CharSet = CharSet.Unicode)]
public static extern void SpGetMouseCursorInfo(out int height, out int hotY);
public static string PtrToStringUni(IntPtr psz, int length) => length == 0 ? "" : Marshal.PtrToStringUni(psz, length);
[DllImport("user32.dll", SetLastError = true, EntryPoint = "CreateWindowExA")]
public static extern IntPtr CreateWindowExA(
ushort dwExStyle,
string lpClassName,
string lpWindowName,
ushort dwStyle,
int X,
int Y,
int nWidth,
int nHeight,
HWND hWndParent,
IntPtr hMenu,
IntPtr hInstance,
IntPtr lpParam);
public delegate void DownloadCompleteHandler(
IntPtr handle,
int error,
uint length,
IntPtr context);
[ComVisible(false)]
public struct NativeDataMappingEntry
{
[MarshalAs(UnmanagedType.LPWStr)]
public string Source;
[MarshalAs(UnmanagedType.LPWStr)]
public string Target;
[MarshalAs(UnmanagedType.LPWStr)]
public string PropertyName;
public ulong PropertyTypeHandle;
[MarshalAs(UnmanagedType.LPWStr)]
public string PropertyTypeName;
public ulong UnderlyingCollectionTypeHandle;
[MarshalAs(UnmanagedType.LPWStr)]
public string UnderlyingCollectionTypeName;
public UIXVariant DefaultValue;
}
[ComVisible(false)]
public struct IMAGE_DECODE_PARAMS
{
public const uint UIX_IMAGE_OPT_FLIPPABLE = 1;
public const uint UIX_IMAGE_OPT_ANTIALIAS_EDGES = 2;
public int maximumWidth;
public int maximumHeight;
public uint options;
public bool Flippable => ((int)options & 1) == 1;
public bool AntialiasEdges => ((int)options & 2) == 2;
}
[ComVisible(false)]
public struct UIX_RAW_IMAGE_INFO
{
public int width;
public int height;
public int stride;
public RawImageFormat format;
public IntPtr bits;
}
public enum NotificationType
{
GetObject,
}
public delegate IntPtr NotifyWindowCallback(
NativeApi.NotificationType notification,
int param1,
int param2);
[ComVisible(false)]
public struct RasterizeRunPacket
{
public Rectangle rcLayoutBounds;
public RectangleF rcfRenderBounds;
public int naturalX;
public int naturalY;
public int rasterizeX;
public int rasterizeY;
public byte AAConfig;
public Color clrText;
public Color clrBackground;
public int fontFaceUniqueId;
public Win32Api.LOGFONTW_STRUCT lf;
public Size sizeRasterizeRun;
public Size sizeNatural;
public int ascenderInset;
public int baselineInset;
public int nLineNumber;
public int dwEffects;
public NativeApi.UnderlineStyle usUnderlineStyle;
public Rectangle rcUnderlineBounds;
}
public enum UnderlineStyle
{
None,
Solid,
Thick,
Dotted,
Dash,
DashDot,
DashDotDot,
}
internal unsafe delegate HRESULT ReportRunCallback(
IntPtr hGlyphRunInfo,
NativeApi.RasterizeRunPacket* pRun,
IntPtr lpString,
uint nChars,
IntPtr pvData);
internal enum ScrollNotification
{
LineUp,
LineDown,
PageUp,
PageDown,
}
public delegate void ExtractDroppedFileNamesCallback(
uint totalFileCount,
uint currentIndex,
[MarshalAs(UnmanagedType.LPWStr)] string filename);
public delegate void RegChangeCallback();
}
}