#include<iostream>
#include<Windows.h>
#include <limits>
#include<stdio.h>
#include<locale.h>
using namespace std;
/*
HANDLE CreateFile(
LPCTSTR lpFileName, // 指向文件名的指针
DWORD dwDesiredAccess, // 访问模式(写 / 读)如果为 GENERIC_READ GENERIC_WRITE 如果为零,表示只允许获取与一个设备有关的信息
DWORD dwShareMode, // 共享模式 零表示不共享; FILE_SHARE_READ 和 / 或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针
DWORD dwCreationDisposition, // CREATE_NEW CREATE_ALWAYS OPEN_EXISTING OPEN_ALWAYS TRUNCATE_EXISTING
DWORD dwFlagsAndAttributes, // 文件属性 FILE_ATTRIBUTE_ARCHIVE 标记归档属性
FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式
FILE_ATTRIBUTE_NORMAL 默认属性
FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录
FILE_ATTRIBUTE_READONLY 文件为只读
FILE_ATTRIBUTE_SYSTEM 文件为系统文件
FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作
FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作
FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化
FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化
FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件
HANDLE hTemplateFile // 用于复制文件句柄 如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性
);
DWORD WINAPI FormatMessage(
DWORD dwFlags,标志位,决定如何说明lpSource参数 FORMAT_MESSAGE_??
LPCVOID lpSource,根据dwFlags标志而定。
DWORD dwMessageId,错误信息的标识符
DWORD dwLanguageId,请求的语言标识符
LPTSTR lpBuffer,接受错误信息描述的指针
DWORD nSize,指定输出缓冲区的大小,为0指定,分配给缓冲区最小数
va_list* Arguments 保存格式化信息中的插入值的一个数组。
);
*/
void getError()
{
TCHAR szBuf[128];
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
//MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),//使用英文
MAKELANGID(SUBLANG_NEUTRAL, SUBLANG_DEFAULT),//SUBLANG_DEFAULT使用系统默认的语言 SUBLANG_NEUTRAL 中立的语言
(LPTSTR)&lpMsgBuf,
0, NULL);
wsprintf(szBuf, L"出错码:%d,信息:%s", dw, lpMsgBuf);
//输出提示。
wcout.imbue(locale("chs"));//设置本地化
wcout << szBuf << endl;//宽字符不能用cout 应该用wcout
setlocale(LOCALE_ALL, "chs");
wprintf(L"%s", lpMsgBuf);
//wcout << (WCHAR)lpMsgBuf << endl;
LocalFree(lpMsgBuf);
}
void main()
{
HANDLE file;
file = CreateFile(L"D:\\ffd", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
getError();
cin.get();
}