code: def _find_control_structure(self, start_address, search_length):
          
  
          words = self._read_memory(start_address, search_length, chunk_size=4, join=False)
          found_offset = None
  
          for i, word in enumerate(words):
              if word == ControlStructure.CONTROL_MAGIC_1:
                  if (len(words) - i) < 4:
                      continue
  
                  if words[i + 1] == ControlStructure.CONTROL_MAGIC_2 and words[i + 2] == ControlStructure.CONTROL_MAGIC_3 and words[i + 3] == ControlStructure.CONTROL_MAGIC_4:
                      found_offset = i
                      break
  
          if found_offset is None:
              raise HardwareError("Could not find control structure magic value in search area")
  
          struct_info = words[found_offset + 4]
          _version, _flags, length = struct.unpack("<BBH", struct.pack("<L", struct_info))
  
          if length % 4 != 0:
              raise HardwareError("Invalid control structure length that was not a multiple of 4", length=length)
  
          word_length = length // 4
          control_data = struct.pack("<%dL" % word_length, *words[found_offset:found_offset + word_length])
  
          logger.info("Found control stucture at address 0x%08X, word_length=%d", start_address + 4*found_offset, word_length)
  
          return ControlStructure(start_address + 4*found_offset, control_data)
docs: Find the control structure in RAM for this device.
  
          Returns:
              ControlStructure: The decoded contents of the shared memory control structure
                  used for communication with this IOTile device.