草庐IT

句柄泄露

全部标签

c++ - 获取已创建进程的进程句柄 Windows

我需要在运行我的程序时为刚刚创建的所有进程提供句柄或PID。到目前为止,我已经使用了这段代码,每次创建进程时都会告诉我。问题是我只获得有关创建的进程的信息,但我没有关于进程本身的任何信息。https://msdn.microsoft.com/en-us/library/aa390425(VS.85).aspx这是我获得事件的功能,但我不知道从哪里可以获得新流程的信息:HRESULTEventSink::Indicate(longlObjectCount,IWbemClassObject**apObjArray){HRESULThres=S_OK;for(inti=0;i谢谢

给定的 C++ Windows API GetSecurityInfo 无效句柄

我正在尝试使用WindowsAPI在Windows10中创建一个新的注册表项,即RegCreateKeyEx函数,然后使用GetSecurityInfo获取其DACL。所有断言都进行得很顺利,直到我到达所说的GetSecurityInfo函数调用,它给出了一个无效的句柄值错误(错误6)。我做错了什么?这是一个更复杂的项目的一部分,所以我只会在这里给出(或者我认为是什么,但我也可以添加其余的)相关部分:RegCreateKeyEx的包装器,使输出更易于处理并设置遇到的任何错误:inlineexternautoRegCreateKeyEx_safe(_In_constHKEYhKey,_I

c++ - 获取单击鼠标按钮的窗口句柄

嘿,我正在使用WindowsHook,我在系统范围内安装了鼠标Hook,并且运行良好。现在有一个问题,我需要获取鼠标被点击的窗口句柄。我该怎么做?鼠标Hook事件是否向我们传递了该信息? 最佳答案 由于您使用的是WH_MOUSE_LL,因此您正在创建一个低级鼠标Hook,它实际上接收到一个指向MSLLHOOKSTRUCT的指针。没有hwnd成员。您需要使用WH_MOUSE设置一个普通的鼠标钩子(Hook);然后你会得到一个指向MOUSEHOOKSTRUCT的指针你期待的.. 关于c++-

c++ - 如何在不注入(inject)任何 DLL 的情况下单击窗口时返回窗口句柄?

对于我的一个项目,我需要创建一个函数,当用户单击窗口(屏幕上显示的任何窗口,以及该窗口内的任何位置)时,该函数将返回一个窗口的句柄。我知道可以使用全局Hook,但我认为必须有一种更简单的方法,无需使用任何DLL注入(inject)。事实上,我可以在激活窗口时拦截鼠标左键单击或拦截。我可以在没有任何DLL注入(inject)的情况下使用这两种解决方案中的一种吗? 最佳答案 你可以使用LowLevelMouseProchook拦截点击,然后使用WindowFromPoint来确定窗口。(我还没有真正尝试过这个。)

windows - 当一个进程与其他进程结合运行时,观察到句柄泄漏

我的一个可执行文件在单独运行时打开了大约330个句柄。当它与另一个特定进程结合运行时,它会泄漏许多句柄。我使用了sysinternals的“句柄”实用程序来检查在这两种情况下打开的所有句柄是什么。当此进程与其他特定进程结合运行时,它具有以下句柄条目的额外内容。578:Process57C:Thread580:Process584:Thread588:Process58C:Thread590:Event598:Process59C:Thread5A0:Process5A4:Thread5A8:Process5AC:Thread5B0:Process5B4:Thread5B8:Event这

c++ - 通过基地址的模块句柄

我正在尝试在Windows上获取C++模块的模块句柄。我的问题是我只有模块的基地址和文件句柄,但GetModuleHandle只接收它的名称作为参数。在Windows上的C++中,有没有一种方法可以在不知道模块名称的情况下获取模块句柄? 最佳答案 您是否尝试过使用GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,(LPCTSTR)lpBaseAddress,&module)?

ios - 图形上下文的概念与文件句柄非常相似吗? (在 iOS 和其他系统上)

有时术语图形上下文有点抽象。它们实际上是系统资源,但它们是来自显卡的资源,就像文件句柄是来自硬盘驱动器或任何永久存储设备的系统资源一样?正如文件句柄有一些关于文件句柄是只读还是读/写的状态,以及下一次读取操作的当前位置——这些状态,GraphicsContext有关于当前笔划颜色的状态,笔画宽度,或任何相关数据。(更新:并且在写入模式下,我们可以转到200MB文件中的任意点并更改数据,就像我们拥有GraphicsContext的Canvas并在其上绘制东西一样)因此,GraphicsContext实际上是全局的、系统范围的资源。它们不是应用程序单例或任何东西的一部分,就像文件或文件句柄

c - 如何枚举内核中指定进程的所有打开句柄(Windows)

我有一个内核驱动程序。我如何枚举我的内核驱动程序中指定进程的所有打开句柄?我想关闭这些句柄。谢谢! 最佳答案 Iwanttoclosethesehandles.就其值(value)而言,仅仅因为可以做某事,并不意味着应该做。这是个坏主意。也就是说,可以使用对Zw/NtQuerySystemInformation的未记录调用来枚举所有进程的所有句柄。具有信息类SystemHandleInformation。使用这些术语进行网络搜索会得到您想要的结果。 关于c-如何枚举内核中指定进程的所有打

windows - Delphi Firemonkey Cross Platform - 传递 Windows 句柄的通用方法

我在我的第二个适用于Windows和OSX的Firemonkey应用程序中埋头苦干,慢慢地转换我的函数库以处理跨平台问题。我正在尝试创建一个通用的SelectDirectory函数,该函数将为Windows或OSX运行特定于平台的代码。我让SelectDirectory在两个单独调用的平台上工作得很好,但特定于Windows的平台需要hwndparent句柄才能运行。这是在IFDEFMSWINDOWS指令中运行的(就像OSX在其编译器指令中一样)。如何将通用句柄传递给此函数,或者如何引用Application.MainForm或可以在此函数内转换为Windows句柄的内容?我希望避免在

windows - FindWindow 收到的句柄是否需要释放?

我正在编写的应用程序正在使用虚拟键盘。要显示、隐藏、调整大小或移动虚拟键盘,我首先需要通过调用FindWindow函数获取它的句柄,然后通过PostMessage向它发送一些消息。由于我没有使用winapi的经验,我的问题是我是否需要以某种方式释放这个句柄,或者我可以在完成后忘记它吗?虚拟键盘是一个独立的进程,其生命周期比我的应用程序长。 最佳答案 您不需要完成此句柄。它由创建窗口的进程拥有,该进程还负责销毁它。与内核句柄(文件句柄、事件句柄、互斥句柄等)不同,窗口句柄不进行引用计数。您调用FindWindow,然后对窗口句柄执行需