带ref参数的c#和pvcs

带ref参数的c#和pvcs,c#,pvcs,C#,Pvcs,我必须从c#调用VM32VBWRAP.dll。它是一个用于从代码管理PVC的库。我可以调用所有方法 没有任何ref参数。但是我不能用ref参数调用方法 我总是会遇到这样的错误: “试图读取或写入受保护的内存。这通常表示其他内存已损坏。” 位于System.StubHelpers.MngdNativeArrayMarshaler.ConvertContentsToManaged(IntPtr pMarshalState、Object&pManagedHome、IntPtr pNativeHome)

我必须从c#调用VM32VBWRAP.dll。它是一个用于从代码管理PVC的库。我可以调用所有方法 没有任何ref参数。但是我不能用ref参数调用方法

我总是会遇到这样的错误:

“试图读取或写入受保护的内存。这通常表示其他内存已损坏。” 位于System.StubHelpers.MngdNativeArrayMarshaler.ConvertContentsToManaged(IntPtr pMarshalState、Object&pManagedHome、IntPtr pNativeHome) 在LibraryPanelo.SourceControl.Pvcs.PvcsGetLockInfoVB(Int32 archiveType、String pathAndFileNameServer、String pathAndFileNameLocal、String usernameInPVCS、Byte[]&版本、Byte[]&版本、Byte[]&usernameOutPVCS、Int16信息、Byte标志)

我的声明是:

[DllImport("VM32VBWRAP.dll", CharSet = CharSet.Ansi, SetLastError = true, 
           EntryPoint = "_wPvcsGetLockInfoVB@36")] 
static extern int PvcsGetLockInfoVB( 
    int archiveType, string pathAndFileNameServer, 
    string pathAndFileNameLocal, string usernameInPVCS,     
    [MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] version, 
    [MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] versionNew,  
    [MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] usernameOutPVCS, 
   short info, byte flag );

任何想法???

完全不知道,但是调用dll方法时是否缺少ref关键字?我在errormessage中看不到它。由于我对签名不是100%清楚,如何从本机代码调用该方法?传递填充有数据的缓冲区,或者获取通过方法分配的缓冲区?您好。。我也面临同样的问题。。有什么想法吗?