C# PInvoke从用C编译的DLL中获取的函数

C# PInvoke从用C编译的DLL中获取的函数,c#,c,pinvoke,C#,C,Pinvoke,我有下面的C函数 typedef struct ekeycore_ctx_ ekeycore_ctx; typedef struct ekeycore_enum_ ekeycore_enum; typedef struct ekeycore_device_ { char *serial; char *portname; char *node; BOOL present; BOOL used; } ekeycore_device; typedef st

我有下面的C函数

typedef struct ekeycore_ctx_ ekeycore_ctx;

typedef struct ekeycore_enum_ ekeycore_enum;

typedef struct ekeycore_device_ {
    char *serial;
    char *portname;
    char *node;
    BOOL present;
    BOOL used;
} ekeycore_device;

typedef struct ekeycore_simple_ ekeycore_simple;

typedef enum {
    EKEYCORE_OK = 0,              /* everything was fine */
    EKEYCORE_NOMEM = 1,           /* out of memory */
    EKEYCORE_NODEVICE = 2,        /* no devices are available */
    EKEYCORE_TIMEOUT = 3,         /* key did not respond to request */
    EKEYCORE_FAULTY = 4,          /* device has reported faulty/attacked */
    EKEYCORE_UNKNOWN = 5          /* unknown error */
} ekeycore_result;

EKEYCORE_API ekeycore_result ekeycore_simple_get(ekeycore_simple *ctx, unsigned char *buff, size_t buffz)

我需要从C#调用这个函数(ekeycore_simple_get),我该怎么做?上面的变量类型将如何转换?

您可能需要一些StackOverflow,以便有人为您解决所有这些问题,但是MSDN上有关于编组结构的好信息(请参阅下面的链接)

以下是我用来参考p/invoke技术的地方:

  • (质量参差不齐)
  • .NET framework源代码-对于常见的Windows DLL标志,它比pinvoke.NET好得多

ekeycore\u simple\u get
接受指向
ekeycore\u simple
的指针,但您不提供此结构的定义。