typedef struct SKYETEK_READER
{
  LPSKYETEK_ID              id;
  char                      model[128];
  char                      serialNumber[128];
  char                      firmware[128];
  char                      manufacturer[128];
  char                      rid[128];
  char                      friendly[256];
  unsigned char             isBootload;
  unsigned char             sendRID;
  LPSKYETEK_PROTOCOL        lpProtocol;
LPSKYETEK_DEVICE          lpDevice;
  void                      *user;
  void                      *internal;
} SKYETEK_READER, *LPSKYETEK_READER;typedef struct SKYETEK_ID 
{
    unsigned char   *id;
    unsigned int    length;
} SKYETEK_ID, *LPSKYETEK_ID;typedef struct SKYETEK_PROTOCOL 
{
  unsigned short version;
  void *internal;
} SKYETEK_PROTOCOL, *LPSKYETEK_PROTOCOL;typedef struct SKYETEK_ID 
{
    unsigned char   *id;
    unsigned int    length;
} SKYETEK_ID, *LPSKYETEK_ID;typedef struct SKYETEK_DEVICE 
{
  char                  friendly[64];
  char                  type[64];
  char                  address[256];
  unsigned char         asynchronous;
  unsigned int          major;
  SKYETEK_DEVICE_FILE   readFD;
  SKYETEK_DEVICE_FILE   writeFD;
  void                  *user;
  void                  *internal;
} SKYETEK_DEVICE, *LPSKYETEK_DEVICE;/**
 * This discovers all of the readers to be found on the devices that
 * are passed in.
 * @param lpDevices Point to an array of devices
 * @param deviceCount Count of devices in the array
 * @param lpReaders Pointer to array to popluate.  This function will allocate memory.
 * @return Number of readers found (size of readers array) 
 */
SKYETEK_API unsigned int 
SkyeTek_DiscoverReaders(
    LPSKYETEK_DEVICE     *lpDevices, 
    unsigned int         deviceCount, 
    LPSKYETEK_READER     **lpReaders
    );

解决方案 »

  1.   

    这些都要 转换的
    转换类型 可以去参考C-C#
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct SetTimer_Struct
        {
            public int nVer;
            public int nTimerID;
            public int Interval;
            public string parm;
        }
      

  2.   

    [StructLayout(LayoutKind.Sequential)] 
    public struct SKYETEK_READER
    {
    public SKYETEK_ID id;  //---此处应是个结构指针
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] model;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] serialNumber;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] firmware;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] manufacturer;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] rid;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=256)]   public char[] friendly;
    public char isBootload;
    public char sendRID;
    public SKYETEK_PROTOCOL        lpProtocol; //---此处应是个结构指针
    public SKYETEK_DEVICE          lpDevice; //---此处应是个结构指针
    public System.IntPtr user;
    public System.IntPtr internals;
    }   [StructLayout(LayoutKind.Sequential)] 
    public struct SKYETEK_TAG 
    {
    SKYETEK_TAGTYPE     type;
    SKYETEK_ID        id;
    public short      afi;
    public short      session;
    public char       rf;
    [MarshalAs(UnmanagedType.ByValArray,  SizeConst=128)]   public char[] friendly;
    public System.IntPtr user;
    public System.IntPtr internals;
    } 我已经试转了,但对结构指针转换还有疑问,请高手指点
      

  3.   

    typedef struct SKYETEK_READER
    {
      LPSKYETEK_ID              id;
      char                      model[128];
      char                      serialNumber[128];
      char                      firmware[128];
      char                      manufacturer[128];
      char                      rid[128];
      char                      friendly[256];
      unsigned char             isBootload;
      unsigned char             sendRID;
      LPSKYETEK_PROTOCOL        lpProtocol;
    LPSKYETEK_DEVICE          lpDevice;
      void                      *user;
      void                      *internal;
    } SKYETEK_READER, *LPSKYETEK_READER;请高手对上面的结构来个正解