这个是结构体的定义
 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        public struct FMP_OPEN_STRUCT
        {
            public string lpFileName;
            public Int64 dwCallBack;
            public byte[] reserved;
        }下面是方法的传递的方法 最后一个就是结构体 他好象转成DWORD 可是C#里面好象没有DWORD类型 我用INT转是转不了的谁告诉我这个方法应该怎么传.
#define FMP_OPEN                        0x01
#define FMPF_BUFFERS                    0x0002SendDriverMessage(hReelDrv,0x4000+1,
MAKELPARAM(MAKEWORD(FMP_OPEN,0),FMPF_BUFFERS),(DWORD)&FMPOpenStruct);

解决方案 »

  1.   

    无法将类型为“FMP_OPEN_STRUCT”的对象强制转换为类型“System.IConvertible”。
      

  2.   

    SendDriverMessage(hReelDrv,0x4000+1, 
    MAKELPARAM(MAKEWORD(FMP_OPEN,0),FMPF_BUFFERS),(System.UInt32)&FMPOpenStruct);
      

  3.   

    (System.UInt32)&FMPOpenStruct;这个语句可以被C# 接受?
      

  4.   

    传的是地址改用System.Intptr ,
    .net下
    可以用
    Marshal.StructureToPtr 获得指针
      

  5.   

     FMP_OPEN_STRUCT dm = new FMP_OPEN_STRUCT();
                dm.lpFileName = @"D:\1.mpg";
                dm.dwCallBack = 0;
                dm.reserved = new byte[8];            IntPtr ptr = new IntPtr();
                //object A = Marshal.PtrToStructure(ptr, typeof(FMP_OPEN_STRUCT));
                Marshal.StructureToPtr(dm, ptr, true);这样写对么 怎么会出错呢 我比较笨 不好意思哦