Browse Source

Merge pull request #1775 from Kelimion/ctrl_c

Ctrl-C handler on Windows.
Jeroen van Rijn 3 years ago
parent
commit
3d06322d4a
2 changed files with 16 additions and 1 deletions
  1. 1 1
      core/sys/win32/kernel32.odin
  2. 15 0
      core/sys/windows/kernel32.odin

+ 1 - 1
core/sys/win32/kernel32.odin

@@ -234,4 +234,4 @@ PAGE_WRITECOPY          :: 0x08
 PAGE_EXECUTE            :: 0x10
 PAGE_EXECUTE_READ       :: 0x20
 PAGE_EXECUTE_READWRITE  :: 0x40
-PAGE_EXECUTE_WRITECOPY  :: 0x80
+PAGE_EXECUTE_WRITECOPY  :: 0x80

+ 15 - 0
core/sys/windows/kernel32.odin

@@ -758,3 +758,18 @@ foreign kernel32 {
 		UnmapFlags: ULONG,
 	) -> BOOL ---
 }
+
+@(default_calling_convention = "std")
+foreign kernel32 {
+	@(link_name="SetConsoleCtrlHandler") set_console_ctrl_handler :: proc(handler: Handler_Routine, add: BOOL) -> BOOL ---
+}
+
+Handler_Routine :: proc(dwCtrlType: Control_Event) -> BOOL
+
+Control_Event :: enum DWORD {
+	control_c = 0,
+	_break    = 1,
+	close     = 2,
+	logoff    = 5,
+	shutdown  = 6,
+}