请高手帮助指教,为何OpenFileMapping失败 谢谢
编写了一个DLL,通过编译.程序代码:
#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);// } //=============================== //===============================
请求帮助的DLL的包.rar
(845.11 KB)
一共两个外部函数,两个内部函数。
一个函数传进《一串字符串》另一个函数是将传进的《一串字符串》,再原封不动传出去;
内部两个函数为内存文件映射之用,数据发送部份好象-----正常,能返回“ return("数据发送-----ok");// ”,
数据接收部份目前不正常:返回return("06--函数OpenFileMapping失败---返回值是NULL");
好象----函数OpenFileMapping失败,代码需要修改,
请高手帮助指教,为何OpenFileMapping失败 谢谢
下附DLL代码和DLL的全套-dsw文件
[ 本帖最后由 xs100 于 2010-9-13 09:17 编辑 ]