summaryrefslogtreecommitdiffhomepage
path: root/Private/DriverKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-21 12:25:15 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-21 12:25:15 +0200
commitb4dc4ad11804ae9b2113f61b7055b506cebd5c6d (patch)
tree9333c109506d355fc29c6d33f21f99576320b460 /Private/DriverKit
parentebadabf4b6ab4a08c47b098affa0de6d681b5982 (diff)
MHR-5: Worked on DriverKit to bring C++ support for it, as some drivers
may need it. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/DriverKit')
-rw-r--r--Private/DriverKit/KernelStdCxx.cc24
-rw-r--r--Private/DriverKit/KernelString.c11
-rw-r--r--Private/DriverKit/KernelString.h3
3 files changed, 38 insertions, 0 deletions
diff --git a/Private/DriverKit/KernelStdCxx.cc b/Private/DriverKit/KernelStdCxx.cc
new file mode 100644
index 00000000..79d41a72
--- /dev/null
+++ b/Private/DriverKit/KernelStdCxx.cc
@@ -0,0 +1,24 @@
+/* -------------------------------------------
+
+ Copyright Mahrouss Logic
+
+ Purpose: Driver C++ Definitions.
+
+------------------------------------------- */
+
+#include <DriverKit/KernelStd.h>
+
+void* operator new(size_t sz) {
+ if (!sz) ++sz;
+
+ auto ptr = kernelCall("NewKernelHeap", 1, sz);
+ kernelCall("KernelHeapProtect", 1, ptr);
+
+ return ptr;
+}
+
+void operator delete(void* ptr) noexcept {
+ if (!ptr) return;
+
+ kernelCall("DeleteKernelHeap", 1,ptr);
+}
diff --git a/Private/DriverKit/KernelString.c b/Private/DriverKit/KernelString.c
index 7c129dd4..0bb45b16 100644
--- a/Private/DriverKit/KernelString.c
+++ b/Private/DriverKit/KernelString.c
@@ -17,3 +17,14 @@ DK_EXTERN size_t kernelStringLength(const char* str) {
return index;
}
+
+DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len) {
+ size_t index = 0;
+
+ while (index != len) {
+ dst[index] = src[index];
+ ++index;
+ }
+
+ return index;
+}
diff --git a/Private/DriverKit/KernelString.h b/Private/DriverKit/KernelString.h
index d1b8ac93..8e189d26 100644
--- a/Private/DriverKit/KernelString.h
+++ b/Private/DriverKit/KernelString.h
@@ -10,4 +10,7 @@
#include <DriverKit/KernelStd.h>
+/// @brief DriverKit equivalent of POSIX's string.h.
+
DK_EXTERN size_t kernelStringLength(const char* str);
+DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len);