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函数调用过的结果,越详细越好。

解决方案 »

  1.   

    CloseHandle(hFile); //此时hFile是否已经消失,消失对于hFileMapping有无啥影响?
    hFile消失,但file对象还在
    CloseHandle(hFileMapping);句柄没了,但section对象还在你用windbg内核调试一下就知道
      

  2.   

    我想知道为什么 hFile消失,但file对象还在?
    答案肯定是CreateFileMapping导致的,我想知道他为什么能导致file的对象计数加1,还有那些函数可以导致对象内核计数加1
      

  3.   

    微软的规范而已,CreateFile()等API都会导致增加