草庐IT

system.io.file

全部标签

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 - 用于在 Windows 上监视单个文件 IO 性能的 API

我可以使用哪些WindowsAPI来监控特定文件或文件集的I/O性能指标?性能计数器似乎只提供更高级别的对象,例如LogicalDisk和PhysicalDisk。我正在寻找Windows资源监视器在磁盘->磁盘事件下使用的东西,即读/写bps和响应时间。 最佳答案 我快速搜索了“Perfmonindividualfiles”,没有看到任何有希望的东西。但我不确定衡量单个文件的性能是否有意义。I/O事件在I/O堆栈的多个位置合并,结果是操作系统在不同级别无法区分一个文件与另一个文件的文件I/O。假设应用程序本身没有进行任何缓冲/缓存

Windows 上的 node.js 经常失败并显示 'EMFILE: too many open files'

在Windows上使用各种工具时,例如browserify,我经常看到:Error:EMFILE:toomanyopenfiles,open'C:\Users\mike\Documents\myapp\node_modules\babel-polyfill\node_modules\core-js\package.json'atError(native)与Linux不同,最大打开文件数是一个可以更改的软限制,似乎EMFILE是Windows中的硬限制。我该如何解决这个问题?注意:我已经解决了这个问题,但是花了一个星期的时间,我在网上搜索时找不到任何东西,所以我准备把答案放在下一个nod

Python 没有找到 System32

我想打开我创建的一个exe,它位于Windows的System32文件夹中。我通过命令这样做:subprocess.call(["C:\\Windows\\System32\\ListTest.exe"])但不知何故Python找不到System32文件夹。我将我的exe复制到Windows中的“系统”目录,如果我想通过Python打开那里的exe,一切正常。为什么Python找不到System32目录? 最佳答案 @eryksun和@KeithHall给出了正确的答案。因为我使用的是64位操作系统和32位python,所以它看起来

.net - 是否有具有相同公共(public)接口(interface)的 System.Drawing.Graphics 的直接替代品?

我们有一个老化的.NETWindows桌面海洋导航应用程序,它对S-57海洋矢量图(map)、船舶、预测器和各种导航对象(例如路线)进行一些中等复杂的渲染。渲染是很久以前使用System.Drawing.Graphics实现的。在某些情况下,绘图会变得非常慢。我们使用了VS2013分析器和dotTrace分析器来优化我们代码中明显的热点。剩下的时间花在Graphics.DrawLines、Graphics.FillPolygon等方法上从长远来看,渲染需要重新实现或移植到硬件加速的图形API。是否存在与System.Drawing.Graphics具有相同接口(interface)的任

windows - system.net.sockets 和 windows 10 错误?

我在Windows10中遇到一个非常奇怪的应用程序问题。它由同一台计算机中的多个.exe组成,它们之间使用system.net.sockets库通过套接字进行通信。我遇到的问题是,在新计算机上安装Windows10后,安装所有Windows更新,然后安装该应用程序,与套接字的连接无法正常工作,应用程序失败。最奇怪的是,如果您将计算机单独放置1-2天,应用程序就会开始正常运行。安装1803版本更新后,同样发生了,它停止工作,然后在一两天后工作。知道它会是什么吗?有没有人见过类似的东西? 最佳答案 看来真的和你说的1803更新有关症状:

java - 为什么我的应用程序放在 C :\Program Files on windows 10 but not on windows 7? 时需要管理员权限

我的JavaRCP应用程序(App.exe)最近从32位转换为64位。由于它是一个64位应用程序,我使用NSIS创建了一个安装程序,它将所有必需的文件与App.exe一起转储到C:\ProgramFiles中。当App.exe运行时,当应用程序试图在编辑模式下打开文件(在C:\ProgramFiles中)以转储结果/日志时,我收到安全异常(访问被拒绝)。当我以管理员身份运行App.exe时,它工作正常。即使在非管理员模式下运行,它在Windows764位机器上也能正常工作。知道如何在非管理员模式下运行App.exe吗?Note:ThisisnottheproblemofNSISassa

c++ - CMake 生成的程序无法在 Windows 上链接 : tries to link to non-existent file

我正在尝试在Windows上编译一个非常简单的测试程序,但不断收到链接器错误。要链接的程序如下:#includeintmain(){boost::asio::io_contextcontext;}虽然CMakeLists.txt看起来像这样:cmake_minimum_required(VERSION3.10FATAL_ERROR)project(windows-test)SET(CMAKE_CXX_STANDARD17)find_package(Boost1.6.7COMPONENTSsystem)include_directories("${Boost_INCLUDE_DIRS}"

c - 在 Visual Studio 中设置 FILE_ATTRIBUTE_DEVICE

我想知道是否可以在VisualC++中调用CreateFile函数来创建具有属性FILE_ATTRIBUTE_DEVICE(0x00000040十六进制,64十进制)的文件。根据MSDNAPI,FILE_ATTRIBUTE_DEVICE是保留的,因此我不能使用它,但我知道一定有某种方法可以创建具有此类属性的文件。我必须做什么才能做到这一点?是否有其他API调用,或者我是否需要创建一个新结构?谢谢 最佳答案 该标志的存在是为了识别代表设备而不是文件的句柄。例如,使用CreateFile打开\\.\C:返回驱动器device的句柄,而不