def get_value(buf, boot_sector)
      # Prep a buffer to pass to subobjects.
      if isResident?
        # Resident attributes are after header res struct & name.
        abuf = buf[@specific['value_offset'], @specific['value_length']]
      else
        # Nonresident attributes are defined by data runs.
        alen = @specific['data_size']
        alen = buf.size if alen == 0
        abuf = DataRun.new(boot_sector, buf[@specific['mapping_pairs_offset'], alen], self)
      end

      abuf
    end
def get_value(buf, boot_sector)
      # Prep a buffer to pass to subobjects.
      if isResident?
        # Resident attributes are after header res struct & name.
        abuf = buf[@specific['value_offset'], @specific['value_length']]
      else
        # Nonresident attributes are defined by data runs.
        alen = @specific['data_size']
        alen = buf.size if alen == 0
        abuf = DataRun.new(boot_sector, buf[@specific['mapping_pairs_offset'], alen], self)
      end

      abuf
    end
Attribute is referenced in an index
 (has implications for deleting and modifying the attribute).
 NOTE: All the subordinate objects (attrib header & attributes) take
       a buffer (a packed string) starting at the start of the sub object.