C#问题
各位前辈 麻烦看下 下面是我写的C#代码 过程就是这样的 需要两次调用ETEnum函数 第一次调用时第一个参数需要给一个空值 小弟刚刚学习写程序不知如何实现 各位大侠多帮忙啊 跪求!
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace et199dll
{
class Program
{
[StructLayout(LayoutKind.Sequential)]
unsafe public struct ET_CONTEXT
{
ulong dwIndex;
ulong dwVersion;
IntPtr hLock;
ulong wAtrLen;
ulong dwCustomer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
byte [] reserve;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
byte [] bAtr;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
byte [] bID;
}
[DllImport("ET199_32.dll")]
unsafe public static extern ulong ETEnum(ref ET_CONTEXT pETContextList,ref ulong pdwDeviceCount);
[DllImport("ET199_32.dll")]
unsafe public static extern ulong ETOpen(ref ET_CONTEXT pETCtx);
//[DllImport("ET199_32.dll")]
unsafe static void Main(string[] args)
{
ulong dwRet;
ulong dwCount = 0;
ET_CONTEXT ContextList = new ET_CONTEXT();
dwRet = ETEnum(null, ref dwCount);
dwRet = ETEnum(ref ContextList, ref dwCount);
Console.WriteLine("{0}{1}","Find ET199: ",dwCount);
Console.ReadKey();
}
}
}