c++ - ADsOpenObject() 返回 -2147024882 (0x8007000E) -> OUT_OF_MEMORY

标签 c++ active-directory out-of-memory adsi

我有一个用于身份验证的 C++ DLL,它会在每次登录时由 Windows 服务加载。

在该 DLL 中,我使用了 Windows ADSI 函数 ADsOpenObject()Active Directory 获取用户对象。

HRESULT hr = ADsOpenObject(L"LDAP://rootDSE",
                           L"username",
                           L"password",
                           m_dwADSFlags,
                           IID_IDirectorySearch,
                           (void**)&m_DSSearch);

通常这多年来一直有效。但目前我得到错误代码

-2147024882 (0x8007000E)

这是OUT_OF_MEMORY .当我重新启动使用我的 DLL 的服务时,它可以正常运行数周,但随后开始出现错误。

现在我找不到内存不足的什么了。任务调度程序看起来不错,可用内存充足。
我该怎么做才能解决这个问题?

最佳答案

which is OUT_OF_MEMORY.

是E_OUTOFMEMORY,一个COM错误码。描述不是很有帮助,Microsoft 代码往往会针对任何“资源不足”错误返回此错误代码,而不仅仅是内存。可能是达到了内部限制,可能是失败的 winapi 调用。

而且不一定局限于直接涉及的软件。例如,泄漏内核池内存的错误设备驱动程序可能是错误的间接来源。

如果您能在应用程序事件日志中找到一些东西,您会很幸运,同时查看报告错误的机器和域服务器。任务管理器可能会提供线索,添加句柄、GDI 对象、用户对象、提交大小、页面池和 NP 池列。除此之外很难给出具体的建议。毫无疑问,这是一次泄漏,当您必须定期重新启动机器以恢复时,它会发出很大的嘎嘎声。祝你好运。

关于c++ - ADsOpenObject() 返回 -2147024882 (0x8007000E) -> OUT_OF_MEMORY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419852/

相关文章:

c++ - 为什么在实践中向右移动在 Neon 和 SSE 中向左移动(反之亦然)?

asp.net - 即使仍有可用内存,w3wp.exe 也会耗尽内存

azure - 连接-AzureAD : parsing_wstrust_response_failed: Parsing WS-Trust response failed

hadoop - 5.6 GB 对 Cloudera 来说还不够吗?

amazon-web-services - AWS如何释放/dev/nvme1n1p1和/dev/loop#处理 "No space left on device"

c++ - 绘制动态几何的正确或最佳方法是什么

c++ - 在 C++ 中,如果成员函数是虚拟的,什么时候可以使用静态绑定(bind)?

c++ - 使用 C++ 在 Unix 上打开文件

java - 使用 JNDI 在 Active Directory 中创建自定义用户属性

powershell - 从CSV创建映射以获取AD用户