C++的.h声明
__declspec(dllimport)
FT_HANDLE WINAPI FT_W32_CreateFile(
LPCSTR lpszName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwAttrsAndFlags,
HANDLE hTemplate
);___________________________________________
C#
using FT_HANDLE=System.IntPtr;
using LPVOID = System.IntPtr;
using LPCSTR=System.String;
using FT_STATUS = System.Int64;
using DWORD = System.UInt64;
using HANDLE = System.IntPtr;
using BOOL=System.Boolean ;
___________________________________________________________________
[DllImport("FTD2XX.Dll")]
public static extern FT_HANDLE FT_W32_CreateFile(LPCSTR lpszName, DWORD dwAccess, DWORD dwShareMode, out _SECURITY_ATTRIBUTES
lpSecurityAttributes, DWORD dwCreate, DWORD
dwAttrsAndFlags, HANDLE hTemplate);
public struct _SECURITY_ATTRIBUTES
{
public DWORD nLength;
public LPVOID lpSecurityDescriptor;
public BOOL bInheritHandle;
} ; public static void SendPackage(string str)
{ FT_STATUS ftStatus;
FT_HANDLE ftHandle; string buf="usb";
_SECURITY_ATTRIBUTES tmp;
//ftStatus = FT_ListDevices(0, Buf, FT_LIST_BY_INDEX | FT_OPEN_BY_SERIAL_NUMBER);
ftHandle = FT_W32_CreateFile(buf, (ulong)0x80000000L | 0x40000000L, 0, out tmp, (ulong)3, (ulong)0x00000080 | 0x40000000 | 1, (IntPtr)0);
}提示出错:
对 PInvoke 函数“ProtocolX!ProtocolX.ProtocolUsb2_0_1::FT_W32_CreateFile”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
请高手帮助
__declspec(dllimport)
FT_HANDLE WINAPI FT_W32_CreateFile(
LPCSTR lpszName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwAttrsAndFlags,
HANDLE hTemplate
);___________________________________________
C#
using FT_HANDLE=System.IntPtr;
using LPVOID = System.IntPtr;
using LPCSTR=System.String;
using FT_STATUS = System.Int64;
using DWORD = System.UInt64;
using HANDLE = System.IntPtr;
using BOOL=System.Boolean ;
___________________________________________________________________
[DllImport("FTD2XX.Dll")]
public static extern FT_HANDLE FT_W32_CreateFile(LPCSTR lpszName, DWORD dwAccess, DWORD dwShareMode, out _SECURITY_ATTRIBUTES
lpSecurityAttributes, DWORD dwCreate, DWORD
dwAttrsAndFlags, HANDLE hTemplate);
public struct _SECURITY_ATTRIBUTES
{
public DWORD nLength;
public LPVOID lpSecurityDescriptor;
public BOOL bInheritHandle;
} ; public static void SendPackage(string str)
{ FT_STATUS ftStatus;
FT_HANDLE ftHandle; string buf="usb";
_SECURITY_ATTRIBUTES tmp;
//ftStatus = FT_ListDevices(0, Buf, FT_LIST_BY_INDEX | FT_OPEN_BY_SERIAL_NUMBER);
ftHandle = FT_W32_CreateFile(buf, (ulong)0x80000000L | 0x40000000L, 0, out tmp, (ulong)3, (ulong)0x00000080 | 0x40000000 | 1, (IntPtr)0);
}提示出错:
对 PInvoke 函数“ProtocolX!ProtocolX.ProtocolUsb2_0_1::FT_W32_CreateFile”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
请高手帮助
解决方案 »
- wpf DirectoryInfo GetFiles() 文件顺序
- 想咨询点wap流量计费的事情
- IMAGE控件就是IMAGELIST吗?
- 关于timer的使用问题
- 初学C#,问个简单的问题,多态是什么到底有什么用?
- 数据库问题:当一个业务要对数据库进行多步操作,我该怎么办?
- 请问如何在C#的FORM里加"打开文件"控件??
- 在global.asax.cs中如何写application?????谢谢
- 都说C#就是java,大侠们能否就C#与java作一个详细的对比??
- C#打开文件对话框修改默认路径 使用SendMessage的方式
- 谁有vs2005windows窗体的水晶报表视频教程
- 同样的做法在VS2003下可以运行,为什么在VS2005下不能运行,请高手指点.(在VB.NET中也有发贴子)
private static extern int CreateFile(
string lpFileName, // file name
uint dwDesiredAccess, // access mode
int dwShareMode, // share mode
int lpSecurityAttributes, // SD
int dwCreationDisposition, // how to create
int dwFlagsAndAttributes, // file attributes
int hTemplateFile // handle to template file
);
别人把 _SECURITY_ATTRIBUTES这个结构体直接用int型替换
这个结构体一般不用,它涉及到安全问题,一般用不到,你再试试吧