Tag: createfile

使用CreateFile打开目录

我正在尝试使用CreateFile函数来访问目录信息。 我收到的win32错误代码为5,这意味着拒绝访问。 请指教。 CreateFile(path, GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero); 这是正在进行的调用,并且如文档中所述,正在使用’FILE_FLAG_BACKUP_SEMANTICS’。 DLL导入似乎工作正常,如下所示: [DllImport(“kernel32.dll”, SetLastError = true)] public static extern IntPtr CreateFile(string filename, uint desiredAccess, uint sharedMode, IntPtr securityAttributes, uint creationDisposition, uint flagsAndAttributes, IntPtr templateFile); 更新:我需要获取目录的句柄,以便我可以使用GetFileInformationByHandle()并提取唯一ID。 此方法目前适用于文件,目前无法使用目录。 更新:此问题的X是我需要一个目录的唯一标识符,该标识符不是其绝对路径。 即使移动或重命名目录,它也需要保持不变。 .NET没有提供刚刚提到的任何唯一标识符,只能通过使用win32来完成

在C#中创建随机文件

我正在创建一个指定大小的文件 – 我不关心它中的数据,虽然随机会很好。 目前我这样做: var sizeInMB = 3; // Up to many Gb using (FileStream stream = new FileStream(fileName, FileMode.Create)) { using (BinaryWriter writer = new BinaryWriter(stream)) { while (writer.BaseStream.Length <= sizeInMB * 1000000) { writer.Write("a"); //This could be random. Also, larger strings improve performance obviously } writer.Close(); } } 这不是有效的,甚至是正确的方法。 更高性能的解决方案? 感谢所有的答案。 编辑 对2Gb文件的以下方法进行一些测试(以ms为单位的时间): […]