句柄的继承

进程A 通过CreateProcess创建一个B进程 通过传命令行参数
进程A代码

#include "stdafx.h"
#include <windows.h>
void main(int ,TCHAR *srcv[])
{
	DWORD dwEvent=0;
	SECURITY_ATTRIBUTES sa={sizeof(SECURITY_ATTRIBUTES)};
	sa.bInheritHandle=TRUE;//设置可继承

	STARTUPINFO si={sizeof(STARTUPINFO)};
	PROCESS_INFORMATION  pi={0};

	HANDLE hEvent=CreateEvent(&sa,0,0,0);
	TCHAR buffer[256];
	swprintf_s(buffer,TEXT("C:/Users/Administrator/source/repos/2017_First/Debug/2017_First.exe %x"),hEvent);
	CreateProcess(0,buffer,0,0,1,CREATE_NEW_CONSOLE,0,0,&si,&pi);
	Sleep(3000);
	SetEvent(hEvent);
	getchar();
}

进程B 代码

#include "pch.h"
#include <iostream>
#include<Windows.h>
int main(int ,char* srcv[])
{
	DWORD dwEvent = 0;
	char pszBuffer[256] = { 0 };
	memcpy_s(pszBuffer,8, srcv[1],8);
	sscanf_s(pszBuffer,("%x"), &dwEvent);
	printf("开始等待内核对象  %x\n", dwEvent);
	HANDLE hEvent = (HANDLE)dwEvent;
	WaitForSingleObject(hEvent, INFINITE);
	printf("等到内核对象"); 
    getchar();
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值