windows核心编程上的段子:
当你调用M a p Vi e w O f F i l e时系统对文件对象和文件映射对象的使用计数的递增.HANDLE hFile = CreateFile(...);
HANDLE hFileMapping = CreateFileMapping(hFile, ...);
CloseHandle(hFile); //此时hFile是否已经消失,消失对于hFileMapping有无啥影响?
PVOID pvFile = MapViewOfFile(hFileMapping, ...);
CloseHandle(hFileMapping);// Use the memory-mapped file.UnmapViewOfFile(pvFile);应该如何理解上面2个closehandle函数调用过的结果,越详细越好。
当你调用M a p Vi e w O f F i l e时系统对文件对象和文件映射对象的使用计数的递增.HANDLE hFile = CreateFile(...);
HANDLE hFileMapping = CreateFileMapping(hFile, ...);
CloseHandle(hFile); //此时hFile是否已经消失,消失对于hFileMapping有无啥影响?
PVOID pvFile = MapViewOfFile(hFileMapping, ...);
CloseHandle(hFileMapping);// Use the memory-mapped file.UnmapViewOfFile(pvFile);应该如何理解上面2个closehandle函数调用过的结果,越详细越好。
hFile消失,但file对象还在
CloseHandle(hFileMapping);句柄没了,但section对象还在你用windbg内核调试一下就知道
答案肯定是CreateFileMapping导致的,我想知道他为什么能导致file的对象计数加1,还有那些函数可以导致对象内核计数加1