kernel
Loading...
Searching...
No Matches
mt.h
Go to the documentation of this file.
1/*++
2
3Module Name:
4
5 mt.h
6
7Purpose:
8
9 This module contains the header files & prototypes required for user mode interactions with kernel services. (System Calls)
10
11Author:
12
13 slep (Matanel) 2025.
14
15Revision History:
16
17--*/
18
19#ifndef X86_MATANEL_MT_H
20#define X86_MATANEL_MT_H
21
22#include "core.h"
23
24// Maximum number of syscalls
25#define MAX_SYSCALLS 256
26typedef uint64_t(*SyscallHandler)(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
27
28#define MtCurrentProcess() -1
29#define MtCurrentThread() -2
30
32 PAGE_EXECUTE_READ = 0x10, // PRESENT
33 PAGE_EXECUTE_READWRITE = 0x20, // PRESENT | RW
34 PAGE_READWRITE = 0x30, // PRESENT | RW | NX
35 PAGE_READONLY = 0x40, // PRESENT | NX
36 PAGE_NOACCESS = 0x50 // NONE.
38
39void
41 void
42);
43
44void
46 IN PTRAP_FRAME TrapFrame
47);
48
49// System calls
52 IN HANDLE Process,
53 _In_Opt _Out_Opt void** BaseAddress,
54 IN size_t NumberOfBytes,
55 IN uint8_t AllocationType
56);
57
60 IN uint32_t ProcessId,
61 OUT PHANDLE ProcessHandle,
62 IN ACCESS_MASK DesiredAccess
63);
64
67 IN HANDLE ProcessHandle,
68 IN MTSTATUS ExitStatus
69);
70
73 IN HANDLE FileHandle,
74 IN uint64_t FileOffset,
75 OUT void* Buffer,
76 IN size_t BufferSize,
77 _Out_Opt size_t* BytesRead
78);
79
82 IN HANDLE FileHandle,
83 IN uint64_t FileOffset,
84 IN void* Buffer,
85 IN size_t BufferSize,
86 _Out_Opt size_t* BytesWritten
87);
88
91 IN const char* path,
92 IN ACCESS_MASK DesiredAccess,
93 OUT PHANDLE FileHandleOut
94);
95
98 IN HANDLE hObject
99);
100
103 IN HANDLE ThreadHandle,
104 IN MTSTATUS ExitStatus
105);
106
107#endif
#define _In_Opt
Definition annotations.h:10
#define _Out_Opt
Definition annotations.h:11
#define IN
Definition annotations.h:8
#define OUT
Definition annotations.h:9
uint32_t ACCESS_MASK
Definition core.h:59
int32_t * PHANDLE
Definition core.h:58
int32_t HANDLE
Definition core.h:58
TRAP_FRAME * PTRAP_FRAME
Definition core.h:56
void MtSetupSyscall(void)
Definition setup.c:55
uint64_t(* SyscallHandler)(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t)
Definition mt.h:26
_USER_ALLOCATION_TYPE
Definition mt.h:31
@ PAGE_EXECUTE_READ
Definition mt.h:32
@ PAGE_EXECUTE_READWRITE
Definition mt.h:33
@ PAGE_READWRITE
Definition mt.h:34
@ PAGE_NOACCESS
Definition mt.h:36
@ PAGE_READONLY
Definition mt.h:35
void MtSyscallHandler(IN PTRAP_FRAME TrapFrame)
Definition handler.c:27
MTSTATUS MtReadFile(IN HANDLE FileHandle, IN uint64_t FileOffset, OUT void *Buffer, IN size_t BufferSize, _Out_Opt size_t *BytesRead)
MTSTATUS MtTerminateProcess(IN HANDLE ProcessHandle, IN MTSTATUS ExitStatus)
enum _USER_ALLOCATION_TYPE USER_ALLOCATION_TYPE
MTSTATUS MtClose(IN HANDLE hObject)
MTSTATUS MtOpenProcess(IN uint32_t ProcessId, OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess)
MTSTATUS MtTerminateThread(IN HANDLE ThreadHandle, IN MTSTATUS ExitStatus)
MTSTATUS MtAllocateVirtualMemory(IN HANDLE Process, _In_Opt _Out_Opt void **BaseAddress, IN size_t NumberOfBytes, IN uint8_t AllocationType)
Definition systemcalls.c:29
MTSTATUS MtWriteFile(IN HANDLE FileHandle, IN uint64_t FileOffset, IN void *Buffer, IN size_t BufferSize, _Out_Opt size_t *BytesWritten)
MTSTATUS MtCreateFile(IN const char *path, IN ACCESS_MASK DesiredAccess, OUT PHANDLE FileHandleOut)
int32_t MTSTATUS
Definition mtstatus.h:12