谁能给看看这段代码是什么意思?简直不知所云,还敢共享!!!
void CServerDlg::IfClone()
{
HANDLE hmemshare;
hmemshare =CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MEMSHARE");
if(hmemshare==NULL)
{
TRACE("\n failed to CreateFileMapping! ");
return;
}
char * szSingle; // dxj =new char[512]; //dxj --- //where to delete ?
szSingle=(char *)MapViewOfFile(hmemshare,FILE_MAP_ALL_ACCESS,0,0,0);
if(szSingle==NULL)
{
TRACE("\n failed to MapViewOfFile() ");
return;
}
CString strSingleCopy=CString(szSingle);
int nIndex=strSingleCopy.Find(_TEXT(".EXE"));
if(nIndex!=-1)
{
CString szPathOrig=strSingleCopy.Left(nIndex+3+1);
szSingle+=(nIndex+3+1);
//AfxMessageBox(szSingle);
HANDLE hProcessOrig=(HANDLE)atoi(szSingle);
szSingle-=(nIndex+3+1);
char * mayend="MAYEND";
strcpy(szSingle,mayend);
szSingle[6]=NULL;
WaitForSingleObject(hProcessOrig,INFINITE);
CloseHandle(hProcessOrig);
DeleteFile(szPathOrig);
UnmapViewOfFile(szSingle);
CDialog::OnOK();
}
}
问题点数:50、回复次数:5Top
1 楼huaboy408(Thinking...)回复于 2004-08-03 11:15:12 得分 0
好像是刻录方面的
没有研究Top
2 楼lizmei001(暗黑)回复于 2004-08-03 11:18:55 得分 0
只知道建立了个内存映谢文件
szSingle+=(nIndex+3+1); 不懂
HANDLE hProcessOrig=(HANDLE)atoi(szSingle); 不懂
upTop
3 楼dxj2000yt(桃李者)回复于 2004-08-03 11:22:49 得分 0
算了,我跟踪了一下,这段代码根本就步发挥作用。作者可能忘了删掉。--垃圾代码Top
4 楼sjzxyg(小小鸟)回复于 2004-08-03 11:23:10 得分 0
把进程共享内存写的这么烂,第一次见到
而且如果在共享区中查找不到.EXE,竟然连句柄都没有关闭,呵呵Top
5 楼skyonline(山中过客)回复于 2004-08-03 12:06:46 得分 50
//////////////这一段传见共享内存////////////////////////////////
HANDLE hmemshare;
hmemshare =CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MEMSHARE");
if(hmemshare==NULL)
{
TRACE("\n failed to CreateFileMapping! ");
return;
}
char * szSingle; // dxj =new char[512]; //dxj --- //where to delete ?
szSingle=(char *)MapViewOfFile(hmemshare,FILE_MAP_ALL_ACCESS,0,0,0);
if(szSingle==NULL)
{
TRACE("\n failed to MapViewOfFile() ");
return;
}
//////////////////////////找到特定的文件,把它写到共享内存中///////////
CString strSingleCopy=CString(szSingle);
int nIndex=strSingleCopy.Find(_TEXT(".EXE"));
if(nIndex!=-1)
{
CString szPathOrig=strSingleCopy.Left(nIndex+3+1);
szSingle+=(nIndex+3+1);
//AfxMessageBox(szSingle);
HANDLE hProcessOrig=(HANDLE)atoi(szSingle);
szSingle-=(nIndex+3+1);
char * mayend="MAYEND";
strcpy(szSingle,mayend);
szSingle[6]=NULL;
WaitForSingleObject(hProcessOrig,INFINITE);
CloseHandle(hProcessOrig);
DeleteFile(szPathOrig);
UnmapViewOfFile(szSingle);
CDialog::OnOK();
}
Top




