文章1:http://www.bianceng.cn/Programming/csharp/201107/27601_2.htm
相关的代码:
源码(工程文件)下载地址:
http://download.csdn.net/source/798731
本工程在以下环境下编译通过:
Windows XP SP3
Microsoft VisualC# 2005
Microsoft VisualStudio 2005 V8.0.50727.42
Microsoft .NET Framework V2.0.50727
/:
文章2: 百度的一篇文章 http://wenku.baidu.com/view/ebee66d0b9f3f90f76c61bf6.html
///
文章3:原文:http://blog.csdn.net/yefanqiu/article/details/1717458
VC++的共享内存操作代码实现起来相对比较容易,但是用C#语言来实现,就有一定难度,由于工作需要,把以前VC开发的共享内存代码要用C#实现,别说,还费了不少周折,毕竟C#操作API函数和地址指针不是那么直接,还好,总算完成了,效果还不错。
共享内存操作类:
using
System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ShareMemLib
{
public class ShareMem
{
[DllImport( " user32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr CreateFileMapping(int hFile, IntPtr lpAttributes, uint flProtect, uint dwMaxSizeHi, uint dwMaxSizeLow, string lpName);
一篇关于CreateFileMapping使用方法的blog http://blog.csdn.net/khuang2008/article/details/3949720
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr OpenFileMapping(int dwDesiredAccess,[MarshalAs(UnmanagedType.Bool)] bool bInheritHandle,string lpName);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr MapViewOfFile(IntPtr hFileMapping,uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow,uint dwNumberOfBytesToMap);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern bool UnmapViewOfFile(IntPtr pvBaseAddress);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern bool CloseHandle(IntPtr handle);
[DllImport( " kernel32 " , EntryPoint
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ShareMemLib
{
public class ShareMem
{
[DllImport( " user32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr CreateFileMapping(int hFile, IntPtr lpAttributes, uint flProtect, uint dwMaxSizeHi, uint dwMaxSizeLow, string lpName);
一篇关于CreateFileMapping使用方法的blog http://blog.csdn.net/khuang2008/article/details/3949720
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr OpenFileMapping(int dwDesiredAccess,[MarshalAs(UnmanagedType.Bool)] bool bInheritHandle,string lpName);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern IntPtr MapViewOfFile(IntPtr hFileMapping,uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow,uint dwNumberOfBytesToMap);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern bool UnmapViewOfFile(IntPtr pvBaseAddress);
[DllImport( " Kernel32.dll " , CharSet = CharSet.Auto)]
public static extern bool CloseHandle(IntPtr handle);
[DllImport( " kernel32 " , EntryPoint