线程被销毁时的通知[重复]

2024-02-29

有没有办法获得应用程序中线程不再运行(已返回)的通知?
我知道这在内核模式下是可能的(使用 PsSetCreateThreadNotifyRoutine),但是有没有办法仅使用 Win32 API 从用户模式知道这一点?

问题是我无法控制线程中的代码,因为我的模块是库的一部分。制作一个驱动程序来监视系统不会太难,但即使对于使用我的库的基本应用程序,用户安装驱动程序也很烦人。

我的代码使用 TLS 存储,在 Linux/Unix 下 pthread_key_create 可以获取指向线程被销毁时调用的函数的指针。但 TlsAlloc (Windows) 没有这样的东西......

提前致谢!


取决于你有什么样的图书馆。对于 DLL 可以处理 DllMain 中的线程终止(DLL_THREAD_DETACH). The MSDN http://msdn.microsoft.com/en-us/library/ms682583%28VS.85%29.aspx声明这是处理 TLS 资源的最佳位置。

请记住,此回调仅在线程干净退出时调用(而不是通过例如TerminateThread()).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程被销毁时的通知[重复] 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • Objective C - 后台执行选择器并且分离新线程选择器?

    detachNewThreadSelector 和performSelectorInBackground 都用于在后台调用方法 2种方法有什么区别吗 或者它们的工作方式相同吗 它们本质上是相同的 但范式略有不同 他们在幕后做着完全相同的事情
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • UndefinedFunctionError phoenix Elixir 新项目

    全新安装 Phoenix 后 我尝试触发一个新项目 当我尝试运行服务器时 我遇到了 Unchecked dependencies for environment dev gettext Hex package the dependency
  • Node.js 服务器启动速度非常慢

    我构建了一个小型 angular js Web 应用程序 托管在我的计算机上运行的 Node js 服务器上 当我启动节点服务器时 大约需要 30 35 秒 同事计算机上的完全相同的服务器需要 2 4 秒才能启动 我已在控制台中记录了时间
  • nhibernate 是否可以将查询作为 IDictionary 而不是实体类返回?

    我有一个实体人 public class Person public virtual int Id get set public virtual string FirstName get set public virtual string
  • iOS 魔法记录 & SQLCipher

    我正在使用 Magical Record 来保存我的数据 这些数据需要加密 所以我尝试将其与 SQLCipher 库结合起来 http sqlcipher net ios tutorial http sqlcipher net ios tu
  • 如何使用java的selenium web驱动程序获取特定optgroup下的选项?

    例如 我想从多选选项列表字段中选择特定 optgroup 下的选项
  • JNI GetByteArrayElements () 错误

    我是 JNI 的新手 所以我对 JNI 和英语都不熟悉 我的JNI项目是一个简单的文件读写 在 Java 中读取文件并将字节数组传递给 C API 然后使用 C 将其写入文件 我的源代码 Java代码是 public class FileI
  • 使用 jQuery 将活动类添加到导航中的当前页面

    我正在尝试将 活动 类添加到标题中当前页面的导航链接 我取得了一些进展 但遇到了一个小错误 希望得到一些帮助 我知道答案很明显 但是 我是 jQuery Javascript 的新手 我自己很难找到它 这是我的导航 HTML 结构
  • “这个分支有必须解决的冲突”但它已经合并了

    我合并了一个PR https github com DaniSchenk moment feiertage pull 8使用 GitHub Web 界面 成功解决了合并提交 https github com DaniSchenk momen
  • 关闭 websocket++ 连接

    当在 ASIO 模式下使用 Websocket 时 我开始连接 boost shared ptr
  • Rscript:没有名为...的包吗?

    我想使用 Rscript 以批处理模式运行 R 文件 但它似乎没有加载我需要的库 我收到的具体错误是 Error in library timeSeries there is no package called timeSeries Exe
  • 如何从 jQuery 函数内部的外部获取变量? [复制]

    这个问题在这里已经有答案了 我试图弄清楚如何从函数外部 jQuery 函数内部获取变量 但我得到Uncaught ReferenceError myvar is not defined 有什么办法可以做到这一点吗 我的代码的一个简单示例 f
  • 如何获得具有多个单位的输出的时间差

    再会 我在 as POSIXct 中有两个日期列 格式为 YYYY MM DD HH MM SS 我想得到两者之间的差异 以天小时 秒的格式显示 这是一些虚拟数据 a lt c 2018 03 20 11 52 25 AST 2018 03
  • 导航到目的地时仅创建一个片段实例(android)

    我正在使用导航组件 导航时 如果片段已经存在于后台堆栈中 我不想创建新的片段实例 并弹出前面已经存在的片段 findNavController navigate RequestTransferFragmentDirections actio
  • 为什么无作用域枚举的声明可以编译?

    In the Effective Modern C Scott Meyers 的书提到 无作用域枚举和有作用域枚举 枚举类 之间的主要区别之一是我们无法转发声明前者 请参阅第 3 章第 10 项 更喜欢有作用域的枚举而不是无作用域的枚举 例
  • 容错 JSON 解析

    我正在使用 Data Aeson 将一些 JSON 解析为记录类型 有时数据会添加到 JSON 中 这会破坏我的代码 因为 Aeson 抱怨如下 预期对象为 21 名称 值对 但有 23 个名称 值 我真的更喜欢以容错方式解析 JSON 我
  • 为什么 Chrome 扩展程序图像在添加到 DOM 时显示为损坏?

    我正在构建一个 Chrome 扩展 并尝试通过内容脚本将带有背景图像的 div 添加到 DOM CSS 加载正确 并且通过开发人员工具检查器查看图像 URL 似乎是正确的 close button css background url ch
  • 原始pcm格式的音频数据是如何存储的?

    我正在编写一个应用程序来操作音频 我需要首先将文件 wav MP3 等 转换为原始数据 样本以浮点形式呈现 我在cmd中使用ffmpeg ffmpeg i test wav f s16le acodec pcm s16le output d
  • Powershell - 如果进程未运行,则启动它

    菜鸟请帮忙 我正在尝试编写一个脚本来检查进程是否正在运行 如果没有 则启动它 如果该进程正在运行 则它不应该执行任何操作 到目前为止 我已经提出了以下内容 但它正在启动该进程的一个新实例 无论它是否已经在运行 任何帮助表示赞赏 Prog C
  • 尝试将生成的PDF发送到谷歌云功能以使用nodemailer发送电子邮件

    目标是让用户在表单中输入一些信息并将其输出到 PDF 中 我正在使用 JSPDF 来解析和创建 PDF 我已经成功获得了制作可打印 PDF 的代码 但为了避免办公室里到处都是纸张 我制作了一个云功能来将该 PDF 通过电子邮件发送给客户 这
  • 线程被销毁时的通知[重复]

    这个问题在这里已经有答案了 有没有办法获得应用程序中线程不再运行 已返回 的通知 我知道这在内核模式下是可能的 使用 PsSetCreateThreadNotifyRoutine 但是有没有办法仅使用 Win32 API 从用户模式知道这一