CmListGetNextElement

NTSTATUS __stdcall CmListGetNextElement(LIST_ENTRY *ListHead, LIST_ENTRY **ListIterator, INT64 FieldOffset){
  LIST_ENTRY *Flink; 

  Flink = *ListIterator;
  if( !*ListIterator )
  {
    Flink = ListHead->Flink;
    *ListIterator = ListHead->Flink;
  }
  if( ListHead == Flink )
    return 0;
  *ListIterator = Flink->Flink;
  return(_DWORD)Flink - FieldOffset;
}

Referenced by:

CmGetVisibleMaxNameLenAndClassLen
CmGetVisibleSubkeyCount
CmSnapshotRMTxArray
CmUnRegisterCallback
CmpCleanupLightWeightPrepare
CmpCommitPreparedLightWeightTransaction
CmpFindSubKeyByNumberEx
CmpIsCmRm
CmpIsKeyDeletedForKeyBody
CmpIsKeyStackDeleted
CmpLightWeightUpdateModificationActions
CmpLightWeightUpdateSharedSetValueData
CmpLogCheckpoint
CmpPerformKeyBodyDeletionCheck
CmpPrepareLightWeightTransaction
CmpRmAnalysisPhase
CmpRmUnDoPhase
CmpSearchForTrans
CmpTransMgrCommit
CmpTransMgrPrepare
CmpTransMgrRollback
CmpWalkOneLevel