Package ghidra.app.util.bin.format.pe.cli

# Class CliMetadataDirectory

java.lang.Object
ghidra.app.util.bin.format.pe.DataDirectory
ghidra.app.util.bin.format.pe.cli.CliMetadataDirectory

All Implemented Interfaces:
  `PeMarkupable`, `StructConverter`

public class CliMetadataDirectory extends DataDirectory implements StructConverter
The Metadata directory pointed found in `ImageCor20Header`.

- ## Field Summary

  ### Fields inherited from class ghidra.app.util.bin.format.pe.DataDirectory

  `hasParsed, IMAGE_SIZEOF_IMAGE_DIRECTORY_ENTRY, ntHeader, reader, size, TITLE, virtualAddress`

  ### Fields inherited from interface ghidra.app.util.bin.StructConverter

  `ASCII, BYTE, DWORD, IBO32, IBO64, POINTER, QWORD, SLEB128, STRING, ULEB128, UTF16, UTF8, VOID, WORD`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CliMetadataDirectory(NTHeader ntHeader, BinaryReader reader)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getDirectoryName()`
  `CliMetadataRoot`
  `getMetadataRoot()`
  Gets the Metadata root.
  `void`
  `markup(Program program, boolean isBinary, TaskMonitor monitor, MessageLog log, NTHeader nt)`
  Marks up a PE structure.
  `boolean`
  `parse()`
  Parses this data directory.
  `DataType`
  `toDataType()`
  Returns a structure datatype representing the contents of the implementor of this interface.

  ### Methods inherited from class ghidra.app.util.bin.format.pe.DataDirectory

  `createDirectoryBookmark, createFragment, createTerminatedString, getPointer, getSize, getVirtualAddress, hasParsedCorrectly, processDataDirectory, setBookmark, setEolComment, setPlateComment, setPreComment, setSize, setVirtualAddress, toString, va, validateSize, writeBytes`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### CliMetadataDirectory

    public CliMetadataDirectory(NTHeader ntHeader, BinaryReader reader) throws IOException
    Throws:
      `IOException`

- ## Method Details

  - ### getMetadataRoot

    public CliMetadataRoot getMetadataRoot()
    Gets the Metadata root.
    Returns:
      header The Metadata root.

  - ### getDirectoryName

    public String getDirectoryName()
    Specified by:
      `getDirectoryName` in class `DataDirectory`

  - ### parse

    public boolean parse() throws IOException
    Description copied from class: `DataDirectory`
    Parses this data directory.
    Specified by:
      `parse` in class `DataDirectory`
    Returns:
      True if parsing completed successfully; otherwise, false.
    Throws:
      `IOException` - If there was an IO problem while parsing.

  - ### markup

    public void markup(Program program, boolean isBinary, TaskMonitor monitor, MessageLog log, NTHeader nt) throws DuplicateNameException, CodeUnitInsertionException, IOException, MemoryAccessException
    Description copied from interface: `PeMarkupable`
    Marks up a PE structure.
    Specified by:
      `markup` in interface `PeMarkupable`
    Parameters:
      `program` - The program to markup.
      `isBinary` - True if the program is binary; otherwise, false.
      `monitor` - The monitor.
      `log` - The log.
      `nt` - The PE's NT Header structure.
    Throws:
      `DuplicateNameException`
      `CodeUnitInsertionException`
      `IOException`
      `MemoryAccessException`

  - ### toDataType

    public DataType toDataType() throws DuplicateNameException
    Description copied from interface: `StructConverter`
    Returns a structure datatype representing the contents of the implementor of this interface.

    For example, given:

         class A {
             int foo;
             double bar;
         }

    The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.

    Specified by:
      `toDataType` in interface `StructConverter`
    Returns:
      returns a structure datatype representing the implementor of this interface
    Throws:
      `DuplicateNameException` - when a datatype of the same name already exists
    See Also:
      - `StructureDataType`