ExAllocatePool(pageType, nAllocSize);
ExFreePool(address);
ExAllocatePoolWithTag(pageType, nAllocSize, tag);
ExFreePoolWithTag(address, tag);
NPAGED_LOOKASIDE_LIST lookaside;
ExInitializeNPagedLookasideList(&lookaside, NULL, NULL, 0, nAllocSize, tag, 0);
ExAllocateFromNPagedLookasideList(&lookaside);
ExFreeToNPagedLookasideList(&lookaside, address);
ExDeleteNPagedLookasideList(&lookaside);
LIST_ENTRY listEntry;
InitializeListHead(&listEntry);
IsListEmpty(&listEntry);
InsertTailList(&listEntry, &newEntry);
InsertHeadList(&listEntry, &newEntry);
/*
Calling RemoveHeadList Or RemoveTailList with an empty list can cause a system failure. Callers of
RemoveHeadList or RemoveTailList should first call IsListEmpty to determine if the list has any entries.
*/
RemoveTailList(&listEntry);
RemoveHeadList(&listEntry);
RemoveEntryList(&entryItem);
SPIN_LOCK spinLock;
KeInitializeSpinLock(&spinLock);
ExInterLockedInsertHeadList(&listEntry, &newEntry, &spinLock);
ExInterLockedInsertTailList(&listEntry, &newEntry, &spinLock);
/*
If the list is empty, a NULL pointer is returned. Otherwise, a pointer to the dequeued entry is returned.
*/
ExInterLockedRemoveHeadList(&listEntry, &spinLock);
SLIST_EHADER sListHead;
ExInitializeSListHead(&sListHead);
ExInterLockedPushEntrySList(&sListHead, sListEntry, lock);
/*
ExInterlockedPopEntrySList returns a pointer to the first entry in the list. If the list was empty,
it returns NULL.
*/
ExInterLockedPopEntrySList(&sListHead, lock)
/*
ExQueryDepthSList returns the current number of entries in the S-List.
*/
ExQueryDepthSList(&sListHead);