修改 我正在使用C#中的ocx控件。此contrl具有包含数据缓冲区长度和指向该缓冲区的指针的属性。如何使用C#中的某个点来访问/获取/使用该数据。我正在使用Visual Studio 2008。
我在c#中使用.ocx控件。该.ocx具有包含len数据缓冲区和指向数据缓冲区的指针的属性。我如何在c#中使用该指针获取数据?我使用VS C#2008
答案 0 :(得分:3)
您没有提供确切的详细信息,因此根据您的信息进行猜测。您可以找到示例here。我将引用(并简化)相关部分:
// C/C++
int ncWrite(unsigned long DataSize, void* DataPtr)
// C#
[DllImport("Nican.dll")]
unsafe static extern int ncWrite(uint DataSize, byte[] DataPtr);
byte[] DataWrite = {0x23, 0x23, 0x30, 0x03, 0x78, 0xEC, 0xFF, 0xFF };
int status = ncWrite(Marshal.SizeOf(DataWrite), DataWrite);
编辑:随你的信息:
// .ocx
Public Function WriteData(ByVal devIndex As Long, ByVal lpOutData As Long, ByVal cntData As Long) As Long
// C#
[DllImport("TheOcxControl.dll")]
static extern int WriteData(int index, byte[] outputData, int outputDataLength);
byte[] DataToWrite = {0x23, 0x23, 0x30, 0x03, 0x78, 0xEC, 0xFF, 0xFF };
int status = WriteData(index, DataToWrite, Marshal.SizeOf(DataToWrite));
至于到达事件:
// the e variable have devIndex, lenDataBufer, lpDataBufer properties.
// lenDataBufer is size of buffer, lpDataBufer is pointer to data array.
byte[] destination;
Marshal.Copy(lpDataBufer, destination, 0, lenDataBufer);
答案 1 :(得分:0)