HalpDmaIndexToTranslationEntry

_HALP_DMA_TRANSLATION_ENTRY *__stdcall HalpDmaIndexToTranslationEntry(
        _HALP_DMA_ADAPTER_OBJECT *Adapter,
        _HALP_DMA_TRANSLATION_BUFFER **TranslationBufferOut){
  _HALP_DMA_TRANSLATION_BUFFER **v2; 
  _HALP_DMA_TRANSLATION_BUFFER *ContiguousTranslations; 
  unsigned int EntryCount; 

  ContiguousTranslations = Adapter->ContiguousTranslations;
  while( 1 )
  {
    if( !ContiguousTranslations )
      return 0i64;
    EntryCount = ContiguousTranslations->EntryCount;
    if( (unsigned int)TranslationBufferOut < EntryCount )
      break;
    ContiguousTranslations = ContiguousTranslations->Next;
    LODWORD(TranslationBufferOut) = (_DWORD)TranslationBufferOut - EntryCount;
  }
  if( v2 )
    *v2 = ContiguousTranslations;
  return &ContiguousTranslations->Entries[(unsigned int)TranslationBufferOut];
}

Referenced by:

HalpDmaAllocateScatterPagesFromContiguousPoolAtHighLevelV2
HalpDmaAllocateScatterPagesFromContiguousPoolAtHighLevelV3
HalpDmaAllocateScatterPagesFromContiguousPoolV2
HalpDmaAllocateScatterPagesFromContiguousPoolV3
HalpDmaLinkContiguousTranslations