KeEnumerateKernelStackSegments

VOID __stdcall KeEnumerateKernelStackSegments(
        _ETHREAD *Thread,
        VOID *Callback,
        _ETHREAD *a3,
        _KERNEL_STACK_SEGMENT *a4,
        VOID *a5,
        VOID *Context){
  UINT8 NextKernelStackSegment; 
  __int64 v10; 
  _KERNEL_STACK_SEGMENT StackSegment; 
  _KERNEL_STACK_SEGMENT v12; 

  memset(&StackSegment, 0, sizeof(StackSegment));
  KeGetNextKernelStackSegment(&Thread->Tcb, &StackSegment, 1u);
  do
  {
    v12 = StackSegment;
    NextKernelStackSegment = KeGetNextKernelStackSegment(&Thread->Tcb, &StackSegment, 0);
    ((void(__fastcall *)(__int64, _KERNEL_STACK_SEGMENT *, _ETHREAD *))Callback)(v10, &v12, a3);
  }
  while( NextKernelStackSegment );
}

Referenced by:

DbgkpLkmdSnapKernelStack
MmOutPageKernelStack
PspThreadDelete