#pragma once typedef struct _LIST_ENTRY { struct _LIST_ENTRY *flink; struct _LIST_ENTRY *blink; } LIST_ENTRY, *PLIST_ENTRY; #include #define CONTAINING_RECORD(address, type, field) \ ((type *)((char*)(address) - offsetof(type, field))) void InitializeListHead(PLIST_ENTRY ListHead); int IsListEmpty(const PLIST_ENTRY ListHead); void InsertHeadList(PLIST_ENTRY ListHead, PLIST_ENTRY Entry); void InsertTailList(PLIST_ENTRY ListHead, PLIST_ENTRY Entry); void RemoveEntryList(PLIST_ENTRY Entry); PLIST_ENTRY RemoveHeadList(PLIST_ENTRY ListHead); PLIST_ENTRY RemoveTailList(PLIST_ENTRY ListHead);