OpenThread种种

2024-01-01 13:48
文章标签 种种 openthread

本文主要是介绍OpenThread种种,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我在Windows NT系统(包括2K和XP)和Windows CE系统各写有一个工具,专门用来研究系统的运行时状态,比如进程、线程的各种信息,哪些DLL被哪些进程加载了,等等。如果某天突然想到一些好玩的东西,我也会把它加到工具里,比如,下图的这个,在系统登陆、锁定界面上运行了一个计算器。

一般情况下,我比较喜欢做的事是观察线程的Call Stack。这就要用到一个关键的API:OpenThread。基本上,想要获得跟线程有关的信息或者控制线程的运行(比如说你可以用 SuspendThread挂起一个线程甚至整个进程),都得先通过它来拿到线程的句柄。不过在Windows系统上,除了Windows 2K/XP/ME等平台,其他平台并没有一个现成的WIN32 API可供使用。这种情况下,我们必须以某种形式模拟OpenThread。

  • Windows NT 4.0。在NT 4.0的时代,可能是微软担心它过于危险,OpenThread还没成为一个标准的Win32 API。但是在NTDLL里提供了一个Native API:NtOpenThread。如果你反汇编跟踪过NtOpenProcess和NtOpenThread,会发现除了ClientId的初始化, NtOpenThread和NtOpenProcess基本上完全一样。利用NtOpenThread,OpenThread的NT4可实现如下:
HANDLE OpenThreadNT(DWORD dwDesiredAccess,
                    BOOL  bInheritHandle,
                    DWORD dwThreadId)
{
    OBJECT_ATTRIBUTES   ObjectAttributes;
    CLIENT_ID           ClientId;
    HANDLE              hThread;
    NTSTATUS            Status;

    InitializeObjectAttributes(
&ObjectAttributes, NULL, 0, NULL, NULL);

    
if (bInheritHandle)
        ObjectAttribut

这篇关于OpenThread种种的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559439

相关文章

关于import、export语句的种种引入方式、导出方式的区别

学习了这么长时间的Vue、React、还有nodeJs,对 import 语句可以说是既熟练又容易糊涂,我们经常见到以下几种 import 语句: import {xx1, xx2, xx2} from ‘xx’improt * as xx from ‘xx’import xx from ‘xx’ 那么接下来我们就好好分析一下他们的区别以及使用场景: 1. import {xx1, xx2,

程序员升职记-五种种说话套路

01 SCQA故事框架   诺贝尔经济学奖得主西蒙教授曾说: “这个时代,有价值的不再是信息,而是注意力。”   这就是为什么“标题党”、“卖惨”、“炫富”大行其道的原因,注意力经济嘛,当然这些都是下三滥的手法,高级一点的还有下四滥、下五滥,比如咪蒙毒鸡汤、伪公知煽动民众的洗脑文等等。   SCQA故事框架的特点,就是能快速抓住对方的注意力。故事核心就是冲突,有

经历种种,记住美好——2016年 总结

1. 怎么定义成长了呢,以前我认为那就是“变怂”。 前几天,长辈们对我说了一番话。之前,我的性格就是嫌他们唠叨,觉得,好烦啊。 这次不一样,我听进去了,我定义:这样就是成长了吧。 2. 4月份外包到一家做档案数字化服务的公司做项目。 早上9点半到凌晨两点多,天天如此。本来自信爆棚的我,突然发现在中关村这一座座高楼里面,自己好渺小。 项目经理啥总也是成天的教导我们。作为一名有三

Python接口(1):使用Python调用C/C++的种种方法

Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面就总结一下各种调用的方法, 给出例子, 所有例子都在ubuntu9.10, python2.6下试过.   1. Python 调用 C (base) 想在python中调用c函数, 如这儿的fact #include <Python.h> int fact(int n) {   if (n <=

关于Static、全局变量、局部变量、Extern之间的种种

static作用(修饰函数、局部变量、全局变量) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char a

[BYR]找什么样的工作?——从找工作中的种种怪象说开去

经历过去年的求职季,经历过其中的喜怒哀乐,也经历了其中的种种怪象。总想写点什么作为自己人生阶段的一个注脚,或为经验,或为反思。本来只想写给自己,但写着写着发现很多问题是具有普遍性的,我自己常常是在所反思的样本人群里的一分子,所以我无意于针对谁,列为看官读到下面的文字也不必着急地站队或是反驳,所列出的部分怪象里其实也有我自己的身影。我不追求所有人的认同,当然也没这个必要,只是希望正在准备找工作的和刚

网站管理遇到的种种问题

tp5框架 scandir(): failed to open dir: No such file or directory 【原因分析】此问题是由于tp5是单入口,将public作为根目录,无法访问public目录以外的目录造成的 【解决办法】将项目根目录下的.user.ini的内容修改一下即可     修改前 open_basedir=/www/wwwroot/51jobs/public/

Integer与int的种种比较你知道多少?——转自博客园

原文地址:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html   如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii

OpenGL 的内置矩阵种种

文章目录 一、说明二、glMatrixMode的三个选项三、OpenGL 矩阵操作四、入栈和弹出矩阵五、设置内置 OpenGL 矩阵六、矩阵设置异端七、正常矩阵 一、说明    内置 OpenGL有几个重要矩阵,围绕这几个矩阵,OpenGL 有一小组 矩阵操作。在本例中为 glMatrixMode,这是非常有用的例程。 二、glMatrixMode的三个选项    实际上,只

集成开发环境云云种种,你该何去何从?

淘二哥女装专业导购 http://www.tao2ge.com  在JAVA的自由世界里,思绪任意的飞翔。    每一次歇斯底里的呐喊着“我是一只小小鸟”的时候,表面的痛快,心情却异常的复杂。  当初选择JAVA的时候,就是因为共享的精神,社区的凝聚力之然。如今,发现集成开发工具太多了,以至于没有那么多的精力去一一设置。    因此我选择了MYECLIPSE完全版。不会产生