这是读取MP3文件信息的代码,跟你的要求相似。using System.Runtime.InteropServices;public class Mp3
{
[StructLayoutAttribute(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1, Size=128)]
private struct Mp3Info
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=3)]
                   public byte[] Tag; [MarshalAs(UnmanagedType.ByValArray, SizeConst=30)]
public byte[] Title; [MarshalAs(UnmanagedType.ByValArray, SizeConst=30)]
public byte[] Artist; [MarshalAs(UnmanagedType.ByValArray, SizeConst=30)]
public byte[] Album;

public int Year; [MarshalAs(UnmanagedType.ByValArray, SizeConst=30)]
public byte[] Common;

public byte Genre;
} Mp3Info m_info; public Mp3(string sFileName)
{
//设置缓冲区
Type t=Type.GetType(this.GetType().FullName  + "+Mp3Info");
byte[] Buffer=new byte[Marshal.SizeOf(t)]; //读取数据
System.IO.Stream stream=System.IO.File.Open(sFileName, System.IO.FileMode.Open);
stream.Seek(-Buffer.Length, System.IO.SeekOrigin.End);
stream.Read(Buffer, 0, Buffer.Length);
stream.Close(); //转换为结构
m_info=(Mp3Info)Marshal.PtrToStructure(
Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), 
t);
} public string Tag()
{
return System.Text.Encoding.Default.GetString(m_info.Tag);
} public string Title()
{
return System.Text.Encoding.Default.GetString(m_info.Title);
}
//
//其它的就不写了
//}