gpt4 book ai didi

c++ - 为什么 CreateFile 返回无效句柄?

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:08 24 4
gpt4 key购买 nike

我有 CreateFile() 来创建隐藏文件类型,但问题是它一直返回无效句柄。

file = CreateFileW(_T("hey.txt"),
GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
0, 0);
error = GetLastError();
WriteFile(file, buff, sizeof(buff),
&dwRet, NULL);

有什么想法吗?

最佳答案

如果您展示了您正在使用的确切代码,包括所有错误检查,以及您如何做,这可能是最好的(特别是在这个问题的情况下)...

代码的正确错误检查应该更像是...

file = CreateFile(_T("hey.txt"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);

if (file == INVALID_HANDLE_VALUE)
{
const DWORD error = GetLastError();

// Do something!
}
else
{
if (!WriteFile(file, buff, sizeof(buff), &dwRet, NULL))
{
const DWORD error = GetLastError();

// Do something!
}
}

如果您得到 INVALID_FILE_HANDLE 的返回值,您应该只检查错误,因为 CreateFile() 可能不会在它开始之前重置最后一个错误,因此您可能如果函数成功,则从 GetLastError() 获取虚假错误值...

最后一个错误 6,ERROR_INVALID_HANDLE,在 CreateFile() 中是不常见的,除非您正在使用模板文件参数,而您不是...

您使用 CreateFileW 和 _T("") 的代码不正确,无法在非 unicode 版本中编译。最好使用 CreateFile 和 _T("") 或 CreateFileW 和 L""。

您的代码不会创建隐藏文件,请参阅 molbdnilo 的回答。

关于c++ - 为什么 CreateFile 返回无效句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5926087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com