进程间通信:使用file-mapping kernel object(文件映射内核对象)

本文介绍了如何使用File-Mapping Kernel Object实现Windows系统中进程间的通信。通过示例代码展示了如何创建并操作文件映射内核对象,使线程A根据线程B的信号改变其执行流程。这种方法对于调试程序或影响其他进程的运行轨迹有一定帮助。此外,还提到了相关资源链接供进一步学习。
摘要由CSDN通过智能技术生成

        一个机器上的两个进程间通信,可以使用很多种方式。但看《windows核心编程》说,其实归根结底都是使用了file-mapping kernel object。把那一章看了看,长了不少知识。但是我最感兴趣的地方还是:假设有两个线程:线程A和线程B。当线程A在运行的时候,线程B给A通信,使得A可以改变自己程序的运行轨迹。其实,这也算是为调试程序埋的伏笔吧。因为我现在的工作中就遇到一个这样的问题,程序A可以运行,但运行效果不是想要的,我想使用程序B给A发一些消息,改变A的运行轨迹。在VS2008的msdn文档中找了找,找到一个简单的例子,修改了一下。代码包括两部分,第一部分是程序A的代码,代码如下:

#include <windows.h>
#include <stdio.h>
#include <conio.h>

#define BUF_SIZE 256
TCHAR szName[]=TEXT("Global\\MyFileMappingObject");

int main()
{
	HANDLE hMapFile;
	char * pBuf;

	hMapFile = CreateFileMapping(
		INVALID_HANDLE_VALUE,    // use paging file
		NULL,                    // default security 
		PAGE_READWRITE,          // read/write access
		0,                       // max. object size 
		BUF_SIZE,                // buffer size  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值