看到核心编程第10章,想用上面的代码进行CreateFile文件独占测试,结果总是输出
File1 not created
将上面的代码CreateFile的标志GENERIC_ALL改成GENERIC_READ | GENERIC_WRITE,运行输出
File1 created OK
File2 not created
原来 GENERIC_ALL 标志与 GENERIC_READ | GENERIC_WRITE是不是同的意思
附上代码
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile1 = CreateFile(
_T("D:\\1.txt"),
GENERIC_READ|
GENERIC_WRITE, //注意不要使用 GENERIC_ALL 代替 GENERIC_READ | GENERIC_WRITE
0,
NULL,
OPEN_EXISTING,
NULL,
NULL
);
if (hFile1 == INVALID_HANDLE_VALUE){
wprintf(_T("File1 not created\n"));
CloseHandle(hFile1);
return -1;
}
else
{
wprintf(_T("File1 created OK\n"));
}
HANDLE hFile2 = CreateFile(
_T("D:\\1.txt"),
GENERIC_READ |
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
NULL,
NULL
);
if (hFile2 == INVALID_HANDLE_VALUE){
wprintf(_T("File2 not created\n"));
CloseHandle(hFile1);
CloseHandle(hFile2);
return -1;
}
else
{
wprintf(_T("File created OK\n"));
}
CloseHandle(hFile1);
CloseHandle(hFile2);
getchar();
return 0;
}