vc++在内存中建了一个映射空间,我读取这个共享内存块中的数据:
其中,hmapfile是我定义的THandle,MAP_FILE_NAME是内存块的名称 hmapfile:=OpenFileMapping(File_Map_Read,false,pchar(MAP_FILE_NAME));
if (hmapfile<>0) then
MapFilePointer:= MapViewOfFile( hmapfile,FILE_MAP_ALL_ACCESS,0, 0,0);程序在98下面完全没有问题,可以读出数据,但是换了2000或者XP,就不行了,根本读不出数据,但是也不提示报错,只是读不出数据而已。
在2000和XP下经过断点调试,发现不管如何,hmapfile的值始终为零,即无法获得共享内存块的句柄。因而数据自然也无法读出,但是在98下时却一切都很正常。
而且同学用vc++在2000和XP下均可以正常读出数据。
请问这到底是怎么回事呢。是OpenFileMapping本身的问题还是2000和XP系统不支持OpenFileMapping的问题呢?
其中,hmapfile是我定义的THandle,MAP_FILE_NAME是内存块的名称 hmapfile:=OpenFileMapping(File_Map_Read,false,pchar(MAP_FILE_NAME));
if (hmapfile<>0) then
MapFilePointer:= MapViewOfFile( hmapfile,FILE_MAP_ALL_ACCESS,0, 0,0);程序在98下面完全没有问题,可以读出数据,但是换了2000或者XP,就不行了,根本读不出数据,但是也不提示报错,只是读不出数据而已。
在2000和XP下经过断点调试,发现不管如何,hmapfile的值始终为零,即无法获得共享内存块的句柄。因而数据自然也无法读出,但是在98下时却一切都很正常。
而且同学用vc++在2000和XP下均可以正常读出数据。
请问这到底是怎么回事呢。是OpenFileMapping本身的问题还是2000和XP系统不支持OpenFileMapping的问题呢?
...
else
getlastError 检查下错误代码是什么
看看是不是你的MAP_FILE_NAME有问题
大小写要区分
我刚才写个简单的c++控制台程序测试了一下
一切正常
而且我在98下都能读出的,我想98下对大小写因该也同样敏感吧?用getlasterror得到的信息是getlasterror=Inaccessible value,
这估计就是说无法进入共享内存块吧?这到底是怎么回事呢?