Files
MicrosoftIris/UIX.RenderApi/Microsoft/Iris/Render/Internal/Win32Api.cs
T

394 lines
14 KiB
C#
Raw Normal View History

2022-03-03 08:40:19 -06:00
// 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);
}
}