草庐IT

ReadFile

全部标签

c - Windows 中的 ReadFile()

我正在尝试使用Windows函数ReadFile()读取文件,但是当我打印消息时,它打印了太多字符。不管我从ANSII文件还是UNICODE文件中读取,我都没有得到正确的字符。文件中的文本是:“这是一个文本文件”。ANSII文件的屏幕截图:UNICODE文件的屏幕截图:我做错了什么?#defineBUFSIZE4000int_tmain(intargc,TCHAR*argv[]){HANDLEhIn;TCHARbuffer[BUFSIZE];DWORDnIn=0;//createfilehIn=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_REA

c++ - Windows Readfile 返回 ERROR_INVALID_PARAMETER 87

我的程序创建了一个邮槽,但是当我调用ReadFile时,我得到了ERROR_INVALID_PARAMETER。参数不对怎么办?程序代码:SECURITY_DESCRIPTORsd;InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);SetSecurityDescriptorDacl(&sd,true,NULL,false);SECURITY_ATTRIBUTESsa;sa.lpSecurityDescriptor=&sd;sa.bInheritHandle=true;msg_id_=CreateMailslot

c++ - ReadFile() 说它失败了,但错误代码是 ERROR_SUCCESS

我在Windows上使用ReadFile()从串口读取数据。这段代码在某个时间点运行良好,但现在失败了,我正试图追踪问题的根源,所以我怀疑这是串行配置或超时的问题,因为这些都没有改变。ReadFile()返回false,表示发生错误。但是,当我立即检查GetLastError()的值时,它返回0,即ERROR_SUCCESS。读取的字节数为0,所以我倾向于认为确实是出了问题,但那个错误代码是完全没有用的。有什么想法吗?谢谢。编辑:以下是一些相关的代码片段:#defineGPS_COM_PORTL"COM3"//forreference,thedevicecommunicatesat11

windows - 当我在 Windows 上的 HID 设备上执行 ReadFile() 时会发生什么?

当我对CreateFile(HID_DEVICE_NAME,...)提供的句柄执行ReadFile/WriteFile时,HID操作方面会发生什么情况?它是向HID设备(在我的例子中是USB)发出直接写入/读取请求,还是在底层驱动程序的某处进行转换以读取具有此类ID的最后缓存的HID报告?ReadFile调用:syncDevice.OutputReportBuffer[0]=0;syncDevice.OutputReportBuffer[1]=reportID;HANDLEwriteHandle=CreateFile(pDevice->DevicePath,GENERIC_WRITE,

c++ - 串口通讯初始化

当时我们正在尝试创建一个串行通信接口(interface),以便能够与微处理器进行通信。实际上-一切正常。几乎!为了能够与我们的Controller通信,我们需要与其同步。为此,我们编写了一个字符串:"?0{SY}13!",然后Controller应回复"!0{SY}F5?"到接受同步请求。为此,我们使用了一个writeData函数(它起作用了——我们知道通过使用echo),然后我们使用一个readData来阅读答案。问题是,出于某种原因,它不会读取任何内容。虽然它返回1表示成功,但它读取的字符始终是""(无)。现在奇怪的部分来了-如果我们使用外部终端程序初始化端口(如putty),然

c++ - 读取文件缓冲区传递

这可能是微不足道的,但我不明白为什么我没有在我的程序中读回。它似乎适用于所有“复杂的东西”,并且它说它已读取1(字符/字节),但我无法掌握它;这似乎是类型匹配问题(顺便说一句,编译器g++(即gcc)这真的很奇怪)。我如何更改Buf的不同变体(如指针、字符、字符数组等)我无法掌握输入。下面现在是剥离代码和同步读取版本。哪个也应该编译。#defineWIN32_LEAN_AND_MEAN#include#includeusingnamespacestd;//**********************************//*******MAIN****************//*

c++ - 命名管道 : ReadFile after ConnectNamedPipe return ERROR_BROKEN_PIPE

我重新激活了我确定在几个月前使用过的代码。它让我发疯,但它不再是了。我在其他问题中找不到答案。在服务器端,我使用创建了一个管道#defineMAX_MESSAGE_LENGTH1024SECURITY_ATTRIBUTESsa;SECURITY_DESCRIPTORsd;InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);SetSecurityDescriptorDacl(&sd,TRUE,static_cast(0),FALSE);sa.nLength=sizeof(sa);sa.lpSecurityDescr

c - 串口ReadFile读取0字节返回true

我正在尝试使用WindowsAPI从Windows7中的串行端口读取数据。当我尝试读入数据时,WaitCommEvent()触发得很好并且ReadFile()调用返回1作为状态,但没有数据被读入。在ReadFiledocumentation它说:Whenasynchronousreadoperationreachestheendofafile,ReadFilereturnsTRUEandsets*lpNumberOfBytesReadtozero.但是,我确信在通过串行端口发送的数据中没有EOT字符。我目前有两根USB电缆插入我的计算机并相互连接。我知道它们可以发送和接收数据,因为我已

c# - 文件正在被另一个进程使用

我有一个大致执行此操作的程序:打开一个文件并从中读取。关闭文件启动文件观察器以观察文件中的更改。一旦检测到更改,filewatcher的EnableRaisingEvents标志就会设置为false,并且该过程从第1步开始重复。问题是,从第4步到第1步后,它无法读取文件,说它正被另一个进程使用。我收到的错误:未处理的异常:System.IO.IOException:进程无法访问文件“c:\test.xml”,因为它正被另一个进程使用。怎么了?我的程序第1步中的读取器是否仍然打开文件,或者是某个完全不同的进程访问该文件,还是filewatcher在从4移至第1步后仍在监视文件,尽管将标志

C++文件读取的四种情况

简介:C++我们可以更具不同的目的来选取文件的读取方式,这里我会介绍C++中的四种文件读取方式。C++文件读取的一般步骤:1、包含头文件#include2、实例化对象:istreamfile3、打开文件:file.open("文件路径","打开方式"),打开文件后判断文件是否打开成功,file.is_open()返回一个bool类型,成功:true 失败:false4、进行文件读取操作5、关闭文件文件读取方法:第一种方法:采用“#include#include#includeusingnamespacestd;intmain(){ ifstreamreadFile; readFile.open