请问一下:createFile可不可以多次同时打同一个文件

cyberhero 2009-10-16 11:24:05
请问一下:CreateFile可不可以多次同时打同一个文件。
特别是在多线程中
谢谢
...全文
407 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_dark 2009-10-18
  • 打赏
  • 举报
回复
ding
fishion 2009-10-16
  • 打赏
  • 举报
回复
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;
}
cyberhero 2009-10-16
  • 打赏
  • 举报
回复
dingdingdingdingdingdingdingdingdingding
cyberhero 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 everettjf 的回复:]
引用 3 楼 cyberhero 的回复:
C/C++ codevoid 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);return1;
}

第次从这里跳出,error id = 32, 文件正被使用。



3L right
[/Quote]



what?
「已注销」 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cyberhero 的回复:]
C/C++ codevoid 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);return1;
}

第次从这里跳出,error id = 32, 文件正被使用。
[/Quote]


3L right
cyberhero 2009-10-16
  • 打赏
  • 举报
回复
ding a
cyberhero 2009-10-16
  • 打赏
  • 举报
回复

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, 文件正被使用。
dirdirdir3 2009-10-16
  • 打赏
  • 举报
回复
看是不是独占模式了........一般读共享的话可以打开多个...........
ziplj 2009-10-16
  • 打赏
  • 举报
回复
一个句柄 一个文件
swlilike 2009-10-16
  • 打赏
  • 举报
回复
当你打开文件的时候,会有一个文件句柄 如果不关闭这个句柄,再次调用的时候就打不开句柄了 也就不能操作文件了!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧