- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在MSDN上搜索了一下
HANDLE WINAPI CreateFile(
_In_ LPCTSTR lpFileName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD dwCreationDisposition,
_In_ DWORD dwFlagsAndAttributes,
_In_opt_ HANDLE hTemplateFile
);
如果 dwCreationDisposition
== CREATE_ALWAYS
或 OPEN_ALWAYS
,它表示
Creates a new file, always. If the specified file exists and is writable, the function overwrites the file, the function succeeds, and last-error code is set to ERROR_ALREADY_EXISTS (183). If the specified file does not exist and is a valid path, a new file is created, the function succeeds, and the last-error code is set to zero. For more information, see the Remarks section of this topic.
和
Opens a file, always. If the specified file exists, the function succeeds and the last-error code is set to ERROR_ALREADY_EXISTS (183). If the specified file does not exist and is a valid path to a writable location, the function creates a file and the last-error code is set to zero.
所以我不确定如果函数失败,GetLastError()
会是 ERROR_ALREADY_EXISTS
吗?
如果是,请给我一个例子。
非常感谢。
最佳答案
快速回答:否。
根据规定:
ERROR_ALREADY_EXISTS
应在 CreateFile()
调用之后由 GetLastError()
返回,仅当文件存在,dwCreationDisposition
设置为 CREATE_ALWAYS
或 OPEN_ALWAYS
并且 CreateFile()
成功 .
如果 CreateFile()
失败,CREATE_ALWAYS
或 OPEN_ALWAYS
设置为 dwCreationDisposition
,则 GetLastError( )
应返回适当的最后错误代码,指示无法打开文件的原因,但不能是 ERROR_ALREADY_EXISTS
因为用户特别请求打开或创建文件,无论是否是否存在。
当调用 CreateFile()
并将 dwCreationDisposition
设置为 时,这不应与
失败,因为文件存在。在这种情况下,GetLastError()
的返回值混淆>CREATE_NEWGetLastError()
应返回 ERROR_FILE_EXISTS
并且从不 ERROR_ALREADY_EXISTS
。
关于windows - 是否存在函数 CreateFile 返回 INVALID_HANDLE_VALUE 而 GetLastError() 返回 ERROR_ALREADY_EXISTS 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784825/
所以我将这些东西从 C++ 移植到 C#。它的一部分看起来像这样: m_hParstat = CreateFile( _T("\\\\.\\LPTSTAT1"), GENERIC_READ
我正在使用“CreateRemoteThread & WriteProcessMemory”技术将我的 dll 注入(inject)另一个进程。我的代码在 Windows 7,8 上运行良好,但是 W
此代码在 64 位应用程序中运行。目标应用程序是 32 位的。 每次运行此代码时,CreateToolhelp32Snapshot() 都会返回 INVALID_HANDLE_VALUE,然后 Get
对于我在论坛上的第一篇帖子,因为我是一个真正的初学者,所以我看不出我的错误从何而来。在用户选择文件夹中的多个文件后,我尝试将它们重命名为“image_1.jpg”、“image_2.jpg”等...我
以下代码用于使用Delphi 2007编译: constructor TMyFile.Create(const _Filename: string); begin inherited Create
考虑: void main() { LPSTR FileName; FileName = "C:\\test2.wav"; hFile = CreateFile((LPCWST
我正在使用 CreateFileA,我第一次调用它时,它按预期工作。但是当我第二次调用它时,它返回句柄 INVALID_HANDLE_VALUE。可能是什么问题呢?仅供引用,每次我需要检查我的 USB
更新 - 已解决并回答,有问题的行已被注释掉 简要说明 即使我对 CreateFile 使用(GENERIC_WRITE 或 GENERIC_WRITE),对 CreateFileMapping 使用
为什么 HANDLE mutexHandle = INVALID_HANDLE_VALUE; WaitForSingleObject(mutexHandle, INFINITE); 阻止?它不会返回错
我和一位程序员同事进行了一场小辩论。他在他的代码中使用了以下习语: HWND hWnd = SomeFunctionWhichReturnsAWindow(); if(hWnd != NULL &&
有一个简短的例子: WIN32_FIND_DATA fd; HANDLE h = FindFirstFile(L"C:", &fd); if (h == INVALID_HANDLE_VALUE) {
我正在使用 CreateFile() 打开一个串口.我有一个测试用例(太复杂而无法重新分发),它始终导致 CreateFile()返回 INVALID_HANDLE_VALUE和 GetLastErr
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
编辑 我似乎又向前迈进了一步。我忘记提及这是我正在处理的目录。我需要将 FILE_FLAG_BACKUP_SEMANTICS 传递给 CreateFile。不幸的是,我遇到了另一个障碍... GetF
我在 Windows 8 上的打印机过滤器环境中使用 CreateFile 打开一个文件。代码实际上是直接的 C,即使过滤器是用 C++ 构建的。 CreateFile 返回 INVALID_HAND
我在MSDN上搜索了一下 HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD
我正在打开一个端口与设备通信并控制设备,但是 CreateFile() 函数返回 INVALID_HANDLE_VALUE。 GetLastError() 返回 2,这意味着它找不到指定的文件。 我的
我是一名优秀的程序员,十分优秀!