1 #pragma once 2 3 #define TIPASTE(x,y) x ## y 4 5 #define IF_LIST_ITER(n) \ 6 PLIST_ENTRY TIPASTE(n,Entry); \ 7 PIP_INTERFACE n; 8 9 #define ForEachInterface(n) \ 10 TIPASTE(n,Entry) = InterfaceListHead.Flink; \ 11 while (TIPASTE(n,Entry) != &InterfaceListHead) { \ 12 TI_DbgPrint \ 13 (MAX_TRACE,( # n ": %x\n", \ 14 TIPASTE(n,Entry))); \ 15 ASSERT(TIPASTE(n,Entry)); \ 16 n = CONTAINING_RECORD(TIPASTE(n,Entry), IP_INTERFACE, \ 17 ListEntry); \ 18 ASSERT(n); 19 20 #define EndFor(n) \ 21 TI_DbgPrint(MAX_TRACE,("Next " # n " %x\n", \ 22 TIPASTE(n,Entry->Flink))); \ 23 TIPASTE(n,Entry) = TIPASTE(n,Entry)->Flink; \ 24 } 25