У меня проблемы с переносом этого кода взаимодействия с VB6 на C #
VB6:
Type Dpi_t
dpiDrSuPsd(DPI_PRG_LEN) As Byte
dpiMyPort As Long
dpiHostAdr(DPI_MAX_HOST) As Byte
dpiHostCnt As Integer
dpiVoidCom As Long
dpiRspBdy As Long
dpiCmData As Long
dpiRdcxData As Long
dpiLstErr As Long
dpiONoUa As Byte
dpiOTooMuch As Byte
dpiOBar As Byte
dpiVPin As Byte
DpiPin As Long
dpiCda(DPI_CDA_LEN) As Byte
dpiEcCyc(DPI_CYC_LEN) As Byte
dpitemp(6000) As Byte
End Type
C #
[StructLayout(LayoutKind.Sequential)]
public struct Dpi_t
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_PRG_LEN)]
public byte[] dpiDrSuPsd;
public long dpiMyPort;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_MAX_HOST)]
public byte[] dpiHostAdr;
public int dpiHostCnt;
public long dpiVoidCom;
public long dpiRspBdy;
public long dpiCmData;
public long dpiRdcxData;
public long dpiLstErr;
public byte dpiONoUa;
public byte dpiOTooMuch;
public byte dpiOBar;
public byte dpiVPin;
public long DpiPin;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_CDA_LEN)]
public byte[] dpiCda;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_CYC_LEN)]
public byte[] dpiEcCyc;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6000)]
public byte[] dpitemp;
}
Я не могу заставить их соответствовать, и у меня просто закончились идеи. Что вы, ребята, думаете?