如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数

摘要

即使是在 32位环境中编写程序,也经常碰到处理 16位应用程序的情况。在 Windows NT 中,16位程序是运行在虚拟 DOS 机(VDM)中的。VDMDBG.dll 包含许多处理16位程序的有用函数,这个库是 Platform SDK 的一部分。

VDMDBG 中的函数提供了很好的方式在 VDM 中枚举、创建和终止 16位进程(任务)。本文将描述如何在Windows NT、Windows 2000 和 Windows XP 中使用这些函数。

如果需要使用 VDMDBG 函数,你的工程必须链接 VDMDBG.lib。

下面提及的 VDMDBG 函数仅仅是一个子集。未提及的函数只与调试器有关。

枚举 VDMs

VDMEnumProcessWOW() 函数提供了一种简单的方式来枚举所有 运行 Windows 任务的 VDMs。这些 VDMs 包含 WowExec.exe 任务。DOS VDMs 不在枚举之列。 该函数的声明如下:INT WINAPI VDMEnumProcessWOW( PROCESSENUMPROC fp, LPARAM lparam );

该函数的返回值是当前运行的 VDMs 数,或者终止枚举前的枚举数目。fp 是一个回调函数指针。该函数针对被枚举的 VDM 被调用一次。lParam 是用户定义的值,这个值被传递给回调函数。

PROCESSENUMPROC 的声明如下:

typedef BOOL ( WINAPI *PROCESSENUMPROC )(
DWORD dwProcessId,
DWORD dwAttributes,
LPARAM lpUserDefined
);

这个函数返回 TRUE 停止枚举,返回 FALSE 继续枚举。dwProcessId 是 NTVDM.exe 进程ID。在调用其它VDM函数时(下面会提到这些函数),你会需要此 ID。

枚举 16-位 Windows 任务

你可以用 VDMEnumTaskWOW() 和 VDMEnumTaskWOWEx() 在特定的 VDM 中枚举任务。两者的差别是 VDMEnumTaskWOWEx() 为回调函数提供更多的信息。你只能使用 VDMEnumProcessWOW() 返回的 VDMs 来调用这些任务枚举函数。用 DOS VDMs 是没有意义的,因为 DOS 应用程序运行在自己的 VDM 中。这两个函数的恶声明如下:

INT WINAPI VDMEnumTaskWOW( DWORD dwProcessId, TASKENUMPROC fp,LPARAM lparam );
INT WINAPI VDMEnumTaskWOWEx( DWORD dwProcessId, TASKENUMPROCEX fp,
LPARAM lparam );

这两个函数的返回值是当前运行在指定 VDM 中的任务数,或者每局终止前的枚举数。dwProcessId 是 VDM 的恶进程ID。fp 是指向回调函数的指针。每个被枚举的任务都调用该函数。lparam 是传给回调函数的用户定义的值。

TASKENUMPROC 和 TASKENUMPROCEX 的定义如下:

typedef BOOL ( WINAPI *TASKENUMPROC )(
DWORD dwThreadId,
WORD hMod16,
WORD hTask16,
LPARAM lpUserDefined
);
typedef BOOL ( WINAPI *TASKENUMPROCEX )(
DWORD dwThreadId,
WORD hMod16,
WORD hTask16,
PSZ pszModName,
PSZ pszFileName,
LPARAM lpUserDefined
);

这些函数返回 TRUE 停止枚举,返回 FALSE 继续枚举。你可以在某个调用中用 hTask16 终止任务。

时间: 2024-11-01 07:11:44

如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数的相关文章

怎么样手动删除 Windows NT 或 Windows 2000

这篇文章中的信息适用于: Microsoft Windows NT Server 3.1, 3.5, 3.51, 4.0 Microsoft Windows NT Workstation 3.1, 3.5, 3.51, 4.0 Microsoft Windows NT Advanced Server Microsoft Windows 2000 Professional Microsoft Windows 2000 Server Microsoft Windows 2000 Advanced S

在Windows/NT上建立JSP环境

js|window 在Windows/NT上建立JSP环境 Windows98,Windows NT 4.0,Windows 2000 professional,windows 2000 server等 jdk1_2_2-001-win.exe tomcat.zip(3.1) 一.软件下载 JDK http://java.sun.com/products/jdk/1.2/ Tomcat http://jakarta.apache.org/builds/tomcat/release/v3.1/ 二

在Windows/NT上建立JSP环境_JSP编程

Windows98,Windows NT 4.0,Windows 2000 professional,windows 2000 server等 jdk1_2_2-001-win.exe tomcat.zip(3.1) 一.软件下载 JDK http://java.sun.com/products/jdk/1.2/ Tomcat http://jakarta.apache.org/builds/tomcat/release/v3.1/ 二.软件安装 (一)JDK 1.双击jdk1_2_2-001-

微软Windows NT 4.0二十周年了

二十年前,也就是1996年7月31日,微软推出Windows NT 4.0. NT 4.0并不是微软推出的第一个NT操作系统版本,但是NT 4.0是最后一个支持Alpha.MIPS和PowerPC架构的主要版本,它也是NT产品线中最后一个名字里带有"NT"品牌的版本.事实上,之所以称为"NT",通常的说法是NT指的是"新技术(New Technology)".微软杰出工程师Dave Cutler编写了NT的内核. NT有好几个变种,其中包括Win

在Windows NT/2000下实现软RAID的方法

RAID(Redundant Array of Inexpensive Disks)意思是廉价磁盘冗余阵列,它是一种容错方法,通过将大量磁盘在逻辑上串联起来提供高水平的可用性和冗余度.众所周知,硬件RAID解决方案是有效的方法,但其成本却非常高-- Windows NT/2000提供了内嵌的软件RAID,实现了RAID0.RAID1.RAID5.由于可以节省可观的资金,因而众多中小企业大多可以采用软件的方法来实现. NT Server支持RAID1(磁盘镜像)和RAID5(带校验的Stripe

How to Create a Windows NT/ Windows 2000 Service(如何创建一个Windows NT/ Windows 2000 服务)

Introduction A Windows service is an EXE specially designed to communicate with the SCM (Service Control Manager) of Windows NT/2000. The Service Control Manager (SCM) maintains a database of installed services and driver services, and provides a uni

[转载]Windows NT/2000/XP下不用驱动的Ring0代码实现

Windows NT/2000/XP下不用驱动的Ring0代码实现                   WebCrazy(http://webcrazy.yeah.net/)      大家知道,Windows NT/2000为实现其可靠性,严格将系统划分为内核模式与用户模式,在i386系统中分别对应CPU的Ring0与Ring3级别.Ring0下,可以执行特权级指令,对任何I/O设备都有访问权等等.要实现从用户态进入核心态,即从Ring 3进入Ring 0必须借助CPU的某种门机制,如中断门.

在Windows NT 4.0下安装ActivePerl

active|perl|window 版本:1.0作者:何志强(hhzqq@sina.com)时间:2000.03.16 本文只讨论如何在Windows NT 4.0下安装ActivePerl.本文使用的环境: Windows NT 4.0 Option Pack 4.0 SP5 ActivePerl 522(APi522e.exe)一.软件下载    http://www.activestate.com/ActivePerl/download.htm二.软件安装 1.双击APi522e.exe

在Windows NT 4.0下安装Apache+Servlet+JSP

apache|js|servlet|window 版本:1.0作者:何志强(hhzqq@sina.com)时间:2000.03.16 本文只讨论如何在Windows NT 4.0上安装Apache+Servlet+JSP.本文中的配置情况如下: Windows NT 4.0 jdk1_2_2-001-win.exe apache_1_3_12_win32.exe ApacheModuleJServ.dll tomcat.zip(3.0)一.软件下载 JDK http://java.sun.com