API :   INT  WINAPI  CmdGetFPMBID( UINT8  *nCount, UCHAR   *bStream, UINT16 UserID, UINT16 nSize );这样声明可以吗,应该怎么把得到的bstream内容写到XXX.FPM文件上呢,麻烦给个示例,谢谢大家!
      
        /*
         * 获取指定用户ID的指纹模板 
         * 
         * 参数 UserID 影响到的用户ID
         * 参数 nCount 用于存储从设备上实际获取到的用户指纹模板数量的内存地址
         * 参数 bStream 用于存储从设备上获取的用户指纹模板数据的存放的起始内存地址
         * 参数 nSize 预分配的由bStream涵盖的内存空间可以容纳的用户指纹模板数量, 应不小于设备由UserID 指定的用户的指纹枚数。
         * 注意事项 :   一个指纹模板数据需要 512 字节来存储。
         * 
         */
        [DllImport("FFI.dll")]
         public static extern int CmdGetFPMBID(ref Byte nCount,  Byte[] bStrem, UInt16 UserID, UInt16 nSize);

解决方案 »

  1.   

    你确认bStrem是数组吗,如果是,要根据实际情况,可以使用ref 来修饰
      

  2.   


    bStream用于存储从设备上获取的用户指纹模板数据的存放的起始内存地址,我觉得返回的值如果转成整形应是类似415211200这样的地址值,您怎么看呀?好像用string不大好这里,要是换成IntPtr怎么给他一个初值呢,这样可以吗  InttPtr bSream = Marshal.AllocHGlobal(512);[DllImport("FFI.dll")]
             public static extern int CmdGetFPMBID(ref Byte nCount,  ref IntPtr bStrem, UInt16 UserID, UInt16 nSize);