windows – 创建一个目录并通过发出一个IRP来获取句柄
发布时间:2020-12-14 05:30:02 所属栏目:Windows 来源:网络整理
导读:当我们通过CreateFile创建文件时,创建文件并获取句柄. 但CreateDirectory不返回目录的句柄. 我还想在创建目录时获取句柄. 我想通过只发出一个I / O请求数据包来处理这个问题. 所以,’执行CreateDirectory,然后使用FILE_FLAG_BACKUP_SEMANTICS创建CreateFile.
当我们通过CreateFile创建文件时,创建文件并获取句柄.
但CreateDirectory不返回目录的句柄. 我还想在创建目录时获取句柄. 所以,’执行CreateDirectory,然后使用FILE_FLAG_BACKUP_SEMANTICS创建CreateFile.’不会是一个答案. 我可以在Usermode(Win32 Api)中使用Api吗? 解决方法
NT可以这样做,但Win32不会暴露它.您需要使用NT API.
NtCreateFile ,具体而言.它应该遵循
ZwCreateFile的相同参数.
这是一个说明性的例子(在网络表单中匆忙地被黑客攻击 – YMMV): HANDLE CreateDirectoryAndGetHandle(PWSTR pszFileName) { NTSTATUS Status; UNICODE_STRING FileName; HANDLE DirectoryHandle; IO_STATUS_BLOCK IoStatus; OBJECT_ATTRIBUTES ObjectAttributes; RtlInitUnicodeString(&FileName,pszFileName); InitializeObjectAttributes(&ObjectAtributes,&FileName,NULL,NULL); Status = NtCreateFile(&DirectoryHandle,GENERIC_READ | GENERIC_WRITE,&ObjectAttributes,&IoStatus,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,FILE_CREATE,FILE_DIRECTORY_FILE,0); if (NT_SUCCESS(Status)) { return DirectoryHandle; } else { SetLastError(RtlNtStatusToDosError(Status)); return INVALID_HANDLE_VALUE; } } 有些事要注意…… > NT路径的约定与Win32路径略有不同……您可能需要清理路径.>在谈论HANDLE时,NT API通常处理NULL而不是INVALID_HANDLE_VALUE.>我没有在这里做,但通过更改InitializeObjectAttributes调用,您可以做有趣的事情,比如相对于另一个目录句柄创建.当然,我放在这里的所有旗帜你也可能想要改变.请参阅文档和/或Web以获得最佳结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- active-directory – Windows域帐户遭到入侵后的下一步是什
- .net – Windows / Linux之间的Unison同步在传输过程中随机
- windows – 如何导出/传输DHCP数据?
- win快捷键
- windows-7 – 如何查看软件RAID 1重新同步的状态?
- windows – Heroku:’https://git.heroku.com’的用户名:
- windows – 在VMWare Workstation 7.1.0中输入虚拟Server20
- Microsoft Edge浏览器不支持收藏夹中的javascript bookmark
- windows – VPN上的动态DNS注册?
- windows – 使用WPP跟踪多个ETW提供程序
推荐文章
站长推荐
- CreateWindowEx failed (当前程序已使用了 Windo
- Windows下php curl调用本地url 499问题
- 如何在Windows 7中使用命令行执行大型MySql数据插
- windows-server-2008-r2 – 神秘的带宽限制
- 如何从.NET应用程序启动`powercfg.exe -energy`?
- windows – 分组gridView中的不同项目大小
- 3dsmax2015卸载/安装失败/如何彻底卸载清除干净3
- 如何在Azure App Service上部署Windows服务
- Filezilla客户端无法从Filezilla Server获取目录
- 无法在Windows上打开使用Cygwin修改的文件,在ls
热点阅读