dllimport
这个是非托管语言写的dll吧

解决方案 »

  1.   

    下表列出了在 Win32 API(在 Wtypes.h 中列出)和 C 样式函数中使用的数据类型。许多非托管库包含将这些数据类型作为参数传递并返回值的函数。第三列列出了在托管代码中使用的相应的 .NET Framework 内置值类型或类。某些情况下,您可以用大小相同的类型替换此表中列出的类型。Wtypes.h 中的非托管类型  非托管 C 语言类型  托管类名  说明  
    HANDLE 
     void* 
     System.IntPtr 
     在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 64 位。
     
    BYTE 
     unsigned char 
     System.Byte 
     8 位
     
    SHORT 
     short 
     System.Int16 
     16 位
     
    WORD 
     unsigned short 
     System.UInt16 
     16 位
     
    INT 
     int 
     System.Int32 
     32 位
     
    UINT 
     unsigned int 
     System.UInt32 
     32 位
     
    LONG 
     long 
     System.Int32 
     32 位
     
    BOOL 
     long 
     System.Int32 
     32 位
     
    DWORD 
     unsigned long 
     System.UInt32 
     32 位
     
    ULONG 
     unsigned long 
     System.UInt32 
     32 位
     
    CHAR 
     char 
     System.Char 
     用 ANSI 修饰。
     
    LPSTR 
     char* 
     System.String 或 System.Text.StringBuilder
     用 ANSI 修饰。
     
    LPCSTR 
     Const char* 
     System.String 或 System.Text.StringBuilder
     用 ANSI 修饰。
     
    LPWSTR 
     wchar_t* 
     System.String 或 System.Text.StringBuilder
     用 Unicode 修饰。
     
    LPCWSTR 
     Const wchar_t* 
     System.String 或 System.Text.StringBuilder
     用 Unicode 修饰。
     
    FLOAT 
     Float 
     System.Single 
     32 位
     
    DOUBLE 
     Double 
     System.Double 
     64 位
     
    见它们的对应关系。
      

  2.   

    你这个数据类型都比较简单,dllimport时很好处理。
      

  3.   

    1. You don't know the type LPVOID points to, so we can use IntPtr or byte[] for general purpose.2. C# doesn't support optional parameters, so we need to put nulls.
    [DllImport("yourdll.dll")]
    extern static bool YL_DeviceIoControl(
        int dwIoControlCode, 
        byte[] lParam1, byte[] lParam2, byte[] lParam3, byte[] lParam4, 
        ref int lpBytesReturned);public void Test()
    {
        //const int YL_IOCTL_GEN_GETRINGNO = 0;     byte[] bs = new byte[]{0}; 
        int byteReturned = 0;
        YL_DeviceIoControl(YL_IOCTL_GEN_GETRINGNO, bs, null, null, null, ref byteReturned);    byte b = bs[0];                 //<----
    }
      

  4.   

    可以查一下这里
    http://www.pinvoke.net/