diff --git a/sdk/xtdk/rtlfuncs.h b/sdk/xtdk/rtlfuncs.h index e435a7b1..31ae4674 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 cdbc78b5..27e17fc4 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 00000000..9545716e --- /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 cb5869c0..bdd8c866 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)