HyperDbg/hyperdbg/hprdbgctrl/code/common/list.cpp
2022-01-18 22:38:56 +03:30

68 lines
1.3 KiB
C++

/**
* @file list.cpp
* @author Sina Karvandi (sina@hyperdbg.org)
* @brief The list working functions headers
* @details
* @version 0.1
* @date 2020-04-11
*
* @copyright This project is released under the GNU Public License v3.
*
*/
#include "..\hprdbgctrl\pch.h"
/**
* @brief List initializer
*
* @param ListHead
*/
void
InitializeListHead(PLIST_ENTRY ListHead)
{
ListHead->Flink = ListHead->Blink = ListHead;
}
/**
* @brief insert entry to the top of the list
*
* @param ListHead
* @param Entry
*/
void
InsertHeadList(PLIST_ENTRY ListHead, PLIST_ENTRY Entry)
{
PLIST_ENTRY Flink;
Flink = ListHead->Flink;
Entry->Flink = Flink;
Entry->Blink = ListHead;
Flink->Blink = Entry;
ListHead->Flink = Entry;
}
/**
* @brief remove the entry from the list
*
* @param Entry
* @return BOOLEAN
*/
BOOLEAN
RemoveEntryList(PLIST_ENTRY Entry)
{
PLIST_ENTRY PrevEntry;
PLIST_ENTRY NextEntry;
NextEntry = Entry->Flink;
PrevEntry = Entry->Blink;
if ((NextEntry->Blink != Entry) || (PrevEntry->Flink != Entry))
{
//
// Error
//
_CrtDbgBreak();
}
PrevEntry->Flink = NextEntry;
NextEntry->Blink = PrevEntry;
return (BOOLEAN)(PrevEntry == NextEntry);
}