mirror of
https://github.com/ZuneDev/Xune.git
synced 2026-07-27 13:13:10 -07:00
394 lines
14 KiB
C#
394 lines
14 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Microsoft.Iris.Render.Internal.Win32Api
|
|
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
|
|
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
using System.Text;
|
|
|
|
namespace Microsoft.Iris.Render.Internal
|
|
{
|
|
[SuppressUnmanagedCodeSecurity]
|
|
internal static class Win32Api
|
|
{
|
|
public const int IDC_ARROW = 32512;
|
|
public const int IDC_IBEAM = 32513;
|
|
public const int IDC_WAIT = 32514;
|
|
public const int IDC_CROSS = 32515;
|
|
public const int IDC_UPARROW = 32516;
|
|
public const int IDC_SIZENWSE = 32642;
|
|
public const int IDC_SIZENESW = 32643;
|
|
public const int IDC_SIZEWE = 32644;
|
|
public const int IDC_SIZENS = 32645;
|
|
public const int IDC_SIZEALL = 32646;
|
|
public const int IDC_NO = 32648;
|
|
public const int IDC_HAND = 32649;
|
|
public const int IDC_APPSTARTING = 32550;
|
|
public const int IDC_HELP = 32651;
|
|
public const int SM_CXSCREEN = 0;
|
|
public const int SM_CYSCREEN = 1;
|
|
public const int RT_RCDATA = 10;
|
|
public const uint EVENT_MODIFY_STATE = 2;
|
|
public const uint LOAD_LIBRARY_AS_DATAFILE = 2;
|
|
public const int REG_NOTIFY_CHANGE_NAME = 1;
|
|
public const int REG_NOTIFY_CHANGE_ATTRIBUTES = 2;
|
|
public const int REG_NOTIFY_CHANGE_LAST_SET = 4;
|
|
public const int REG_NOTIFY_CHANGE_SECURITY = 8;
|
|
public const int KEY_NOTIFY = 16;
|
|
public const int KEY_READ = 131097;
|
|
public const int REG_SZ = 1;
|
|
public const int REG_DWORD = 4;
|
|
public const uint STATUS_ABANDONED_WAIT_0 = 128;
|
|
public const uint WAIT_ABANDONED = 128;
|
|
public const uint WAIT_TIMEOUT = 258;
|
|
public const uint WAIT_OBJECT_0 = 0;
|
|
public const uint INFINITE = 4294967295;
|
|
public const uint ERROR_SUCCESS = 0;
|
|
public const uint ERROR_FILE_NOT_FOUND = 2;
|
|
public const uint ERROR_PATH_NOT_FOUND = 3;
|
|
public const uint ERROR_ACCESS_DENIED = 5;
|
|
public const uint ERROR_INVALID_HANDLE = 6;
|
|
public const uint ERROR_NOT_ENOUGH_MEMORY = 8;
|
|
public const uint ERROR_OUTOFMEMORY = 14;
|
|
public const uint ERROR_NOT_SUPPORTED = 50;
|
|
public const uint ERROR_INVALID_PARAMETER = 87;
|
|
public const uint ERROR_CALL_NOT_IMPLEMENTED = 120;
|
|
public const uint ERROR_NOT_FOUND = 1168;
|
|
public const uint ERROR_NO_MATCH = 1169;
|
|
public const uint ERROR_SET_NOT_FOUND = 1170;
|
|
public const uint PM_REMOVE = 1;
|
|
public const uint WM_QUIT = 18;
|
|
public const uint WTS_CONSOLE_CONNECT = 1;
|
|
public const uint WTS_CONSOLE_DISCONNECT = 2;
|
|
public const uint WTS_REMOTE_CONNECT = 3;
|
|
public const uint WTS_REMOTE_DISCONNECT = 4;
|
|
public const uint WTS_SESSION_LOGON = 5;
|
|
public const uint WTS_SESSION_LOGOFF = 6;
|
|
public const uint WTS_SESSION_LOCK = 7;
|
|
public const uint WTS_SESSION_UNLOCK = 8;
|
|
public static readonly IntPtr HKEY_CURRENT_USER = new IntPtr(-2147483647);
|
|
public static IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
|
|
private static readonly string[] s_rgsMessageNames = new string[0];
|
|
|
|
public static Win32Api.COLORREF ARGB(byte a, byte r, byte g, byte b) => new Win32Api.COLORREF((uint)(a << 24 | b << 16 | g << 8) | r);
|
|
|
|
public static Win32Api.COLORREF RGB(byte r, byte g, byte b) => new Win32Api.COLORREF((uint)(b << 16 | g << 8) | r);
|
|
|
|
public static Win32Api.COLORREF RGB(int r, int g, int b) => RGB((byte)r, (byte)g, (byte)b);
|
|
|
|
public static int GetRValue(Win32Api.COLORREF cr) => (int)cr.cr & byte.MaxValue;
|
|
|
|
public static int GetGValue(Win32Api.COLORREF cr) => (int)((cr.cr & 65280U) >> 8);
|
|
|
|
public static int GetBValue(Win32Api.COLORREF cr) => (int)((cr.cr & 16711680U) >> 16);
|
|
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
|
public static extern bool TranslateMessage(ref Win32Api.MSG msg);
|
|
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
|
public static extern IntPtr DispatchMessage(ref Win32Api.MSG msg);
|
|
|
|
[DllImport("user32.dll", EntryPoint = "GetWindowTextW", CharSet = CharSet.Unicode)]
|
|
public static extern int GetWindowText(HWND hWnd, StringBuilder text, int nMax);
|
|
|
|
[DllImport("user32.dll", EntryPoint = "GetClassNameW", CharSet = CharSet.Unicode)]
|
|
public static extern int GetClassName(HWND hWnd, StringBuilder text, int nMax);
|
|
|
|
[DllImport("user32.dll")]
|
|
public static extern bool ClientToScreen(HWND hwnd, [In, Out] ref Win32Api.POINT pt);
|
|
|
|
[DllImport("user32.dll")]
|
|
public static extern bool ScreenToClient(HWND hwnd, [In, Out] ref Win32Api.POINT pt);
|
|
|
|
[DllImport("user32.dll")]
|
|
public static extern int GetSystemMetrics(int metric);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
internal static extern Win32Api.HANDLE CreateEvent(
|
|
IntPtr lpSecurityAttributes,
|
|
bool bManualReset,
|
|
bool bInitialState,
|
|
string lpName);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
internal static extern bool CloseHandle(Win32Api.HANDLE hObject);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern void OutputDebugString(string lpOutputString);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern bool IsDebuggerPresent();
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern void DebugBreak();
|
|
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
|
internal static extern Win32Api.HINSTANCE LoadLibraryEx(
|
|
string stModuleName,
|
|
Win32Api.HANDLE hFile,
|
|
uint dwFlags);
|
|
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
|
internal static extern bool FreeLibrary(Win32Api.HINSTANCE hinst);
|
|
|
|
[DllImport("kernel32.dll", EntryPoint = "FindResourceW", CharSet = CharSet.Unicode)]
|
|
public static extern IntPtr FindResource(IntPtr hinst, string resource, IntPtr type);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern IntPtr LoadResource(IntPtr hinst, IntPtr i);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern IntPtr LockResource(IntPtr i);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern int SizeofResource(IntPtr hinst, IntPtr i);
|
|
|
|
[DllImport("advapi32.dll")]
|
|
internal static extern int RegNotifyChangeKeyValue(
|
|
IntPtr hkey,
|
|
bool bWatchSubtree,
|
|
int dwNotifyFilter,
|
|
Win32Api.HANDLE hEvent,
|
|
bool fAsynchronous);
|
|
|
|
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
|
|
internal static extern int RegOpenKeyExW(
|
|
IntPtr hkey,
|
|
string szSubKey,
|
|
int dwOptions,
|
|
int samDesired,
|
|
out IntPtr phkResult);
|
|
|
|
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
|
|
public static extern int RegQueryValueExW(
|
|
IntPtr hKey,
|
|
string lpValueName,
|
|
IntPtr reserved,
|
|
out int lpType,
|
|
out int lpData,
|
|
ref int lpcbData);
|
|
|
|
[DllImport("Advapi32.dll", CharSet = CharSet.Unicode)]
|
|
public static extern int RegQueryValueExW(
|
|
IntPtr hKey,
|
|
string lpValueName,
|
|
IntPtr reserved,
|
|
out int lpType,
|
|
char[] lpData,
|
|
ref int lpcbData);
|
|
|
|
[DllImport("advapi32.dll")]
|
|
internal static extern int RegCloseKey(IntPtr hkey);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern void GetSystemInfo(out Win32Api.SYSTEM_INFO info);
|
|
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
|
public static extern int RegisterWaitForSingleObject(
|
|
out IntPtr phNewWaitObject,
|
|
IntPtr hObject,
|
|
Win32Api.WaitOrTimerCallBack Callback,
|
|
IntPtr Context,
|
|
uint dwMilliseconds,
|
|
uint dwFlags);
|
|
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
|
public static extern bool UnregisterWait(IntPtr hWaitHandle);
|
|
|
|
internal static uint GetSystemPageSize()
|
|
{
|
|
Win32Api.SYSTEM_INFO info;
|
|
GetSystemInfo(out info);
|
|
return info.dwPageSize;
|
|
}
|
|
|
|
internal static string DumpMessage(uint uMsg) => DumpMessageWorker(uMsg) ?? "UNKNOWN MESSAGE";
|
|
|
|
private static string DumpMessageWorker(uint uMsg)
|
|
{
|
|
InitMessageDump();
|
|
if (uMsg >= s_rgsMessageNames.Length)
|
|
return null;
|
|
string rgsMessageName = s_rgsMessageNames[uMsg];
|
|
if (rgsMessageName != null)
|
|
return rgsMessageName;
|
|
uint num = uMsg;
|
|
while (uMsg > 0U)
|
|
{
|
|
--num;
|
|
rgsMessageName = s_rgsMessageNames[num];
|
|
if (rgsMessageName != null)
|
|
break;
|
|
}
|
|
if (rgsMessageName == null)
|
|
return null;
|
|
return string.Format(CultureInfo.InvariantCulture, "{0} + {1}", rgsMessageName, (uint)((int)uMsg - (int)num));
|
|
}
|
|
|
|
private static void InitMessageDump()
|
|
{
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal class CRITICAL_SECTION
|
|
{
|
|
public IntPtr DebugInfo;
|
|
public long LockCount;
|
|
public long RecursionCount;
|
|
public int OwningThread;
|
|
public int LockSemaphore;
|
|
public IntPtr SpinCount;
|
|
}
|
|
|
|
[Serializable]
|
|
internal struct HANDLE
|
|
{
|
|
public IntPtr h;
|
|
|
|
public bool IsValid => this.h != INVALID_HANDLE_VALUE;
|
|
|
|
public static Win32Api.HANDLE NULL => new Win32Api.HANDLE()
|
|
{
|
|
h = IntPtr.Zero
|
|
};
|
|
|
|
public static Win32Api.HANDLE INVALID => new Win32Api.HANDLE()
|
|
{
|
|
h = INVALID_HANDLE_VALUE
|
|
};
|
|
|
|
public static bool operator ==(Win32Api.HANDLE hl, Win32Api.HANDLE hr) => hl.h == hr.h;
|
|
|
|
public static bool operator !=(Win32Api.HANDLE hl, Win32Api.HANDLE hr) => hl.h != hr.h;
|
|
|
|
public override bool Equals(object oCompare) => this.h == (IntPtr)oCompare;
|
|
|
|
public override int GetHashCode() => (int)this.h.ToInt64();
|
|
}
|
|
|
|
internal struct HINSTANCE
|
|
{
|
|
public IntPtr h;
|
|
|
|
public static Win32Api.HINSTANCE NULL => new Win32Api.HINSTANCE()
|
|
{
|
|
h = IntPtr.Zero
|
|
};
|
|
|
|
public static bool operator ==(Win32Api.HINSTANCE hl, Win32Api.HINSTANCE hr) => hl.h == hr.h;
|
|
|
|
public static bool operator !=(Win32Api.HINSTANCE hl, Win32Api.HINSTANCE hr) => hl.h != hr.h;
|
|
|
|
public override bool Equals(object oCompare) => this.h == (IntPtr)oCompare;
|
|
|
|
public override int GetHashCode() => (int)this.h.ToInt64();
|
|
}
|
|
|
|
internal struct MSG
|
|
{
|
|
public HWND hwnd;
|
|
public uint message;
|
|
public IntPtr wParam;
|
|
public IntPtr lParam;
|
|
public uint time;
|
|
public int pt_x;
|
|
public int pt_y;
|
|
}
|
|
|
|
[ComVisible(false)]
|
|
public struct SYSTEM_INFO
|
|
{
|
|
public ushort wProcessorArchitecture;
|
|
public ushort wReserved;
|
|
public uint dwPageSize;
|
|
public IntPtr lpMinimumApplicationAddress;
|
|
public IntPtr lpMaximumApplicationAddress;
|
|
public IntPtr dwActiveProcessorMask;
|
|
public uint dwNumberOfProcessors;
|
|
public uint dwProcessorType;
|
|
public uint dwAllocationGranularity;
|
|
public ushort wProcessorLevel;
|
|
public ushort wProcessorRevision;
|
|
}
|
|
|
|
public struct SIZE
|
|
{
|
|
public int cx;
|
|
public int cy;
|
|
|
|
public SIZE(int cx, int cy)
|
|
{
|
|
this.cx = cx;
|
|
this.cy = cy;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public struct POINT
|
|
{
|
|
public int x;
|
|
public int y;
|
|
|
|
public POINT(int x, int y)
|
|
{
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public struct RECT
|
|
{
|
|
public int left;
|
|
public int top;
|
|
public int right;
|
|
public int bottom;
|
|
|
|
public RECT(int left, int top, int right, int bottom)
|
|
{
|
|
this.left = left;
|
|
this.top = top;
|
|
this.right = right;
|
|
this.bottom = bottom;
|
|
}
|
|
|
|
public RECT(Win32Api.RECT rcSrc)
|
|
{
|
|
this.left = rcSrc.left;
|
|
this.top = rcSrc.top;
|
|
this.right = rcSrc.right;
|
|
this.bottom = rcSrc.bottom;
|
|
}
|
|
|
|
public int Width
|
|
{
|
|
get => this.right - this.left;
|
|
set => this.right = this.left + value;
|
|
}
|
|
|
|
public int Height
|
|
{
|
|
get => this.bottom - this.top;
|
|
set => this.bottom = this.top + value;
|
|
}
|
|
|
|
public static Win32Api.RECT FromXYWH(int x, int y, int width, int height) => new Win32Api.RECT(x, y, x + width, y + height);
|
|
}
|
|
|
|
public struct COLORREF
|
|
{
|
|
public uint cr;
|
|
|
|
public COLORREF(uint cr) => this.cr = cr;
|
|
|
|
public COLORREF(Win32Api.COLORREF cr) => this.cr = cr.cr;
|
|
}
|
|
|
|
public delegate void WaitOrTimerCallBack(IntPtr lpParameter, byte f);
|
|
}
|
|
}
|