diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-04-21 12:25:15 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-04-21 12:25:15 +0200 |
| commit | b4dc4ad11804ae9b2113f61b7055b506cebd5c6d (patch) | |
| tree | 9333c109506d355fc29c6d33f21f99576320b460 /Private/DriverKit | |
| parent | ebadabf4b6ab4a08c47b098affa0de6d681b5982 (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.cc | 24 | ||||
| -rw-r--r-- | Private/DriverKit/KernelString.c | 11 | ||||
| -rw-r--r-- | Private/DriverKit/KernelString.h | 3 |
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); |
