![]() |
#2
xs1002010-09-13 12:34
回复 楼主 xs100
|

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"
#include "time.h"
#define MY_EXPFUNC __declspec(dllexport)
#include <iostream> //内存映射用
//+------------------------------------------------------------------+
char *m=new char [10] ;// ok
char *n=new char [10] ;//
char y[1];//
char y2[10];
char y3[50]="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
//=====================================================================================================
MY_EXPFUNC char* __stdcall Set(char *xx) //传入____ "AAAAAA" ;
{
m=NULL;
strcpy(n,y3);//"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
// m=n;//---------------------------//
return(n);
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall SSend()//数据发送
{
char* lpData = NULL;
HANDLE m_hFileMMF; //
BOOL UpdateData(TRUE);// 更新数据.
m_hFileMMF=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4*1024,"my_my");
// m_hFileMMF=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0,0);
if(NULL==m_hFileMMF)
{
return("01--函数CreateFileMapping创建共享内存失败---返回值是NULL");//
}
lpData=(char*)MapViewOfFile(m_hFileMMF,FILE_MAP_WRITE,0,0,0);
if(NULL==lpData)
{
return("03--函数MapViewOfFile映射到地址空间失败---返回值是NULL");
}
CopyMemory(lpData,n,4*1024);
UnmapViewOfFile(lpData);
lpData = NULL;
CloseHandle(m_hFileMMF);
return("数据发送-----ok");//
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall RRecieve()//数据接收
{
HANDLE hMapping;
char* lpccData;
lpccData=NULL;
HANDLE m_pViewMMFFile;
m_pViewMMFFile= OpenFileMapping(FILE_MAP_ALL_ACCESS,0,"my_my");
if(NULL==m_pViewMMFFile) //
{
return("06--函数OpenFileMapping失败---返回值是NULL");
}
lpccData=(char*)MapViewOfFile(m_pViewMMFFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(NULL==lpccData)
{
return("08--函数MapViewOfFile失败---返回值是NULL");
}
m = lpccData;
UnmapViewOfFile(lpccData);
lpccData=NULL;
CloseHandle(m_pViewMMFFile);// //
return("数据接收-----ok");//
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall Get(char *zz, const int vv)//传出"AAAAAAA"} ;
{
return(m);//
}
//===============================
//===============================
#include <windows.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"
#include "time.h"
#define MY_EXPFUNC __declspec(dllexport)
#include <iostream> //内存映射用
//+------------------------------------------------------------------+
char *m=new char [10] ;// ok
char *n=new char [10] ;//
char y[1];//
char y2[10];
char y3[50]="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
//=====================================================================================================
MY_EXPFUNC char* __stdcall Set(char *xx) //传入____ "AAAAAA" ;
{
m=NULL;
strcpy(n,y3);//"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
// m=n;//---------------------------//
return(n);
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall SSend()//数据发送
{
char* lpData = NULL;
HANDLE m_hFileMMF; //
BOOL UpdateData(TRUE);// 更新数据.
m_hFileMMF=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4*1024,"my_my");
// m_hFileMMF=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0,0);
if(NULL==m_hFileMMF)
{
return("01--函数CreateFileMapping创建共享内存失败---返回值是NULL");//
}
lpData=(char*)MapViewOfFile(m_hFileMMF,FILE_MAP_WRITE,0,0,0);
if(NULL==lpData)
{
return("03--函数MapViewOfFile映射到地址空间失败---返回值是NULL");
}
CopyMemory(lpData,n,4*1024);
UnmapViewOfFile(lpData);
lpData = NULL;
CloseHandle(m_hFileMMF);
return("数据发送-----ok");//
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall RRecieve()//数据接收
{
HANDLE hMapping;
char* lpccData;
lpccData=NULL;
HANDLE m_pViewMMFFile;
m_pViewMMFFile= OpenFileMapping(FILE_MAP_ALL_ACCESS,0,"my_my");
if(NULL==m_pViewMMFFile) //
{
return("06--函数OpenFileMapping失败---返回值是NULL");
}
lpccData=(char*)MapViewOfFile(m_pViewMMFFile,FILE_MAP_ALL_ACCESS,0,0,0);
if(NULL==lpccData)
{
return("08--函数MapViewOfFile失败---返回值是NULL");
}
m = lpccData;
UnmapViewOfFile(lpccData);
lpccData=NULL;
CloseHandle(m_pViewMMFFile);// //
return("数据接收-----ok");//
}
//=====================================================================================================
MY_EXPFUNC char* __stdcall Get(char *zz, const int vv)//传出"AAAAAAA"} ;
{
return(m);//
}
//===============================
//===============================
只有本站会员才能查看附件,请 登录
一共两个外部函数,两个内部函数。
一个函数传进《一串字符串》另一个函数是将传进的《一串字符串》,再原封不动传出去;
内部两个函数为内存文件映射之用,数据发送部份好象-----正常,能返回“ return("数据发送-----ok");// ”,
数据接收部份目前不正常:返回return("06--函数OpenFileMapping失败---返回值是NULL");
好象----函数OpenFileMapping失败,代码需要修改,
请高手帮助指教,为何OpenFileMapping失败 谢谢
下附DLL代码和DLL的全套-dsw文件
[ 本帖最后由 xs100 于 2010-9-13 09:17 编辑 ]