/// <summary>
        /// Get the file offset and file length of a file enbedded within another larger file.
        /// </summary>
        /// <param name="sndfile">Audio file to scan for embedded files.</param>
        /// <returns></returns>
        public LibsndfileEmbedFileInfo GetEmbedFileInfo(IntPtr sndfile)
        {
            var fileInfo = new LibsndfileEmbedFileInfo();

            using (var memory = m_Marshaller.Allocate(fileInfo))
            {
                var retval = m_Api.Command(sndfile, LibsndfileCommand.GetEmbedFileInfo, memory, memory.Size);
                if (!LibsndfileCommandUtilities.IsValidResult(sndfile, LibsndfileCommand.GetEmbedFileInfo, retval))
                {
                    throw new LibsndfileException("Unable to get embedded file info for the given file.");
                }

                return(m_Marshaller.MemoryHandleTo <LibsndfileEmbedFileInfo>(memory));
            }
        }
        /// <summary>
        /// Get the file offset and file length of a file enbedded within another larger file.
        /// </summary>
        /// <param name="sndfile">Audio file to scan for embedded files.</param>
        /// <returns></returns>
        public LibsndfileEmbedFileInfo GetEmbedFileInfo(IntPtr sndfile)
        {
            var fileInfo = new LibsndfileEmbedFileInfo();
            using (var memory = m_Marshaller.Allocate(fileInfo))
            {
                var retval = m_Api.Command(sndfile, LibsndfileCommand.GetEmbedFileInfo, memory, memory.Size);
                if (!LibsndfileCommandUtilities.IsValidResult(sndfile, LibsndfileCommand.GetEmbedFileInfo, retval))
                    throw new LibsndfileException("Unable to get embedded file info for the given file.");

                return m_Marshaller.MemoryHandleTo<LibsndfileEmbedFileInfo>(memory);
            }
        }