Skip to content

Instantly share code, notes, and snippets.

@kant2002
kant2002 / entrypoint.cs
Created February 5, 2021 12:16
Generated code by ILC
using Internal.Runtime.CompilerHelpers;
// ....
int main(int argc, char** argv)
{
StartupCodeHelpers.InitializeCommandLineArgsW(argc, argv);
String[] arguments = StartupCodeHelpers.GetMainMethodArguments();
int exitCode = __managed_Main(arguments);
StartupCodeHelpers.SetLatchedExitCode(exitCode);
@kant2002
kant2002 / augmentations.d.ts
Last active July 31, 2020 15:41
jQueryEventextension
/// <reference types="jquery" />
declare interface JQuery {
on(events: ':passageinit', handler: (this: JQuery, t: x, ...args: any[]) => any): this;
}
@kant2002
kant2002 / setup-vm.ps1
Created March 23, 2020 22:24
Create Virtual Machine for UEFI CoreRT application
New-VM -Name SeeSharpSnake -MemoryStartupBytes 32MB -Generation 2 -VHDPath "bin\x64\Release\netcoreapp3.1\win-x64\native\seesharpsnake.vhdx"
Set-VMFirmware -VMName SeeSharpSnake -EnableSecureBoot Off
Set-VM -Name SeeSharpSnake -AutomaticCheckpointsEnabled $false -CheckpointType Disabled
@kant2002
kant2002 / SeeSharpSnake.csproj
Last active March 23, 2020 22:22
Package UEFI application in VHDX
<Target Name="GenerateVirtuaDisk" AfterTargets="Publish">
<PropertyGroup>
<VHD>$(MSBuildProjectDirectory)\$(NativeOutputPath)seesharpsnake.vhdx</VHD>
<CreatePartitionCommand>
create vdisk file=$(VHD) maximum=40
select vdisk file=$(VHD)
attach vdisk
convert gpt
create partition efi
format quick fs=fat32 label="System"
@kant2002
kant2002 / CoreRT.csproj
Created March 23, 2020 22:17
Linker parameters for UEFI application using CoreRT
<ItemGroup>
<LinkerArg Include="/subsystem:EFI_APPLICATION /entry:EfiMain" />
</ItemGroup>
@kant2002
kant2002 / CoreRT.csproj
Last active March 23, 2020 22:19
Disable standard runtime in CoreRT application
<PropertyGroup>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<RuntimeMetadataVersion>v4.0.30319</RuntimeMetadataVersion>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
<IlcSystemModule>SeeSharpSnake</IlcSystemModule>
</PropertyGroup>
<Target Name="CustomizeReferences" BeforeTargets="BeforeCompile" AfterTargets="FindReferenceAssembliesForReferences">
@kant2002
kant2002 / UnmanagedType.cs
Created March 23, 2020 22:00
Unmanaged constraint
namespace System.Runtime.InteropServices
{
public class UnmanagedType { }
}
@kant2002
kant2002 / RawCalliHelper.cs
Created March 23, 2020 21:58
CoreRT Calli helper
[System.Runtime.InteropServices.McgIntrinsicsAttribute]
internal class RawCalliHelper
{
public static unsafe ulong StdCall<T, U, W, X>(IntPtr pfn, T* arg1, U* arg2, W* arg3, X* arg4) where T : unmanaged where U : unmanaged where W : unmanaged where X : unmanaged
{
// This will be filled in by an IL transform
return 0;
}
public static unsafe ulong StdCall<T, U, W, X>(IntPtr pfn, T arg1, U* arg2, W* arg3, X* arg4) where T : struct where U : unmanaged where W : unmanaged where X : unmanaged
{
@kant2002
kant2002 / EfiApplication.cs
Created March 23, 2020 21:44
CoreRT UEFI startup code
public unsafe static class EfiApplication
{
[System.Runtime.RuntimeExport("EfiMain")]
unsafe static long EfiMain(IntPtr imageHandle, EFI_SYSTEM_TABLE* systemTable)
{
EfiRuntimeHost.Initialize(systemTable);
Console.Clear();
Game.Main();
@kant2002
kant2002 / EFI_SIMPLE_TEXT_INPUT_PROTOCOL.cs
Created March 23, 2020 21:39
How to wrap UEFI functions
[StructLayout(LayoutKind.Sequential)]
public unsafe readonly struct EFI_SIMPLE_TEXT_INPUT_PROTOCOL
{
private readonly IntPtr _reset;
private readonly IntPtr _readKeyStroke;
public readonly IntPtr WaitForKey;
public void Reset(void* handle, bool ExtendedVerification)
{