19 lines
616 B
C
19 lines
616 B
C
#pragma once
|
|
|
|
typedef struct _LIST_ENTRY {
|
|
struct _LIST_ENTRY *flink;
|
|
struct _LIST_ENTRY *blink;
|
|
} LIST_ENTRY, *PLIST_ENTRY;
|
|
|
|
#include <stddef.h>
|
|
|
|
#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); |