问题标签 [ntdll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java和ntdll.dll的关系
我有一个使用 JNI 连接到后台 C 库的 Java 应用程序(tomcat-app)。这个 java 应用程序以一种非常随机的方式崩溃。我在系统事件中看到,这是基于 ntdll.dll 崩溃的,它是 Windows/System32 中的系统库。
有人可以告诉我,ntdll.dll 提供了哪些功能,它的用途是什么以及为什么 java 需要这个 ntdll.dll?
我使用 Google 来寻找解决方案,但是这种崩溃几乎可能发生在所有 Windows 系统上,我结合了很多应用程序(似乎它不仅仅是一个 windows-java 问题)。标准解决方案是重新安装/更新系统和/或应用程序。但是有没有解释,为什么这个 ntdll.dll 会造成这么大的麻烦?
你认为,如果我将更高版本的 ntdll.dll 放到 java 目录或 c-library 的目录中,这会有所帮助吗,这样 java 或 c-lib 可以采用这个较新的版本,而不是 Windows /System32 版本?
非常感谢您的建议。
c++ - 从资源文件更改光标时出现 C++ 错误
我正在尝试使用资源文件中的 .cur 文件更改鼠标的光标。
当我尝试我的代码时,我收到此错误:
在 CleanResourceFiles.exe 中的 0x77EB7392 (ntdll.dll) 引发异常:0xC0000005:读取位置 0x00000066 时访问冲突。
这是代码:
注意:IDC_CURSOR1
是我的光标,32512
是经典箭头光标的 ID。我还包括<Windows.h>
和我的resource.h
.
我正在使用带有 Win10 的 Visual Studio Community 2017。
我尝试了其他功能,例如LoadCursor()
. 上面的代码来自“VineMemz”。
最后,当我尝试LoadFromFile()
使用文件路径更改光标时.cur
,它可以工作。
c# - 有人可以解释 RtlAdjustPrivilege
我有 java 和 python 的知识,但是任何名称中包含 C 的语言都很难理解和学习。最近我尝试使用 NtRaiseHardError 在 Windows 中创建 BSOD,在 c++ 中尝试几次(不成功)后,我转向了 c#。
使用这里的代码我能够制作一个程序并导致蓝屏死机。后来我试图完全理解代码,但我无法理解 RtlAdjustPrivilege 在做什么。
我看到这是某种特权更改,但是在程序运行时,尽管我使用的是用户帐户,但我没有看到管理员密码提示,因此我相信它不会升级为管理员特权。如果有人知道这个函数到底是做什么的或它是如何工作的,请解释一下。这是它的实现方式:
要导入它:
稍后使用它:
c# - 外部 dll SEHException ntdll 崩溃
Patient 是使用 VS 2008 编译的 C# 应用程序。应用程序在使用 Windows 7 64 位和 Windows 10 Pro 64 的多台客户端计算机上运行。6 月 11 日,他们报告了应用程序问题,可能是在某些 Windows 更新或其他应用程序安装之后,环境发生了变化。
尝试回到 VS 2008 并调试情况导致我们在调用外部 delphi 库 dll 的线路上出现 System.Runtime.InteropServices.SEHException。
从那时起,我们在客户端和自己的计算机上进行了多次测试。但是我们无法创建重复的场景,结果有时它会起作用,有时却不起作用。我们正在寻找任何提示,因为在问题上花费了一周之后,我们并没有继续解决这个问题。
vb.net - 线程应用程序每 2 或 3 天崩溃一次 ntdll.dll
我有一个在客户端机器上运行的应用程序,它使用线程,并且工作正常,直到问题出现。该应用程序每 2 或 3 天崩溃一次,我必须重新启动它。这是我可以从客户端机器上的事件查看器中获得的错误信息。
试图定位问题是疯狂的。不知道如何开始,因为问题并不经常出现。有什么方法可以调试/捕获此类问题以尝试解决它?任何帮助将不胜感激。
c# - NtSetInformationProcess 与 ProcessQuotaLimits
我试图通过使用ProcessQuotaLimits信息类调用NtSetInformationProcess来限制进程 CPU 使用率。将NtQueryInformationProcess与ProcessQuotaLimits类一起使用时,我得到了页面限制/工作集等的正确数字,但 CpuRateQuota 未填充。
我正在使用的代码
调用返回 NT_STATUS 0,表示成功。我正在 Windows server 2016 Standard 上尝试这个,它应该等同于 Windows 10。在这种情况下,使用 JobInformation 和暂停/恢复进程不是可行的选择。
c - 是否可以使用 PROCESS_ALL_ACCESS 或 PROCESS_TERMINATE 权限打开 Windows Defender (MsMpEng.exe) 进程的句柄?
我已经按照微软关于如何使用 SeDebugPrivilege 获得任何进程的句柄来
获得SE_DEBUG
我的进程令牌的权限。
但是,当尝试以完全权限打开句柄时,我收到( )MsMpEng.exe
的错误代码。c0000022
STATUS_ACCESS_DENIED
我想知道我是否犯了错误,或者根本不可能获得该进程的访问权限级别。
我打开 Defender 进程句柄的代码如下。此块位于将SE_DEBUG
权限添加到我的令牌的块之后。
c++ - GetProcAddress 与 __declspec(dllimport)
两者有什么区别?
即用于查找函数,例如 Nt___ 或 Zw___
c# - .Net 应用程序中带有 STATUS_STACK_OVERFLOW 的应用程序崩溃是否意味着堆栈溢出发生在本机代码中?
我在 ntdll.dll 中得到一个带有执行代码 c00000fd (STATUS_STACK_OVERFLOW) 的 appcrash。
这是否意味着在我的托管代码之外的本机代码中某处存在堆栈溢出?因为对于托管代码,我们有System.StackOverflowException
. 但是在我的情况下没有,也没有可以提供线索的堆栈跟踪。
winapi - 短名称和并行文件副本
我正在处理以下代码:
枚举源目录和目标目录并生成 {
src
,dst
} 对...每一对都被发送到一个工作线程池
...执行工作,例如“复制
src
到dst
”
(所有这些都被简化了很多)。
问题:
创建文件时,它还会获得一个短名称,该短名称可以与源目录中的另一个文件相同(名称冲突),这会导致各种效果(取决于操作顺序)。例如,复制两个文件my file
并MYFILE~1
可以在目标中生成 2 个或 1 个文件(取决于您的运气),可能包含损坏的内容(在后一种情况下)。
问题:
如何避免此类碰撞产生的问题?有一个函数可以创建/打开忽略短名称的文件会很好......
笔记:
不能假设任何关于短名称的生成方式。不同的系统采用不同的方案(见这个)
即使您以顺序方式(一个接一个)运行这些作业——它们也需要按顺序执行,这取决于短名称生成逻辑(这是未知的)。另外,这意味着在运行任何作业之前在内存中加载和排序/等整个目录
源和目标都可能非常大(可能是数百万个文件),(如果可能的话)我想避免将整个目录加载到内存中或多次枚举它
无法关闭目标卷中的短名称生成并将其作为要求不是一种选择(另外,将其关闭也不会删除现有的短名称)
应用程序仅限于 Win32 API 和 NT API
编辑:在我看来,在一般情况下,即使所有事情都发生在一个线程上,您也无法做到这一点——仅仅是因为无论您选择什么顺序,都会有一个短名称生成方案和一组保证产生的文件名处理过程中的碰撞。
如果这是正确的 - 系统实用程序如何复制文件?在复制完成后,他们是否假设一些关于短名称的内容或执行“验证和修复差异”?