尝试调用Dll,但该方法有一个复杂的结构类型,我可以';不要在.Net中定义它
本文关键字:Net 定义 我可以 结构 Dll 调用 方法 复杂 有一个 类型 | 更新日期: 2023-09-27 18:20:07
C++中定义的结构是:
typedef struct _DEVICE_PATH_LIST_
{
int NumDevice;
TCHAR *devicePath[DEVICE_PATH_LIST_SIZE];
} DEVICE_PATH_LIST;
C++函数的定义是:
LandiWin_iGetDevicePathList( int iDeviceType, DEVICE_PATH_LIST * devicePathList);
然后我想调用那个方法,所以我需要定义一个可以表示DEVICE_PATH_LIST
的结构。这是我在C#中的定义:
[StructLayout(LayoutKind.Sequential)]
public unsafe struct DevicePathType
{
public int NumDevice;
[MarshalAs(UnmanagedType.ByValArray,SizeConst=32)]
public char*[] devicePath;
}
但这是不对的,我也尝试了所有其他类型的,但都失败了。请帮我定义一个正确的结构。
类似于C++的代码:
typedef struct _DEVICE_PATH_LIST_
{
int NumDevice;
TCHAR *devicePath[DEVICE_PATH_LIST_SIZE];
} DEVICE_PATH_LIST;
C#的代码需要像:
[StructLayout(LayoutKind.Sequential)]
public struct DevicePathType
{
public int NumDevice;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public IntPtr[] devicePath;
}