LONG StorageSystemFile::dispatchMessage(USHORT usMsg, LONG lParam1, LONG lParam2)
{
  switch (usMsg)
  {
    case MMIOM_IDENTIFYFILE:
      return identifyFile((PSZ)lParam1, (HMMIO)lParam2);

    case MMIOM_OPEN:
      return open((PSZ)lParam1);

    case MMIOM_READ:
      return read((PSZ)lParam1, lParam2);

    case MMIOM_WRITE:
      return write((PSZ)lParam1, lParam2);

    case MMIOM_SEEK:
      return seek(lParam1, lParam2);

    case MMIOM_CLOSE:
      return close((USHORT)lParam1);

    default:
      return defaultResponse(usMsg, lParam1, lParam2);
  }
}
LONG MIDIFormat::dispatchMessage(USHORT usMsg, LONG lParam1, LONG lParam2)
{
  switch (usMsg)
  {
    case MMIOM_GETFORMATINFO:
      return getFormatInfo((PMMFORMATINFO)lParam1);

    case MMIOM_GETFORMATNAME:
      return getFormatName((PSZ)lParam1, lParam2);

    case MMIOM_IDENTIFYFILE:
      return identifyFile((PSZ)lParam1, (HMMIO)lParam2);

    default:
      return defaultResponse();
  }
}
NakedDecoder::NakedDecoder(FileMap* file) :
    RawDecoder(file) {
  identifyFile();
}