草庐IT

filter_flags

全部标签

c++ - 具有重叠 I/O 的 FILE_FLAG_NO_BUFFERING - 字节读为零

我在使用带有重叠I/O的标志FILE_FLAG_NO_BUFFERING时观察到一个奇怪的行为。我调用了一系列ReadFile()函数调用,稍后使用GetOverlappedResult()查询它们的状态。我所说的奇怪行为是,即使文件句柄良好并且ReadFile()调用返回时没有任何错误(预期的ERROR_IO_PENDING除外),从GetOverlappedResult()调用返回的“字节读取”值是某些文件为零,每次我运行代码时,它都是一组不同的文件。如果我删除FILE_FLAG_NO_BUFFERING,事情就会开始正常工作,并且没有字节读取值为零。下面是我如何使用FILE_FL

windows - 为什么我不能使用 FILE_FLAG_BACKUP_SEMANTICS 打开 GENERIC_ALL 或 FILE_ALL_ACCESS 文件?

我正在尝试使用FILE_FLAG_BACKUP_SEMANTICS来绕过文件权限,但如果我请求GENERIC_ALL或等效的FILE_ALL_ACCESS它就不起作用作为访问掩码。CreateFile函数返回ERROR_ACCESS_DENIED。例如,h=CreateFile(L"c:\\working\\backup-semantics-test\\xyzzy\\test.txt",FILE_ALL_ACCESS,FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE,0,OPEN_EXISTING,FILE_FLAG_BACKUP_S

c - 使用和不使用 FILE_FLAG_NO_BUFFERING 的 NTFS 文件访问时间

我正在尝试对NTFS的文件读取时间(顺序访问)进行基准测试。我的代码获取开始时间,执行大小等于4096字节(系统上NTFS的簇大小)的读取并记录结束时间。然后存储两个时间之间的差异,并重复该过程,直到到达文件末尾。我目前使用的文件大小是40K,所以得到10个时差值。当访问没有FILE_FLAG_NO_BUFFERING打开的文件(使用CreateFile)时,第一个block的访问时间接近30微秒,然后下降到大约7微秒用于后续访问(由于缓存)。当使用FILE_FLAG_NO_BUFFERING时,第一个block的访问时间接近21毫秒,随后的访问时间下降到大约175微秒。第一个bloc

windows - FILE_FLAG_NO_BUFFERING 如何与向通信设备打开的句柄交互?

正如标题所说,我正在编写一个网络程序,我在其中使用CreateFile打开网络驱动程序的句柄,并且我一直在试验NO_BUFFERING标志。大多数文档甚至都不会提及将其与通信设备一起使用,而那些这样做的文档(又名MSDN引用等)只是简单地提到您可以。有谁知道这会如何影响与设备的通信? 最佳答案 这是一个设备驱动程序实现细节,您在CreateFile()调用中指定的选项在IRP_MJ_REQUESTrequest中传递.我链接的那个是用于文件系统的,非常漂亮。通过IrpSp->Parameters.Create.Options链接单击

windows - libusb-win32 : Automated installation of a driver filter

我在让基于libusb-w32的程序检测设备时遇到了问题。该程序必须检测数码相机,我需要自动安装驱动程序过滤器,以便无需任何手动操作即可检测到任何新相机。我使用了install-filteri--class={6BDD1FC6-810F-11D0-BEC7-08002BE2092F},我。e.为MTP设备安装过滤器,它似乎可以工作。但今天我在一台干净的机器上试了一下,发现它实际上只是看起来那样。尝试使用不同参数安装过滤器-运气不好。我能够检测到设备的唯一方法是使用inf-wizard.exe。它安装了驱动程序,使我的程序能够检测设备,但也破坏了数码相机的原始Windows功能。然后,我

windows - 如何从 WDK 8.1 Toaster Sample Driver 安装 KMDF Filter Driver?

我正在通过研究WDK8.1学习Windows驱动程序开发ToasterSampleDriver.我可以构建、安装、调试KMDF总线和KMDF功能驱动程序并与之通信。我遇到的问题是安装KMDF过滤器驱动程序。我尝试使用devcon安装过滤器驱动程序,但总是失败。任何帮助将不胜感激。宿主系统:Windows8.1专业版x64构建:VisualStudio2013Pro和WDK8.1调试:WinDbg(命名管道)目标系统(虚拟机):Windows8.1企业版评估启用内核调试和测试签名安装:devcon 最佳答案 我在OSR网站上找到了答案

windows - 除了 "flags"参数外,ChildWindowFromPointEx 和 ChildWindowFromPoint 有何不同?

WindowsAPI有ChildWindowFromPoint()和ChildWindowFromPointEx()函数,它们的区别在于后者有uFlags参数指定要跳过的窗口。看起来如果我将CWP_ALL传递给ChildWindowFromPointEx(),我将获得与使用ChildWindowFromPoint()完全相同的效果>.uFlags参数的唯一区别是什么?我可以只在任何地方使用ChildWindowFromPointEx()并在需要ChildWindowFromPoint()行为时传递CWP_ALL吗? 最佳答案 如果有

c++ - HTTP_RECEIVE_REQUEST_FLAG_FLUSH_BODY 不复制 http body

根据MSDNdocumentation,传递到HttpReceiveHttpRequest函数中的HTTP_RECEIVE_REQUEST_FLAG_FLUSH_BODY标志导致实体主体被复制到传入的HTTP_REQUEST结构中。我写了一个简单的http服务器(见下文),它调用这个函数并设置了这个标志。然后,我从测试客户端发送了一个4MB的POST请求,并将调试器附加到http服务器,以查看函数返回后有多少字节被复制到HTTP_REQUEST结构中;我观察到这没有复制http正文,只复制了header。有没有办法让HttpReceiveHttpRequest将整个4MB主体复制到HT

windows - 带有 SEE_MASK_FLAG_NO_UI 的 ShellExecuteEx 仍然显示消息

在我的系统上,.xyz扩展名根本没有注册。因此,当我在资源管理器中双击.xyz文件时,Windows10会弹出标准的“您希望如何打开此文件”对话框。现在,当我运行这个简短的代码片段时,会显示与上面相同的对话框,即使我在sei.fMask中放置了SEE_MASK_FLAG_NO_UI标志:SHELLEXECUTEINFOsei={0};sei.cbSize=sizeof(SHELLEXECUTEINFO);sei.fMask=SEE_MASK_FLAG_NO_UI;sei.hwnd=AfxGetMainWnd()->GetSafeHwnd();sei.lpVerb=_T("open");

c++ - 使用 FILE_FLAG_BACKUP_SEMANTICS 后无法更改目录时间戳

我也在尝试使用FILE_FLAG_BACKUP_SEMANTICS后更改目录的时间戳。我的代码片段如下intSetDirectoryTime(char*Path){FILETIMEftCreate,ftAccess,ftWrite;Handle=CreateFile(Path,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);if(Handle==INVALID_HANDLE_VALUE){//UnabletoopendirectoryreturnFALSE;}if(Se