【发布时间】:2012-06-01 16:59:36
【问题描述】:
我有以下代码从函数中获取文件名,然后将其传递给 createFile(扩展为 createFileA)。较早的一个问题告诉我使用 file.c_str() 将文件名转换为 createFileA 使用的 LPCTSTR。但是,这不起作用,因为每次调用 createFileA 时文件的句柄都无效。我做错了什么?
string file = getFilename();
HANDLE hf = CreateFile(file.c_str(),GENERIC_READ | GENERIC_WRITE,(DWORD) 0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
if (hf == INVALID_HANDLE_VALUE)
{
MessageBox( hwnd,"CreateFile","Error", MB_OK);
}
【问题讨论】:
-
GetLastError返回什么错误码? -
ERROR_INVALID_NAME 123 (0x7B) 文件名、目录名或卷标语法不正确。
-
如果你在调试器下运行,
file.c_str()会返回什么? -
对不起,我应该在错误中包含它:它返回 2012-6-1_17:10:40:475.bmp
-
哇,我应该想到这一点,但冒号在 Windows 文件名中是非法的。感谢您的帮助。