From 8e61503de1c8e3c854c6f740a56ba2f7015effc7 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Wed, 31 Jan 2024 16:08:06 +0100 Subject: [PATCH] Implement RtlCompareGuids() kernel routine --- sdk/xtdk/rtlfuncs.h | 5 +++++ xtoskrnl/CMakeLists.txt | 1 + xtoskrnl/rtl/guid.c | 26 ++++++++++++++++++++++++++ xtoskrnl/xtoskrnl.spec | 1 + 4 files changed, 33 insertions(+) create mode 100644 xtoskrnl/rtl/guid.c diff --git a/sdk/xtdk/rtlfuncs.h b/sdk/xtdk/rtlfuncs.h index e435a7b..31ae467 100644 --- a/sdk/xtdk/rtlfuncs.h +++ b/sdk/xtdk/rtlfuncs.h @@ -48,6 +48,11 @@ RtlRemoveEntryList(IN PLIST_ENTRY Entry); /* Runtime Library routines forward references */ +XTAPI +BOOLEAN +RtlCompareGuids(IN PGUID Guid1, + IN PGUID Guid2); + XTAPI SIZE_T RtlCompareMemory(IN PCVOID LeftBuffer, diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index cdbc78b..27e17fc 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -41,6 +41,7 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/po/idle.c ${XTOSKRNL_SOURCE_DIR}/rtl/atomic.c ${XTOSKRNL_SOURCE_DIR}/rtl/byteswap.c + ${XTOSKRNL_SOURCE_DIR}/rtl/guid.c ${XTOSKRNL_SOURCE_DIR}/rtl/ioreg.c ${XTOSKRNL_SOURCE_DIR}/rtl/memory.c ${XTOSKRNL_SOURCE_DIR}/rtl/plist.c diff --git a/xtoskrnl/rtl/guid.c b/xtoskrnl/rtl/guid.c new file mode 100644 index 0000000..9545716 --- /dev/null +++ b/xtoskrnl/rtl/guid.c @@ -0,0 +1,26 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/rtl/guid.c + * DESCRIPTION: GUID manipulation routines + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +XTAPI +BOOLEAN +RtlCompareGuids(IN PGUID Guid1, + IN PGUID Guid2) +{ + PUINT Guid1Ptr, Guid2Ptr; + + /* Cast GUIDs to UINT to compare 32-bits at a time */ + Guid1Ptr = (PUINT)Guid1; + Guid2Ptr = (PUINT)Guid2; + + /* Compare GUIDs */ + return(Guid1Ptr[0] == Guid2Ptr[0] && Guid1Ptr[1] == Guid2Ptr[1] && + Guid1Ptr[2] == Guid2Ptr[2] && Guid1Ptr[3] == Guid2Ptr[3]); +} diff --git a/xtoskrnl/xtoskrnl.spec b/xtoskrnl/xtoskrnl.spec index cb5869c..bdd8c86 100644 --- a/xtoskrnl/xtoskrnl.spec +++ b/xtoskrnl/xtoskrnl.spec @@ -23,6 +23,7 @@ @ stdcall KeSetTargetProcessorDpc(ptr long) @ stdcall KeSignalCallDpcDone(ptr) @ stdcall KeSignalCallDpcSynchronize(ptr) +@ stdcall RtlCompareGuids(ptr ptr) @ stdcall RtlCompareMemory(ptr ptr long) @ stdcall RtlCopyMemory(ptr ptr long) @ stdcall RtlFillMemory(ptr long long)