windows下内核对象的跨边界共享实现一
2010-03-08 22:54
309 查看
前段时间,看了WINDOWS核心编程里面关于内核对象跨边界共享的东东,于是自己写了一个简单的DEMO,以下为简单的代码,如有任何不妥之处请高手指出:
以共享CreateFile返回的内核对象为示例:
在父进程:
SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(sa);
sa.lpSecurityDescriptor=NULL;
sa.bInheritHandle=TRUE;
m_handle=::CreateFile("1.txt",GENERIC_ALL,FILE_SHARE_READ,&sa,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if( INVALID_HANDLE_VALUE==m_handle)
{
MessageBox("无法打开指定文件");
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi));
char chHandle[20]={0};
sprintf(chHandle,"%d",m_handle);
::CreateProcess("D://我的程序//InheriteHandle//child//Debug//child.exe",
chHandle,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi);
在子进程获得并使用:
char *chCmd=GetCommandLine();
HANDLE hFile=(HANDLE)atoi(chCmd);
char chData[30]={0};
unsigned long readedLen=0;
ReadFile(hFile,chData,4,&readedLen,NULL);
MessageBox(chData);
CloseHandle(hFile);
以共享CreateFile返回的内核对象为示例:
在父进程:
SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(sa);
sa.lpSecurityDescriptor=NULL;
sa.bInheritHandle=TRUE;
m_handle=::CreateFile("1.txt",GENERIC_ALL,FILE_SHARE_READ,&sa,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if( INVALID_HANDLE_VALUE==m_handle)
{
MessageBox("无法打开指定文件");
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi));
char chHandle[20]={0};
sprintf(chHandle,"%d",m_handle);
::CreateProcess("D://我的程序//InheriteHandle//child//Debug//child.exe",
chHandle,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi);
在子进程获得并使用:
char *chCmd=GetCommandLine();
HANDLE hFile=(HANDLE)atoi(chCmd);
char chData[30]={0};
unsigned long readedLen=0;
ReadFile(hFile,chData,4,&readedLen,NULL);
MessageBox(chData);
CloseHandle(hFile);
相关文章推荐
- windows笔记-跨越进程边界共享内核对象【对象句柄的继承性】
- windows笔记-跨越进程边界共享内核对象【复制对象句柄】
- windows笔记-跨越进程边界共享内核对象【对象句柄的继承性】
- windows笔记-跨越进程边界共享内核对象【复制对象句柄】
- Windows跨越进程边界共享内核对象的3种方法
- windows笔记-跨越进程边界共享内核对象【对象句柄的继承性】
- windows笔记-跨越进程边界共享内核对象【命名对象】
- windows操作系统之跨进程边界共享内核对象
- windows笔记-跨越进程边界共享内核对象【对象句柄的继承性】
- windows笔记-跨越进程边界共享内核对象【命名对象】
- windows笔记-跨越进程边界共享内核对象【复制对象句柄】
- 3.3 跨越进程边界共享内核对象
- -跨越进程边界共享内核对象【复制对象句柄】
- 共享内核对象之--跨边界共享内核对象
- 白话windows内核对象共享之复制对象句柄
- Windows进程共享内核对象的3种方法
- -跨越进程边界共享内核对象【命名对象】
- 内核对象 复制对象句柄 DuplicateHandle 跨进程边界共享内核对象
- 白话windows内核对象共享之命名对象
- Windows进程共享内核对象的3种方法