RtlCmDecodeMemIoResource

ULONGLONG __stdcall RtlCmDecodeMemIoResource(PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, PULONGLONG Start){
  ULONGLONG Length; 
  unsigned __int16 Flags; 

  Length = 0i64;
  if( ((Descriptor->Type - 1) & 0xFD) != 0 )
  {
    Flags = Descriptor->Flags;
    if( (Flags & 0x200) != 0 )
    {
      Length = (unsigned __int64)Descriptor->u.Length << 8;
    }
    else if( (Flags & 0x400) != 0 )
    {
      Length = (unsigned __int64)Descriptor->u.Length << 16;
    }
    else if( (Flags & 0x800) != 0 )
    {
      Length = (unsigned __int64)Descriptor->u.Length << 32;
    }
  }
  else
  {
    Length = Descriptor->u.Length;
  }
  if( Start )
    *Start = Descriptor->u.Start.QuadPart;
  return Length;
}

Referenced by:

IopGenericUnpackResource
PnpCmResourcesToIoResources
PnpFilterResourceRequirementsList
PnpIsRangeWithin
PnprAddMemoryResources