[阅读: 423] 2005-05-27 06:43:08
初试化部分:
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
hMapHandle=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,1000*sizeof(TCHAR),CallerMapName);
if(hMapHandle!=NULL)
{ //FILE *pf=fopen("c:\\spiLog.txt","a"); //注释的代码供调试,这里没问题
//fprintf(pf,"Mapping Created!\n");
TCHAR * p=(TCHAR *)MapViewOfFile(hMapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
if(p!=NULL)
{
//fprintf(pf,"View Mapped!\n");
memset(p,0,1000*sizeof(TCHAR));
UnmapViewOfFile(p);
}
CloseHandle(hMapHandle);
//fclose(pf);
};
return 1;
}
DLL内的函数设置部分:
hMapHandle=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,1000,CallerMapName);
if(hMapHandle!=NULL)
{ fprintf(pf,"Map opened!\n");
TCHAR *p=(TCHAR *)MapViewOfFile(hMapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
if(p!=NULL)
{ fprintf(pf,"View mapped!\n");
CallerLength=GetModuleFileName(NULL,CallerName,MAX_PATH);
wcscpy(p,CallerName);
fwprintf(pf,p); //这里没问题,正确显示
UnmapViewOfFile(p);
};
CloseHandle(hMapHandle);
};
程序访问部分:
void __fastcall TForm1::btnTestClick(TObject *Sender)
{
HANDLE hFilemap=OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,CallerMapName);
//HANDLE hFilemap=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,1000*sizeof(TCHAR),CallerMapName);
TCHAR *p=(TCHAR *)MapViewOfFile(hFilemap,FILE_MAP_ALL_ACCESS,0,0,0);
ShowMessage(p); // 问题就在这里,显示空白。。。
UnmapViewOfFile(p);
CloseHandle(hFilemap);
return;
}
以上程序中字符串变量均为TCHAR。