16#define ok_eq_free2(Value, Expected) do \
18 if (KmtIsCheckedBuild) \
19 ok_eq_pointer(Value, (PVOID)(ULONG_PTR)0xBADDD0FFBADDD0FFULL); \
21 ok_eq_pointer(Value, Expected); \
34 while (ListHead->
Next)
37 ListHead = ListHead->
Next;
51#define CheckListHeader(ListHead, ExpectedPointer, ExpectedDepth) do \
53 ok_eq_pointer((ListHead)->Next, ExpectedPointer); \
54 ok_eq_uint(QueryDepthList(ListHead), ExpectedDepth); \
55 ok_irql(HIGH_LEVEL); \
56 ok_bool_true(KmtAreInterruptsEnabled(), "Interrupts enabled:"); \
59#define PXLIST_HEADER PSINGLE_LIST_ENTRY
60#define PXLIST_ENTRY PSINGLE_LIST_ENTRY
61#define PushXList ExInterlockedPushEntryList
62#define PopXList ExInterlockedPopEntryList
63#define FlushXList FlushList
64#define ok_free_xlist ok_eq_free2
65#define CheckXListHeader CheckListHeader
66#define TestXListFunctional TestListFunctional
69#undef ExInterlockedPushEntryList
70#undef ExInterlockedPopEntryList
71#define TestXListFunctional TestListFunctionalExports
75#define PushXList PushEntryListWrapper
77#define PopXList(h, s) PopEntryList(h)
79#define ok_free_xlist ok_eq_pointer
80#define TestXListFunctional TestListFunctionalNoInterlocked
PSINGLE_LIST_ENTRY FlushList(PSINGLE_LIST_ENTRY ListHead)
PSINGLE_LIST_ENTRY PushEntryListWrapper(PSINGLE_LIST_ENTRY ListHead, PSINGLE_LIST_ENTRY Entry, PKSPIN_LOCK Lock)
USHORT QueryDepthList(PSINGLE_LIST_ENTRY ListHead)
static const ENTRY Entries[]
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
#define KeInitializeSpinLock(sl)
#define RtlFillMemory(Dest, Length, Fill)
PSINGLE_LIST_ENTRY NTAPI ExInterlockedPopEntryList(IN OUT PSINGLE_LIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
PSINGLE_LIST_ENTRY NTAPI ExInterlockedPushEntryList(IN OUT PSINGLE_LIST_ENTRY ListHead, IN OUT PSINGLE_LIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
#define ExFreePoolWithTag(_P, _T)
#define UNREFERENCED_PARAMETER(P)
base of all file and directory entries
struct _SINGLE_LIST_ENTRY * Next
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
FORCEINLINE VOID PushEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY Entry)