VB.NET调用非托管DLL组件问题(传递给系统调用的数据区域太小)

//定义结构
Structure   cdSourceInfo
                Dim   SurceType   As   Integer        
                Dim   rsrvd   As   Integer   '/*   Reserved                  
                <VBFixedString(64),   System.Runtime.InteropServices.MarshalAs   (System.Runtime.InteropServices.UnmanagedType.ByValArray,   SizeConst:=64)>   Public   Name()   As   Char   '/*   Device   model   name  
                <VBFixedString(64),   System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,   SizeConst:=64)>   Public   NameInOS()   As    
                Dim   PortType   As   Integer  
                Dim   u   As   cdPortDescripUnion  
End   Structure

//调用API
Declare   Function   CDOpenSource   Lib   "CDSDK.dll"   (ByRef   pSourceInfo   As   cdSourceInfo,   ByRef   phSource   As   Integer)   As   Integer
//调用函数
CDOpenSource(m_SourceInfo,   m_hSource)         参数值都传过来了

说明:
1、是佳能SDK开发包里语句(以前是VB6.0代码,通过visual   studio   2005自动升级过来到.NET的)
2、这些代码是从VB6.0转换过来的,编译能通过,在网上查了说可能是VB6到VB.NET一些数据类型不匹配

运行有时提示错误:
未处理的“System.Runtime.InteropServices.COMException”类型的异常出现在   RelCtrl.exe   中。
其他信息:   传递给系统调用的数据区域太小。   (异常来自   HRESULT:0x8007007A)

还有时提示这错误:
未处理的“System.AccessViolationException”类型的异常出现在   RelCtrl.exe   中。
其他信息:   尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

这问题憋了好几天了,一直解决不了,请问高手解决
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值