请问一下:CreateFile可不可以多次同时打同一个文件。
特别是在多线程中
谢谢

解决方案 »

  1.   


    void new_function(void * what)
    {
        HANDLE h = CreateFile("c:\\tmp", GENERIC_ALL,FILE_SHARE_WRITE | FILE_SHARE_READ , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if (h == INVALID_HANDLE_VALUE)
        {
            DWORD d = GetLastError();
            return ;
        }
        Sleep(1000000);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
        
        HANDLE h = CreateFile("c:\\tmp", GENERIC_ALL,FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        HANDLE hMapHandle = CreateFileMapping(h,NULL,PAGE_READWRITE,0,12800000,NULL);
        _beginthread(new_function,0, NULL);
        Sleep(10000);
        return 1;
    }第次从这里跳出,error id = 32, 文件正被使用。
      

  2.   

    dingdingdingdingdingdingdingdingdingding
      

  3.   

    new_function(void* what) 

        HANDLE h= CreateFile("c:\\tmp", GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE| FILE_SHARE_READ , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (h== INVALID_HANDLE_VALUE) 
        { 
            DWORD d= GetLastError();return ; 
        } 
        Sleep(1000000); 
    }int _tmain(int argc, _TCHAR* argv[]) 

        
        HANDLE h= CreateFile("c:\\tmp", GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE| FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
        HANDLE hMapHandle= CreateFileMapping(h,NULL,PAGE_READWRITE,0,12800000,NULL); 
        _beginthread(new_function,0, NULL); 
        Sleep(10000);return1;