c#调用c++dll共享内存需要函数
2012-05-03 10:34
387 查看
调用函数如下,都是项目中用到的函数,这样用到的时候不需要再照着msdn中c++函数一个一个的修改成c#支持的函数了。
//创建文件映射 [DllImport("kernel32.dll", EntryPoint = "CreateFileMapping", SetLastError = true, CharSet = CharSet.Ansi)] public static extern IntPtr CreateFileMapping(int hFile, IntPtr lpAttribute, uint flProtected, uint dwMaximumSizeHigh, uint dwMaximumSizeLow, string lpName); //打开文件映射对象 [DllImport("kernel32.dll", EntryPoint = "OpenFileMapping", SetLastError = true, CharSet = CharSet.Auto)] private static extern IntPtr OpenFileMapping(uint dwDesiredAccess, bool bInheritHandle, String lpName); //把文件数据映射到进程的地址空间 [DllImport("Kernel32.dll")] private static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, uint dwNumberOfBytesToMap); //从调用线程的地址空间释放文件数据映像 [DllImport("Kernel32.dll", EntryPoint = "UnmapViewOfFile", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool UnmapViewOfFile(IntPtr lpBaseAddress); //关闭一个已经打开的文件句柄 [DllImport("kernel32.dll", EntryPoint = "CloseHandle", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool CloseHandle(IntPtr hHandle); //获取最后一个错误信息 [DllImport("kernel32.dll", EntryPoint = "GetLastError", SetLastError = true, CharSet = CharSet.Auto)] private static extern uint GetLastError(); //发送消息需要函数 [DllImport("User32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Ansi)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("User32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Ansi)] public static extern bool PostMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam); // const int ERROR_ALREADY_EXISTS = 183; //OpenFileMapping和MapViewOf函数中,使用的文件访问权限 const int FILE_MAP_COPY = 0x0001; const int FILE_MAP_WRITE = 0x0002; const int FILE_MAP_READ = 0x0004; const int FILE_MAP_ALL_ACCESS = 0x0002 | 0x0004; //CreateFileMapping函数中,文件映射时,保护属性 const int PAGE_READONLY = 0x02; const int PAGE_READWRITE = 0x04; const int PAGE_WRITECOPY = 0x08; const int PAGE_EXECUTE = 0x10; const int PAGE_EXECUTE_READ = 0x20; const int PAGE_EXECUTE_READWRITE = 0x40; // const int INVALID_HANDLE_VALUE = -1;
相关文章推荐
- c#调用c++dll共享内存需要函数
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题(zz)
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C++ 与C#,FLEX之间的函数调用
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C#时常需要调用C++DLL
- 转:使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C# 调用C++的导出函数,含有回掉函数
- C#调用C++函数来与串口通信
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C++怎么调用C#函数
- 在c#里调用C++的dll时,需要注意的一些问题
- 为什么c++程序调用c编译器编译的函数需要在调用前加上extern“C”
- 如何生成DLL文件并导出函数及如何在C++或C#中调用DLL中导出的函数
- C#时常需要调用C++DLL
- C++调用C编译的变量和函数为什么需要extern
- C#时常需要调用C++DLL
- 函数调用,C# 调用Dll中非托管C++代码时,函数参数的类型对照