注意不要使用 GENERIC_ALL 代替 GENERIC_READ | GENERIC_WRITE

来源:互联网 发布:ai软件下载最新版 编辑:程序博客网 时间:2024/05/29 14:01

看到核心编程第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_WRITE0,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;}





0 0