private unsafe void PopulateDebugMessengerCreateInfo(ref DebugUtilsMessengerCreateInfoEXT createInfo) { createInfo.SType = StructureType.DebugUtilsMessengerCreateInfoExt; createInfo.MessageSeverity = DebugUtilsMessageSeverityFlagsEXT.DebugUtilsMessageSeverityVerboseBitExt | DebugUtilsMessageSeverityFlagsEXT.DebugUtilsMessageSeverityWarningBitExt | DebugUtilsMessageSeverityFlagsEXT.DebugUtilsMessageSeverityErrorBitExt; createInfo.MessageType = DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypeGeneralBitExt | DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypePerformanceBitExt | DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypeValidationBitExt; createInfo.PfnUserCallback = FuncPtr.Of <DebugUtilsMessengerCallbackFunctionEXT>(DebugCallback); }
void Awake() { // MessageBoxA(NULL, "hello!", "hello!", 0); を呼ぶ shellcode。元ソースは // https://github.com/i-saint/scribble/blob/master/shellcode.cpp byte[] shellcode = new byte[] { 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x34, 0x53, 0x56, 0x57, 0xC7, 0x45, 0xD8, 0x75, 0x73, 0x65, 0x72, 0xC7, 0x45, 0xDC, 0x33, 0x32, 0x2E, 0x64, 0xC7, 0x45, 0xE0, 0x6C, 0x6C, 0x00, 0x00, 0xC7, 0x45, 0xCC, 0x4D, 0x65, 0x73, 0x73, 0xC7, 0x45, 0xD0, 0x61, 0x67, 0x65, 0x42, 0xC7, 0x45, 0xD4, 0x6F, 0x78, 0x41, 0x00, 0xC7, 0x45, 0xE4, 0x68, 0x65, 0x6C, 0x6C, 0xC7, 0x45, 0xE8, 0x6F, 0x21, 0x00, 0x00, 0x33, 0xC9, 0x64, 0x8B, 0x35, 0x30, 0x00, 0x00, 0x00, 0x8B, 0x76, 0x0C, 0x8B, 0x76, 0x1C, 0x8B, 0x46, 0x08, 0x8B, 0x7E, 0x20, 0x8B, 0x36, 0x38, 0x4F, 0x18, 0x75, 0xF3, 0x89, 0x45, 0xF8, 0x8B, 0x55, 0xF8, 0x8B, 0x42, 0x3C, 0x8B, 0x44, 0x10, 0x78, 0x83, 0x65, 0xFC, 0x00, 0x03, 0xC2, 0x8B, 0x70, 0x20, 0x8B, 0x78, 0x24, 0x8B, 0x58, 0x1C, 0x8B, 0x40, 0x14, 0x03, 0xF2, 0x03, 0xFA, 0x03, 0xDA, 0x89, 0x45, 0xF4, 0x85, 0xC0, 0x74, 0x36, 0x8B, 0x45, 0xFC, 0x8B, 0x0C, 0x86, 0x0F, 0xB7, 0x04, 0x47, 0x8B, 0x04, 0x83, 0x03, 0xC2, 0x81, 0x7C, 0x11, 0x08, 0x61, 0x72, 0x79, 0x41, 0x75, 0x05, 0x89, 0x45, 0xF0, 0xEB, 0x0D, 0x81, 0x7C, 0x11, 0x04, 0x72, 0x6F, 0x63, 0x41, 0x75, 0x03, 0x89, 0x45, 0xEC, 0xFF, 0x45, 0xFC, 0x8B, 0x45, 0xFC, 0x3B, 0x45, 0xF4, 0x72, 0xCA, 0x8D, 0x45, 0xD8, 0x50, 0xFF, 0x55, 0xF0, 0x8D, 0x4D, 0xCC, 0x51, 0x50, 0xFF, 0x55, 0xEC, 0x6A, 0x00, 0x8D, 0x4D, 0xE4, 0x51, 0x51, 0x6A, 0x00, 0xFF, 0xD0, 0x5F, 0x5E, 0x5B, 0xC9, 0xC3 }; IntPtr mem = Marshal.UnsafeAddrOfPinnedArrayElement(shellcode, 0); FuncPtr func = (FuncPtr)Marshal.GetDelegateForFunctionPointer(mem, typeof(FuncPtr)); func(); }
public DebugReportCallbackCreateInfoEXT ( StructureType sType = StructureType.DebugReportCallbackCreateInfoExt, void *pNext = default, DebugReportFlagsEXT flags = default, FuncPtr pfnCallback = default, void *pUserData = default ) { SType = sType; PNext = pNext; Flags = flags; PfnCallback = pfnCallback; PUserData = pUserData; }
public AllocationCallbacks ( void *pUserData = default, FuncPtr pfnAllocation = default, FuncPtr pfnReallocation = default, FuncPtr pfnFree = default, FuncPtr pfnInternalAllocation = default, FuncPtr pfnInternalFree = default ) { PUserData = pUserData; PfnAllocation = pfnAllocation; PfnReallocation = pfnReallocation; PfnFree = pfnFree; PfnInternalAllocation = pfnInternalAllocation; PfnInternalFree = pfnInternalFree; }
public DebugUtilsMessengerCreateInfoEXT ( StructureType sType = StructureType.DebugUtilsMessengerCreateInfoExt, void *pNext = default, uint flags = default, DebugUtilsMessageSeverityFlagsEXT messageSeverity = default, DebugUtilsMessageTypeFlagsEXT messageType = default, FuncPtr pfnUserCallback = default, void *pUserData = default ) { SType = sType; PNext = pNext; Flags = flags; MessageSeverity = messageSeverity; MessageType = messageType; PfnUserCallback = pfnUserCallback; PUserData = pUserData; }
public Token() { funcPtr = null; value = 0; }
public Token(Token_Type tp, string le, double d, FuncPtr fp) { type = tp; lexico = le; value = d; funcPtr = fp; }
public void DoOperation(Voxel node, FuncPtr func) { func(node); }