首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CreateFile()返回INVALID_HANDLE_VALUE,但GetLastError()是ERROR_SUCCESS

根据您提供的问答内容,以下是我为您准备的完善且全面的答案:

CreateFile()返回INVALID_HANDLE_VALUE,但GetLastError()是ERROR_SUCCESS,这种情况通常表示在调用CreateFile()函数时出现了问题。CreateFile()函数用于创建或打开一个文件、设备、目录或管道。当CreateFile()函数调用失败时,它将返回INVALID_HANDLE_VALUE。同时,GetLastError()函数可以用于获取最后一个错误代码,以便确定具体的错误原因。

在这种情况下,GetLastError()返回ERROR_SUCCESS,这意味着没有发生任何错误。因此,问题可能是由于CreateFile()函数本身的问题,例如文件路径错误、文件已被其他进程锁定等。

如果您需要进一步的帮助,请提供更多关于问题的详细信息,以便我能更好地为您提供解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

windows 格式化磁盘_磁盘0没有初始化

新买来的硬盘未初始化的,以我的理解就是没有引导扇区的,通常是没有MBR,如下图磁盘1,右边有大小,显示“未分配”, 左边显示“没有初始化”, 点鼠标右键就可以【初始化磁盘】。...) // cannot open the drive { fprintf(stderr, "CreateFile() Error: %ld\n", GetLastError()); return int...) // cannot open the drive { fprintf(stderr, "CreateFile() Error: %ld\n", GetLastError()); return DWORD...DWORD &dwNum, CString chDriveInfo[]) { DWORD DiskCount = 0; //利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回一个...未知设备")); } break; default: strTmp.Format(_T("未知设备")); break; } //GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回

1.8K30
  • windows 下文件的高级操作

    更严格一点的,可以在返回INVALID_FILE_ATTRIBUTES之后调用GetLastError函数,判断返回值是否为ERROR_FILE_NOT_FOUND或者ERROR_PATH_NOT_FOUND...另外FindFirst也会返回一个文件信息的结构,这个结构当前目录中符合条件的第一个文件信息,在遍历的时候不要忘记也取一下它返回的文件信息。...) //若网络重定向或目标文件系统不支持该操作,函数失败,同时调用GetLastError()返回ERROR_INVALID_FUNCTION { cout<<"error"+GetLastError...也可以传入一个INVALID_HANDLE_VALUE,这个时候也会返回成功,传入INVALID_HANDLE_VALUE一般用来在进程间共享内存的。...同时由于它第一个句柄参数可以填INVALID_HANDLE_VALUE,在使用CreateFile函数后一定要注意校验,不然可能看到CreateFileMapping函数返回一个有效句柄,但是并没有成功创建这个文件的映射

    2.1K30

    G级大文件分割器 + 核心源码

    网上有很多文件分割器,效果很差(因为其源码使用的原理不好),很多大型文件(尤其GB级别的)分割以后可能出现乱码,可能分割以后再次合并时就不是原来的文件了。...界面MFC写的,关于如何处理GB级别文件,使用的windows API,内存映射。...不细说,大概流程就是:CreateFile - CreateFileMapping - MapViewOfFile - CopyMemory - UnmapViewOfFile - CloseHandle...fi.llFileSize = 0; fi.llPartSize = 0; fi.dwPartNum = 0; fi.llPartSize = pInfo->llPartSize; hFile = CreateFile...问题似乎确实跟你此时电脑的状态有关。昨晚我测试时候将5G的文件分割成500M的文件时候出现错误,今早把8G的文件分割成500M的时候没有任何问题。我电脑内存4G,或许也跟硬盘有关?

    63441

    CreateFile()打开串口失败,返回句柄值为0xffffffff

    大家好,又见面了,我你们的朋友全栈君。 出错情况:设备1和设备2分别使用COM1和COM2外界通信,在不关闭软件的情况下,调换串口(即设备1/2,分别使用COM2/1),此时出错?...以下查找原因的步骤: _hCommHandle = ::CreateFile( _szCommStr, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING..., FILE_FLAG_OVERLAPPED, NULL ); 打开串口,执行到这里时,_hCommHandle的值为INVALID_HANDLE_VALUE(0xffff ffff),根据函数的帮助文件知道可以利用...GetLastError()获取出错原因,如下: ///查找错误 DWORD erM=0; LPVOID lpMsgBuf; CString theErr; if(_hCommHandle==INVALID_HANDLE_VALUE...) erM=GetLastError(); FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,

    2.6K10

    驱动开发:驱动与应用的简单通信

    驱动程序与应用程序的通信离不开派遣函数,派遣函数Windows驱动编程中的重要概念,一般情况下驱动程序负责处理I/O特权请求,而大部分IO的处理请求是在派遣函数中处理的,当用户请求数据时,操作系统会提前处理好请求...先来简单介绍一下 IRP(I/O Request Package) 输入输出请求包,该请求包在Windows内核中一个非常重要的数据结构,当我们的上层应用与底层的驱动程序通信时,应用程序就会发出I/O...STATUS_SUCCESS;}客户端代码#include #include #include int main(){HANDLE hDevice = CreateFile...错误: %d\n", GetLastError());getchar();}getchar();CloseHandle(hDevice);return 0;}读取驱动中的数据: 实现读取内核缓冲区中的数据...){printf("获取驱动句柄失败: %d\n", GetLastError());getchar();}UCHAR buffer[10];ULONG ulRead;ReadFile(hDevice,

    43510

    浅析日本队崛起原因_createNewFile

    如果hFile为INVALID_HANDLE_VALUE,调用进程必须通过参数dwMaximumSizeHigh和参数dwMaximumSizeLow指定映射的size。...如果lpName匹配一个已存在并已命名的事件、信号量、互斥对象、可等待计时器或工作对象,函数将失败,GetLastError函数将返回ERROR_INVALID_HANDLE。...发生这样的原因这些内核对象共享同一个命名空间。 返回值 如果函数调用成功,将返回文件映射对象的句柄。...如果对象在函数调用之前就已存在,函数将返回已存在的对象句柄(size以已存在的对象size为准),这时,GetLastError返回ERROR_ALREADY_EXISTS。...如果函数失败,返回NULL。可以调用GetLastError获得错误码。 注意 创建一个内存映射文件相当于先预定一块地址空间区域,然后再给区域调拨物理存储器。

    37010

    【操作系统】Windows进程间的通信

    LPWSTR lpCommandLine, //命令行 _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, //该 结构确定子进程是否可以继承返回到新进程对象的句柄...lpProcessAttributes为NULL,则不能继承该句柄 _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, //该结构确定子进程是否可以继承返回到新线程对象的句柄...\\mailslot\\Mymailslot"); HANDLE hMailSlot = CreateFile(szSlotName,FILE_GENERIC_WRITE,FILE_SHARE_READ...ConnectNamedPipe(hNamedPipe, &ovlap)) { if(GetLastError() !...邮槽基于广播的,可以一对多发送。只能一个发送,一个接收(单向)。 命名管道和邮槽可以进程网络通信。命名管道只能点对点的单一通信。 邮槽的缺点就是传输的数据量很小,424字节以下。

    87640
    领券