jjzjj

CreateFile

全部标签

c++ - 从 UMDF 驱动程序 (C++) 调用 CreateFile 时出现“访问被拒绝”错误

我正在创建一个需要更改LCD背光亮度的UMDF驱动程序。以下代码行在控制台应用程序中运行并成功返回设备句柄:HANDLEhDevice=CreateFile(L"\\\\.\\LCD",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);但是,当我在我的驱动程序中使用完全相同的一段代码时,它返回INVALID_HANDLE_VALUE并且GetLastError()给出代码5,即“访问被拒绝”正在使用标准WDKRemoteUser配置文件在x64Windows7计算机上远

c++ - 使用 C++ 读取大文件的 SSD

我正在使用Windows1064位机器、6850KCPU和64GBDDR4RAM,以及通过M.2连接的三星SSD。我想将一个大小约为15GB的文件读入内存。我目前正在使用fstream通过调用其读取函数将整个文件读入一个无符号字符数组。但是,我达到的速度并未达到SSD的最大读取速度(当SSD读取速度约为3500MB/s时为1500MB/s)。所以我想知道是否有更快的方法?如果我对较小的block进行多次读取调用会更快吗?如果是这样,最佳block大小是多少?我看到有人在之前提出的一些问题中提到了4K读取。这适用于这种情况吗?感谢任何帮助。我的代码摘录如下我读取的代码如下fstreamm

c++ - CreateFile 打开在另一个终端 session 中创建的 MS-DOS 设备

我有一个(某种过滤器)驱动程序,它应该与用户模式组件通信。它通过调用IoCreateDevice创建一个设备对象,然后通过IoCreateSymbolicLink为它创建一个所谓的MS-DOS符号链接(symboliclink),使用户可以访问它-模式代码(通过CreateFile)。这或多或少是一种标准技术。驱动程序创建一个形式为\DosDevices\mydevicename的符号链接(symboliclink),而用户模式代码打开一个名为\\.\mydevicename的文件。现在,当驱动程序在终端服务器session的上下文中创build备时,问题就开始了。创建的符号链接(sy

c++ - 使用 FILE_FLAG_DELETE_ON_CLOSE 标志创建文件

在描述我的问题之前,这里是我正在编写的程序(IHExplorer.exe)的描述:这是一个C++应用程序。IHExplorer应用程序看起来尽可能像Windows资源管理器窗口。但有一个异常(exception),那就是从这个资源管理器窗口中启动文件会首先将它们解密到用户的临时文件夹,然后启动与文件扩展名关联的应用程序并在关闭时删除文件。我遇到的问题是文件关闭时自动删除。这是一个场景:用户在IHExplorer中双击加密的.txt文件。IHExplorer解密内存中的.txt文件,然后使用::CreateFile将其写入%TEMP%,它返回文件的句柄(IHExplorer必须至少保持此

c++ - 用于跟踪 CreateFile 调用的 Pin 工具

我制作了一个pin工具来转储CreatFilewin32调用(在我的例子中是CreateFileW)及其返回值。它看起来像这样:/*...*/VOIDImage(IMGimg,VOID*v){RTNcfwRtn=RTN_FindByName(img,"CreateFileW");if(RTN_Valid(cfwRtn)){RTN_Open(cfwRtn);RTN_InsertCall(cfwRtn,IPOINT_BEFORE,(AFUNPTR)CreateFileWArg,IARG_ADDRINT,"CreateFileW",IARG_FUNCARG_ENTRYPOINT_VALUE,

c++ - CreateFile GetFileTIme 设置文件时间

我在使用GetFileTime和SetFileTime时遇到问题说到目录。具体来说,我认为我的问题是我是WinAPI的新手,我不认为我得到了正确处理。有两种情况。首先,我只需要一个句柄来获取文件或目录时间戳(创建、访问、修改)。我想以安全灵活的方式制作这个handle。不想在参数上过于慷慨。第二,我需要一个允许我修改文件或目录的句柄时间戳。我还想以最少的权限但以灵活可靠的方式创建此句柄。我所说的灵活是指在这两种情况下,我都需要代码在本地、网络共享和多线程应用程序中工作。多线程部分不是必需的,因为我的应用程序不会在文件/目录上创建多个句柄,但在后台运行的其他一些应用程序可能会。//QUE

c++ - CreateFile 和长设备名

我正在使用CreateFile打开设备。一切正常,直到设备名称太长。在文档中说:IntheANSIversionofthisfunction,thenameislimitedtoMAX_PATHcharacters.Toextendthislimitto32,767widecharacters,calltheUnicodeversionofthefunctionandprepend"\\?\"tothepath.Formoreinformation,seeNamingFiles,Paths,andNamespaces.我正在尝试使用CreateFileW并将“\\?\”添加到路径中,但

c++ - CreateFile/WriteFile 没有破坏旧文件的内容

旧内容不会被清除。相反,数据正在被覆盖,所以我仍然看到旧内容。我没有做什么?hFile=CreateFile(fname,//opentestfile.txtGENERIC_WRITE,//openforreading0,//donotshareNULL,//defaultsecurityOPEN_ALWAYS,//FILE_ATTRIBUTE_NORMAL,//normalfileNULL);//noattributetemplatedwBytesToWrite=buff.GetLength();WriteFile(hFile,buff.GetBuffer(100),dwBytesT

c++ - 将字符串转换为 LPCWSTR 以供 CreateFile() 寻址串行端口

在使用WindowsCreateFile函数寻址串行端口时,我似乎遇到了一些TEXT/UNICODE问题。有人可以帮忙指出我的错误吗?我正在使用VS2008在VC++中编写一个Win32控制台应用程序。我可以像这样创建一个句柄来寻址串口:#include#include#includeintmain(){HANDLEhSerial;hSerial=CreateFile(L"\\\\.\\COM20",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);`return0;}这很好用(\\\\.\\位对

c++ - CreateFile 失败并出现错误 ERROR_SHARING_VIOLATION

我使用CreateFileapi,有时它随机失败并出现错误:ERROR_SHARING_VIOLATION。我用谷歌搜索了一下,几乎没有关于这个错误的信息。奇怪的是下次打开同一个文件还是蛮开心的。这是我的代码:voidFileHandle::open(constchar*fileName,FILE_MODEmode){if(m_bIsOpen)close();HANDLEfh=NULL;DWORDdwDesiredAccess=GENERIC_READ;DWORDdwShareMode=FILE_SHARE_READ;DWORDdwCreationDisposition=OPEN_EX