无法在win32项目中包含ntifs.h
我试图使用名为NTCreateFile的函数.当我编译它给我一个错误说
“找不到_NTCreateFile标识符”.我包含了标题winternl.h.接下来我尝试使用ZwCreatFile,根据MSDN我包括ntifs.h,但我无法包含该标头.它说“无法打开/找到目录”.我正在使用V @ 2008.问题是什么?我错过了什么吗? EDIT1: typedef NTSTATUS (*fp_CreatFile)( OUT PHANDLE FileHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,OUT PIO_STATUS_BLOCK IoStatusBlock,IN PLARGE_INTEGER AllocationSize OPTIONAL,IN ULONG FileAttributes,IN ULONG ShareAccess,IN ULONG CreateDisposition,IN ULONG CreateOptions,IN PVOID EaBuffer OPTIONAL,IN ULONG EaLength ); OBJECT_ATTRIBUTES myAttributes; int _tmain(int argc,_TCHAR* argv[]) { fp_CreatFile myFunction; HMODULE module = LoadLibrary(L"ntdll.dll"); if(NULL != module) { myFunction = (fp_CreatFile)GetProcAddress(module,"NtCreateFile"); } UNICODE_STRING string; IO_STATUS_BLOCK fileStatus; string.Length = 56; string.Buffer = L"C:userkiddoDesktop7zFM.exe"; string.MaximumLength = 56; HANDLE fileHandle; myAttributes.ObjectName = &string; myAttributes.Length = sizeof(OBJECT_ATTRIBUTES); long mystatus = myFunction(&fileHandle,FILE_GENERIC_READ,&myAttributes,&fileStatus,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ,NULL); return 0; } 当它试图调用它在消息框中给出以下错误. 解决方法
如果您阅读
MSDN documentation,第一段说:
其中说:(我突出了重要部分)
因此,您必须先从NtDll.dll加载要使用的函数,然后才能使用它们. 这是一个未经测试的示例代码示例: typedef NTSTATUS (__stdcall *NtCreateFile)( OUT PHANDLE FileHandle,IN ULONG EaLength ); NtCreateFile _NtCreateFile = (NtCreateFile)GetProcAddress(GetModuleHandle("ntdll.dll"),"NtCreateFile"); // You can now use the function _NtCreateFile(/* params */); // Don't forget the release the resources (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- microsoft-metro – 在ListView上收听click事件
- 数据绑定 – WinJS ListView和模板绑定
- windows-mobile – 无法创建SmartDevice CAB项目CAB文件
- windows10系统关闭自动更新服务
- 什么是在Windows上运行的最佳维基?
- windows – 无法添加对’Newtonsoft.Json’的引用
- windows-phone-7 – WP7工具包更新从LongListSelector中删除
- windows-mobile – 如何在Windows CE设备中最小化批处理文件
- windows-server-2008 – 有没有办法从命令行/ Powershell显
- windows环境设置mysql自动备份(测试成功)
- 在Windows Server 2008上设置Mercurial时出错
- windows-server-2012 – 在Windows Server 2012上
- 如何在Windows Phone 8(C#)框架中添加C DLL
- windows-8 – 双屏都市应用
- windows-7 – 如何在断开与RDP会话的连接时保持用
- osx – 现代IE Windows 10 Virtualbox for Mac Z
- winapi – Windows API:保证窗口收到的第一条消
- 深度学习番外篇---WIN10+PyTorch0.4.0+CUDA9.1环
- win DOC常用命令备忘
- 如何在Windows Server 2016上运行Linux Docker镜