delphi Windows進程間通訊可以使用CreateFileMapping和發送WM_COPYDATA消息來實現變量的共享。

delphi Windows進程間通訊可以使用CreateFileMapping和發送WM_COPYDATA消息來實現變量的共享。

是的,你说得对。Windows API中的CreateFileMapping函数和MapViewOfFile函数可以用来将一个文件映射到进程的虚拟地址空间中。这两个函数的原型分别如下: ``` HANDLE CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName ); LPVOID MapViewOfFile( HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap ); ``` 其中,CreateFileMapping函数用于创建一个文件映射对象,它的参数包括文件句柄hFile、保护属性flProtect、最大文件映射大小等;MapViewOfFile函数用于将文件映射到进程的虚拟地址空间中,它的参数包括文件映射对象句柄hFileMappingObject、映射的起始地址等。 具体来说,我们可以使用CreateFileMapping函数创建一个文件映射对象,然后使用MapViewOfFile函数将文件映射到进程的虚拟地址空间中。比如,我们可以使用以下代码将一个遥感图像文件映射到内存中: ``` HANDLE hFile = CreateFile( "test.img", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); HANDLE hMapFile = CreateFileMapping( hFile, NULL, PAGE_READONLY, 0, 0, NULL ); LPBYTE pImage = (LPBYTE)MapViewOfFile( hMapFile, FILE_MAP_READ, 0, 0, 0 ); ``` 在这段代码中,我们首先使用CreateFile函数打开一个遥感图像文件,然后使用CreateFileMapping函数创建一个文件映射对象,并将其关联到文件句柄hFile上。最后,使用MapViewOfFile函数将文件映射到进程的虚拟地址空间中,并返回映射的起始地址pImage。 需要注意的是,当使用完毕后,需要使用UnmapViewOfFile函数将文件映射从进程的虚拟地址空间中解除映射,并使用CloseHandle函数关闭文件句柄和文件映射对象句柄,以释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值