Здравствуйте, Ignoramus, Вы писали:
I>Господа!
I>Читал DDK, но так и не понял насчет этих списков.
I>Когда я вызываю InitializeListHead, получается, что в списке уже есть один элемент — голова? Что тогда возвратит IsListEmpty? Думаю, что TRUE, ведь я еще не добавлял элементы InsertHeadList или InsertTailList, но ведь все же в списке уже есть головной элемент?
I>Разъясните, плз.
смотрим на структуру LIST_ENTRY
typedef struct _LIST_ENTRY {
struct _LIST_ENTRY* Flink;
struct _LIST_ENTRY* Blink;
} LIST_ENTRY;
InitializeListHead, думаю делает следующее
void InitializeListHead( LIST_ENTRY* x )
{
x->Flink = x;
x->Blink = x;
}
А IsListEmpty таков
BOOL IsListEmpty( LIST_ENTRY* x )
{
return ( x->Flink == x->Blink );
}
InsertHeadList или InsertTailList изменяют значения полей Flink и Blink головы соответственно.
Кажись всё

Успехов