精华内容
下载资源
问答
  • 0x00 前言 文章中的文字可能存在语法错误以及标点错误,请...取得正在运行的进程名称和ID的代码实现思路如下: 1.使用CreateToolhelp32Snapshot()函数给当前系统执行的进程拍摄快照以获得进程列表; 2.使用Proce...

    0x00 前言

    文章中的文字可能存在语法错误以及标点错误,请谅解;

    如果在文章中发现代码错误或其它问题请告知,感谢!

    本例运行系统环境为windows 10,使用VS2010编译运行。

    0x01 代码实现

    1. 实现思路

    取得正在运行的进程名称和ID的代码实现思路如下:
    1.使用CreateToolhelp32Snapshot()函数给当前系统执行的进程拍摄快照以获得进程列表;
    2.使用Process32First()以及Process32Next()函数遍历列表,将获得的进程名称和ID打印出来。

    下面介绍相关函数:
    1.CreateToolhelp32Snapshot()用于获取系统内指定的进程快照,也可以获得被这些进程使用的堆、模块和线程的快照。使用方法如下:

        HANDLE WINAPI CreateToolhelp32Snapshot(
        DWORD dwFlags;			//用来指定快照中需要返回的对象
        DWORD th32ProcessID;	//一个进程的ID,用来指定要获取哪一个进程的快照
        						//若想获得系统进程列表或获取当前进程快照时可以设置成0
     );
    

    dwFlags参数指定获得列表的类型,其取值如下:
    (1)TH32CS_SNAPHEAPLIST 枚举th32ProcessID参数指定的进程中的堆。
    (2)TH32CS_SNAPMODULE 枚举th32ProcessID参数指定的进程中的模块。
    (3)TH32CS_SNAPPROCESS 枚举系统范围内的进程,此时th32ProcessID参数被忽略。
    (4)TH32CS_SNAPTHREAD 枚举系统范围内的线程,此时th32ProcessID参数被忽略。
    函数执行成功会返回一个快照句柄,否则返回INVALID_HANDLE_VALUE(-1)。
    2.Process32First()以及Process32Next()从快照列表中获取进程信息。Process32First()用来获取首次调用,以后由Process32Next()进行循环调用,直到列表被调用完毕,返回FLASE。

    BOOL WINAPI Process32First(
        HANDLE hSnapshot,			//快照句柄
        LPPROCESSENTRY32 lppe		//指向PEOCESSENTRY32结构的指针
    );
    							
    
    BOOL WINAPI Process32Nextt(
        HANDLE hSnapshot,			//快照句柄
        LPPROCESSENTRY32 lppe		//指向PEOCESSENTRY32结构的指针
    );
    

    LPPROCESSENTRY32结构体定义如下:

    typedef
    {
    	DWORD dwSize;		 	//结构的长度,需要预先设置
    	DWORD cntUsage;			//进程的引用记数 
    	DWORD th32ProcessID;	//进程ID
    	DWORD th32DefaultHeapID;//进程默认堆的ID
    	DWORD th32ModuleID;	//进程模块的ID
    	DWORD cntThreads;		//进程创建的线程数
    	DWORD th32ParentProcessID;//进程的父线程ID
    	LONG pcPriClassBase;	//进程创建的线程基本优先级
    	DWORD dwFlags;			//内部使用
    	CHAR szExeFile[MAX_PATH];//进程对应的可执行文件名
    }PROCESSENTRY32;
    

    2. 代码实现

    // 进程打印.cpp : 定义控制台应用程序的入口点。
    
    #include "stdafx.h"
    #include<Windows.h>
    #include<TlHelp32.h>
    #include<stdio.h>
    
    int main(int argc, char *argv[])
    {
    	PROCESSENTRY32 pe32;
    	//在使用这个结构之前,先设置它的大小
    	pe32.dwSize = sizeof(pe32);
    
    	//给系统内所有的进程拍一个快照
    	HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if(hProcessSnap == INVALID_HANDLE_VALUE)
    	{
    		printf("CreateToolhelp32Snapshot调用失败\n");
    		return -1;
    	}
    	//遍历进程快照,轮流显示每个进程的信息
    	BOOL bMore = ::Process32First(hProcessSnap,&pe32);
    	while(bMore)
    	{
    		printf("进程名称:%ls\n",pe32.szExeFile);
    		printf("进程ID号:%u\n\n",pe32.th32ProcessID);
    
    		bMore = ::Process32Next(hProcessSnap,&pe32);
    	}
    
    	//不要忘记清除snapshot对象
    	::CloseHandle(hProcessSnap);
    
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    以上。

    参考文档:
    1.张铮,孙宝山,周立天.Windows程序设计(第3版)[M].北京;人民邮电出版社,2018.7.

    展开全文
  • 对象、进程、线程是Windows2000三个基元成份,它们之间有互相交叉的关系。 1、对象 对象是一个抽象的数据结构,在Windows2000中用以表示广义的资源。它是构成OS的三个基元成份中非活动的成份,对象是数据和有关...

    一、Windows 2000的基元成分

    对象、进程、线程是Windows2000三个基元成份,它们之间有互相交叉的关系。

    1、对象

    对象是一个抽象的数据结构,在Windows2000中用以表示广义的资源。它是构成OS的三个基元成份中非活动的成份,对象是数据和有关操作的封装体,它包装数据、数据的属性以及可以施加于数据的操作等三个成份。具有相同特性的对象也可归为一个对象类,在软件设计中定义了对象类(称为类Class),而对象则是对象类一个具体实现的示例。对象作为抽象数据而封装在其内部的操作函数所提供的操作也给人活动成份的感觉,但是从操作系统这一角度来认识,对象是构成操作系统的非活动成份。而进程和线程则是构成OS的两个活动成份。

    Windows 2000中的实体,当数据或资源对用户态开放时,或者当数据访问是共享的或受限制时,才使用对象。采用对象方法表示的实体有文件、进程、线程、信号量、互斥量、事件、计时器等。Windows 2000通过对象管理器以一致的方法创建和管理所有的对象类型,对象管理器代表应用程序负责创建和删除对象,并负责授权访问对象的数据和服务。
    这里写图片描述
    每一个对象都有一个对象头和一个对象体。对象管理器控制对象头,各执行体组件控制它们自己创建的对象类型的对象体。当进程通过名称来创建或打开一个对象时,它会收到一个代表进程访问对象的句柄。所有用户态进程只有获得了对象句柄之后才可以使用这个对象。句柄作为系统资源的间接指针来使用,这种不直接的方式阻止了应用程序对系统数据结构直接地随便操作。

    2、进程

    Windows2000中进程被定义为表示OS所要做的工作,是OS用于组织其必须完成诸工作的一种手段。NT中的进程由一个可执行的程序、一个私用的虚地址空间、系统资源和至少一个执行线程等四部分组成。
    这里写图片描述
    NT的进程概念与传统OS进程概念有所不同,NT进程是作为对象来实现,因此从广义角度来说,进程也是共享的资源(多个用户进程可共享服务器进程提供的服务)。

    NT定义了一个进程对象类,进程的对象类的对象体和所包含的属性定义了进程对象的数据及其属性和施加其上的操作(服务),但描述进程组成的两个主要部分:进程地址空间和局限于进程的对象表,不包含在属性表中,因为它是附属的、不可见的。NT进程要求一个独特的组成成分:至少一个执行线程,这在传统OS中是没有的。NT进程的组成中没有进程控制块,有关进程的信息在进程对象的对象体中以及局限于进程的对象表中。
    这里写图片描述

    3、线程

    NT的线程是进程内的一个执行单元,是进程内的一个可调度实体。一个线程是由唯一的标识符客户ID、描述处理器状态的一组状态寄存器的内容、用户栈和核心栈、一个私用存贮器等四部分组成,线程也是作为对象来实现。每个进程创建时只有一个线程,需要时这个线程创建其它线程。线性是进程的一个组成部分,一个NT进程可以有多个线程在其地址空间内执行。资源分配的单位是进程,调度和执行的基本单位是线程。
    这里写图片描述

    二、Windows进程控制API函数

    1、CreateProcess函数

    当一个线程调用CreateProcess时,系统就会创建一个进程内核对象,为新进程创建一个虚拟地址空间,并将可执行文件加载到该进程的地址空间中。然后系统再为新进程的主线程创建一个线程内核对象。通过执行启动代码,该主线程便开始运行,它最终调用WinMain、wWinMain、main或wmain函数。如果系统成功地创建了新进程和主线程,该函数便返回TRUE。

    2、CreateThread函数

    CreateThread函数创建一个在调用进程的地址空间中执行的线程。
    格式:

    HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD  dwStacksize, LPTHREAD_START_ROUTINE lpStartAddress, 
    LPVOID tpParameter, DWORD dwCreationFlags, LPDWORD lpThreadld);

    lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。若lpThreadAttributes为NULL,则句柄不能被继承。
    dwStackSize:定义原始堆栈提交时的大小(按字节计)。系统将该值舍入为最近的页。若该值为0,或小于默认时提交的大小,默认情况是使用与调用线程同样的大小。
    lpStartAddress:指向一个新线程执行的LPTHREAD_START_ROUTINE类型应用定义的函数。该指针还表示远程进程中线程的起始地址。该函数必须存在于远程进程中。
    lpParameter:定义一个传递给该新线程的32位值。
    dwCreationFiags:定义控制线程创建的附加标志。若定义了CREATE_SUSPENDED标志,线程创建时处于挂起状态,并且直到ResumeThread函数调用时才能运行。若该值为0,则该线程在创建后立即执行。
    lpThreadId:指向一个32位值,它接收该线程的标识符。
    返回值:若函数调用成功,返回值为新线程的句柄;若函数调用失败, 返回值为NULL。

    3、ExitThread函数

    ExitThread函数结束一个线程。
    格式:

    VOID ExitThread ( DWORD dwExitCode ) ;

    dwExitCode:定义调用线程的退出代码。使用GetExitCodeThread函数来检测一个线程的退出代码。
    返回值:无。
    SuspendThread()函数用于挂起指定的线程。
    ResumeThread()函数递减指定线程的挂起计数,挂起计数为0时,线程恢复执行。

    4、互斥对象函数

    在windows2000中提供了互斥对象、信号量对象和事件对象等同步对象和相应的系统调用,用于进程和线程的同步。这些同步对象都有一个用户指定的对象名称,不同进程用同样的对象名称来创建或打开对象,从而获得该对象在本进程的句柄。
    互斥对象(Mutex)就是互斥信号量,在一个时刻只能被一个线程使用,它用于进程、线程间的互斥。它的相关API函数包括:CreateMutex、OpenMutex和ReleaseMutex。

    • CreateMutex
      函数创建一个互斥对象,返回对象句柄。
    • OpenMutex
      函数为现有的一个已命名互斥体对象创建一个新句柄。
    • ReleaseMurex
      函数放弃指定互斥对象的所有权。

    5、信号量对象函数

    信号量对象(semaphore)就是资源信号量,初始值的取值在0到指定最大值之间,用于限制并发访问的线程数,也可用于进程、线程间的同步。它的相关API包括:CreateSemaphore、OpenSemaphore和ReleaseSemaphore。

    • CreateSemapore
      函数是创建一个有名或者无名信号量对象在输人参数中指定最大值和初值,返回对象句柄。
    • OpenSemaphore
      函数为现有的一个已命名信号机对象创建一个新句柄。
    • ReleaseSemaphore
      函数释放对信号量对象的占用,将指定信号对象的计数增加一个指定的数量。

    6、等待操作函数

    Windows 2000为对象提供了两个统一的等待操作函数WaitForSingleObjectWaitForMultipleObjiects。等待的对象包括:Change notification(改变通告);Console input(控制台输入);Event(事件);Job(作业);Mutex(互斥对象);Process(进程);Semaphore(信号量);Thread(线程);Waitable timer(可等待定时器)。函数决定等待条件是否被满足。如果等待条件并没有被满足,调用线程进入一个高效的等待状态,当等待满足条件时占用非常少的处理器时间。在运行前,一个等待函数修改同步对象类型的状态。修改仅发生在引起函数返回的对象身上。例如,信号的计数减1。一个线程通过调用等待函数拥有对象。创建该对象的线程也拥有对象,而不需要调用等待函数。

    7、临界区对象函数

    临界区对象只能用于在同一个进程内使用的临界区,同一个进程内各线程对它的访问是互斥进行的。把变量说明为CRITICAL_SECTION类型,就可作临界区使用。相关的API包括InitializeCriticalSection、EnterCriticalSection、TryEnterCriticalSection、LeaveCriticalSection和DeleteCriticalSection。

    • InitializeCriticalSection
      函数初始化临界区对象。
    • EnterCriticalSection
      函数是等待指定临界区对象的所有权。当调用线程被赋予所有权时,该函数返回。
    • TryEnterCriticalSection
      函数决不允许调用线程进入等待状态。它的返回值能够指明调用线程是否能够获得对资源的访问权。TryEnterCriticalSection发现该资源已经被另一个线程访问,它就返回FALSE。在其他所有情况下,它均返回TRUE。运用这个函数,线程能够迅速查看它是否可以访问某个共享资源,如果不能访问,那么它可以继续执行某些其他操作,而不必进行等待。
    • LeaveCriticalSection
      函数释放指定临界区对象的所有权
    • DeleteCriticalSection
      函数释放与临界区对象相关的所有系统资源。

    三、Windows 2000内部进程通信机制

    1、本地过程调用LPC

    Windows 2000的客户进程与服务器进程之间的通信采用消息传送,而消息传送必须经过执行体的本地过程调用LPC。LPC是一个用于高速信息传输的进程间的通信机构,LPC是一个灵活的、经过优化的“远程过程调用”(RPC)版本,(RPC是一种通过网络在客户与服务器进程之间传递信息的工业标准通信机制),在Win32 API下它是不可用的,它是一个只对Window 2000操作系统组件有效的内部机制。LPC被使用在一个服务器进程与该服务器的一个或多个客户进程之间。LPC提供了三种不同的消息传送方法:

    第一种方法适用于传送小于256B的消息。它将消息传给与服务器进程相连的端口对象,系统为每个端口对象设置有一个固定大小的消息队列,作为通信之用,此方法用于发送少于256字节的信息。这个方法类同于消息缓冲队列通信机制。

    第二种方法适用于传送大于256B的消息。它将消息指针传给与服务器进程相连的端口对象,并把消息存放在共享的主存区域中,消息大小受进程所分得的主存配额限制。消息传送的过程如下:当客户要传送大消息时,就由它自己创建一个称为主存区域的对象-主存共享的对象,LPC机制使得该地址空间为客户进程和服务器均可见,然后客户进程把大消息存放在该主存区域对象中;再向服务的的端口对象的消息队列中传送一个小消息指出所传送消息的大小和消息所在的地址指针。

    第三种方法适用于服务器想读或写大量数据而共享区又太小情况。数据可以直接从客户地址空间读出或向客户地址间写入。LPC组件提供了两个函数,服务器可以用它们来完成这些操作,以第一种方法发送的消息被用于同步正在传送的信息。

    LPC典型地应用于以下情况:服务器创建已命名的服务器直接端口对象。客户提出与这个端口连接的请求。如果同意该请求,客户通信端口和服务器通信端口就会被创建。客户得到客户通信端口的句柄,服务器得到服务器通信端口句柄。然后客户和服务器将为了它们之间的通信使用新的端口。

    2、多级反馈队列调度算法

    Windows2000采用可抢占动态优先级多级反馈就绪队列调度算法,Windows2000的调度单位是线程。2000执行体支持32级优先级,并将它们分成两类,实时优先级(16-31)和可变优先级(1-15),0级为系统保留,运行一个仅用于对系统中空闲物理页面进行清页的零页线程。每个优先级一个就绪队列,高序号队列为高优先级。实时优先级采用多级队列调度算法;可变优先级采用多级反馈队列调度算法,每个线程优先级变化范围是5级,可变优先级又分为高级、中上、中级、中下和空闲五类。
    这里写图片描述

    线程完整用完一个规定的时间片值时,重新赋予新时间片值时,优先级降一级(不低于基本优先级),放在相应优先级就绪队列的尾部;
    这里写图片描述

    线程由于调用等待函数而阻塞时,减少一个时间片,并依据等待事件类型提高优先级;如等待键盘事件比等待磁盘事件的提高幅度大。
    这里写图片描述
    在下列5种情况下,Windows 2000会提升线程的当前优先级:

    • I/O操作完成
    • 信号量或事件等待结束
    • 前台进程中的线程完成一个等待操作
    • 由于窗口活动而唤醒图形用户接口线程
    • 线程处于就绪状态超过一定时间,但没能进入运行状态(处理机饥饿)

    线程优先级提升的目的是改进系统吞吐量、响应时间等整体特征,解决线程调度策略中潜在的不公正性。但它也不是完美的,它并不会使所有应用都受益。Windows 2000永远不会提升实时优先级范围内(16至31)的线程优先级。

    四、操作系统结构设计

    1、操作系统采用结构程序设计的必要性

    由于操作系统日趋庞大,结构日益复杂,错误增加以至不可避免。在以后每个新版中都纠错。其次由于操作系统存在并发性,进程间执行序列数量巨大,推进序列不确定性,程序错误的某种表现形式不重复出现,可能使人误解为一次偶然性机器的故障。这给操作系统调试带来了困难。为了使操作系统高可靠、高效能、可理解和可修改,操作系统必须采用结构程序设计方法。

    2、模块接口法

    模块接口法是OS最早采用的一种结构程序设计方法,早期操作系统(IBM的OS)和小型OS(如MS-DOS)均属此类型。模块接口法把一个系统按功能分成若干个具有一定独立性和大小完成某方面功能的模块,并规定好各模块之间的接口。接着在明确每个模块的内部功能的基础上对它们进行独立设计。最后在各模块设计完成后按照模块间的接口关系,将所有模块逐步链接成一个大系统。

    模块接口法的优点是使OS设计实现模块化的基本结构程序设计方法,它增加了OS灵活性,便于修改和维护。但由于模块部接口复杂,使得系统的结构关系不清晰,因而使系统的可靠性降低。故又称模块接口法为无序模块法。

    3、层次结构法

    为了减少各模块之间无序调动、互相依赖关系,特别是清除循环现象,引入层次结构设计法。它将模块间无序调用变为有序调用,它把OS的所有功能模块,按功能流图的调用次序,排列成若干层,各层之间的模块只能是单向调用关系,即是只允许上层模块调用相邻下层模块。这样操作系统的结构清晰,而不构成循环,使系统的调试和验证变得容易。

    层次结构法采用自底向上法形成操作系统。它先在裸机上添加第一层精心编制的软件,形成比原来机器功能更强的机器,称为虚拟机A1。再经过几乎是穷尽无遗的测试后,就有较大把握确信虚拟机A1是正确的。然后,再在A1上增加一层精心编制的软件,形成功能更强、更接近于实际要求的虚拟机A2,再经过几乎是穷尽无遗的测试, …… ……如此一层一层地自底向上地铺设各软件层,每一层都实现若干功能,最后构成满足要求的虚拟机An。因此只要下层各模块设计是正确的,就为上层功能模块的设计提供了可靠基础,从而增加了系统的可靠性。

    1968年Dijkstra在ELX8机器上编制的操作系统THE中采用各层间单向依赖,层内各模块互相独立的全序的层次关系设计。但该系统通信开销大,系统经过层层调用效率低,该设计方法不适用大型OS。在大层OS中要建立一个全序的层次结构关系是十分困难,往往无法避免循环现象。因些层次结构设计应作为OS设计的原则,尽可能将操作系统各功能模块排成有序层次,以便尽量减少系统中循环现象。

    4、客户-服务器方式

    操作系统结构技术的发展是与整个计算机技术的发展相联系的。当前技术发展的突出特点是要求广泛的信息和其它资源的共享,这一要求促使网络技术的普遍应用和发展。由于网络技术逐渐成熟,并实用化,再加以数据库联网已是应用的新趋势,为用户提供一个符合企业信息处理应用要求的分布式处理的系统环境是应用潮流的需要。操作系统采用客户/服务器结构,它将非常适应于分布式处理的计算机环境中,所以说C/S模式是第三代操作系统。

    客户/服务器C/S结构的思想是把操作系统分成内核和若干个进程。内核运行在核心态,负责调度、原语操作和中断处理等操作系统基本功能。每个进程实现单个的一套服务(例如:主存服务、进程生成服务等),称为服务器进程。每个服务运行在用户态,它执行一个循环以检查是否有客户已请求某项服务。而客户可以是另外的操作系统成分,也可以是应用程序。客户通过发送一个消息给服务器进程来请求提供一项服务。操作系统内核把该消息传送给服务器进程,而后该服务器执行有关的操作,操作完成后,内核用另一个消息把结果返回给客户进程。C/S结构模式的操作系统有卡内基.梅隆大学研制的Mach 操作系统和美国微软公司研制的WindowsNT操作系统。

    5、微内核模式

    对于一些专用的系统,主要是实时系统和“嵌入式”系统, “微内核”的思想就很有吸引力。究其原因,主要是因为通常这些系统都不带磁盘,整个系统都必须放在EPROM中,常常受到存储空间的限制,而所需要的服务又比较单一和简单。所以,几乎所有的嵌入式系统和实时系统都采用微内核,如PSOS,VxWorks等。
    优点:

    • 良好的扩充性:只需添加支持新功能的服务进程即可
    • 可靠性好:调用关系明确,执行转移不易混乱
    • 便于网络服务,实现分布式处理:以同样的调用形式,在下层可通过核心中的网络传送到远方服务器上 (远地过程调用 RPC)。

    缺点:将这些服务的提供都放在进程层次上,再通过进程间通信(通常是报文传递)提供服务,势必增加系统的运行开销,降低了效率,消息传递比直接调用效率要低一些 (但可以通过提高硬件性能来补偿 )。

    6、NT执行体

    运行在核心态内核的WindowsNT称为NT执行体。NT执行体结构是层次式与微内核的结合,它比UNIX内核小。基本上是一个完整的操作系统,它由一组部件构成,这些部件形成了层次结构。NT最底层是硬件抽象层(HAL),它将NT执行体的其余部分与运行机器硬件特性隔离开来。NT内核是第二层,它类拟于Mach的微内核,它负责对中断和异常作出响应;调度线程,提供一组基本对象和接口。

    NT内核上是一组部件:对象管理程序、安全调用监视程序、进程管理程序、本地过程调用功能和虚拟内存管理程序等。I/O系统内部又分成若干层,它们是由I/O管理程序、文件系统、高速缓冲存储管理程序、设备驱动程序、网络重定向程序和网络服务器等组成。NT执行体最上层系统服务是NT执行体为用户态的进程提供的一个接口

    7、保护子系统

    WindowsNT 操作系统除NT执行体外,操作系统所有的其它部分被分成若干个相对独立的进程,每一个进程实现一组服务,称为服务器进程,它运行在用户态。用户态服务器进程又称保护子系统。WindowsNT有二类保护子系统:环境子系统和集成子系统。

    环境子系统有Win32子系统、OS/2子系统和POSIX子系统几种,每种子系统为特定的操作系统提供一个API。它为客户进程提供服务是这样的:当一个应用程序调用其相应的某个API(本系统提供Win32、OS/2、POSIX、16位Windows和MS-DOS等系统的编程接口API)时,一个消息通过NT执行体的本地过程调用(LPC)工具,发送给完成该API程序的服务器进程-环境子系统。子系统执行API例程、并通过LPC将结果返回应用程序进程。

    集成子系统是完成重要操作系统功能的服务器。这包括安全子系统,网络软件中的若干部件(工作站服务和网络服务器服务)。当用户试图进入系统时,首先必须进行登录,由安全子系统对用户进行是否允许其进入和权限检查与控制。安全子系统维护着一个有关帐号信息数据库,内容包括帐号名、保密字、用户权限等信息。任何非法用户或非法操作,都被安全系统拒之门外。

    这里写图片描述

    这里写图片描述

    展开全文
  • Windows事件ID详细

    万次阅读 2018-07-23 02:49:08
    51 Windows 无法找到网络路径。请确认网络路径正确并且目标计算机不忙或已关闭。如果 Windows 仍然无法找到网络路径,请与网络管理员联系。  52 由于网络上有重名,没有连接。请到“控制面板”中的“系统”更改...

          51 Windows 无法找到网络路径。请确认网络路径正确并且目标计算机不忙或已关闭。如果 Windows 仍然无法找到网络路径,请与网络管理员联系。

           52 由于网络上有重名,没有连接。请到“控制面板”中的“系统”更改计算机名,然后重试。 
      53 找不到网络路径。 
      54 网络很忙。 
      55 指定的网络资源或设备不再可用。 
      56 已达到网络 BIOS 命令限制。 
      57 网络适配器硬件出错。 
      58 指定的服务器无法运行请求的操作。 
      59 出现了意外的网络错误。 
      60 远程适配器不兼容。 
      61 打印机队列已满。 
      62 服务器上没有储存等待打印的文件的空间。 
      63 已删除等候打印的文件。 
      64 指定的网络名不再可用。 
      65 拒绝网络访问。 
      66 网络资源类型不对。 
      67 找不到网络名。 
      68 超出本地计算机网络适配器卡的名称限制。 
      69 超出了网络 BIOS 会话限制。 
      70 远程服务器已暂停,或正在启动过程中。 
      71 已达到计算机的连接数最大值,无法再同此远程计算机连接。 
      72 已暂停指定的打印机或磁盘设备。 
      80 文件存在。 
      82 无法创建目录或文件。 
      83 INT 24 上的故障。 
      84 无法取得处理此请求的存储空间。 
      85 本地设备名已在使用中。 
      86 指定的网络密码不正确。 
      87 参数不正确。 
      88 网络上发生写入错误。 
      89 系统无法在此时启动另一个进程。 
      100 无法创建另一个系统信号灯。 
          101 另一个进程拥有独占的信号灯。 
      102 已设置信号灯,无法关闭。 
      103 无法再设置信号灯。 
      104 无法在中断时请求独占的信号灯。 
      105 此信号灯的前一个所有权已结束。 
      107 由于没有插入另一个软盘,程序停止。 
      108 磁盘在使用中,或被另一个进程锁定。 
      109 管道已结束。 
      110 系统无法打开指定的设备或文件。 
      111 文件名太长。 
      112 磁盘空间不足。 
      113 没有更多的内部文件标识符。 
      114 目标内部文件标识符不正确。 
      117 应用程序发出的 IOCTL 调用不正确。 
      118 验证写入的切换参数值不正确。 
      119 系统不支持请求的命令。 
      120 这个系统不支持该功能。 
      121 信号灯超时时间已到。 
      122 传递给系统调用的数据区域太小。 
      123 文件名、目录名或卷标语法不正确。 
      124 系统调用级别不正确。 
      125 磁盘没有卷标。 
      126 找不到指定的模块。 
      127 找不到指定的程序。 
      128 没有等候的子进程。 
      130 试图使用操作(而非原始磁盘 I/O)的已打开磁盘分区的文件句柄。 
      131 试图将文件指针移到文件开头之前。 
      132 无法在指定的设备或文件上设置文件指针。 
      133 包含先前加入驱动器的驱动器无法使用 JOIN 或 SUBST 命令。 
      134 试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。 
      135 试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。 
      136 系统试图解除未合并驱动器的 JOIN。 
      137 系统试图解除未替代驱动器的 SUBST。 
      138 系统试图将驱动器合并到合并驱动器上的目录。 
      139 系统试图将驱动器替代为替代驱动器上的目录。 
      140 系统试图将驱动器合并到替代驱动器上的目录。 
      141 系统试图替代驱动器为合并驱动器上的目录。 
      142 系统无法在此时运行 JOIN 或 SUBST。 
      143 系统无法将驱动器合并到或替代为相同驱动器上的目录。 
      144 目录不是根目录下的子目录。 
      145 目录不是空的。 
      146 指定的路径已在替代中使用。 
      147 资源不足,无法处理此命令。 
      148 指定的路径无法在此时使用。 
      149 企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。 
      150 系统跟踪信息未在 CONFIG.SYS 文件中指定,或不允许跟踪。 
          151 为 DosMuxSemWait 指定的信号灯事件数量不正确。 
      152 DosMuxSemWait 没有运行;已设置过多的信号灯。 
      153 DosMuxSemWait 列表不正确。 
      154 输入的卷标超过目标文件系统的长度限制。 
      155 无法创建另一个线程。 
      156 接收人进程拒绝此信号。 
      157 段已被放弃且无法锁定。 
      158 段已解除锁定。 
      159 线程 ID 的地址不正确。 
      160 至少有一个参数不正确。 
      161 指定的路径无效。 
      162 信号已暂停。 
      164 无法在系统中创建更多的线程。 
      167 无法锁定文件区域。 
      170 请求的资源在使用中。 
      173 对于提供取消区域进行锁定的请求已完成。 
      174 文件系统不支持锁定类型的最小单元更改。 
      180 系统检测出错误的段号。 
      183 当文件已存在时,无法创建该文件。 
      186 传递的标志不正确。 
      187 找不到指定的系统信号灯名称。 
      196 操作系统无法运行此应用程序。 
      197 操作系统当前的配置不能运行此应用程序。 
      199 操作系统无法运行此应用程序。 
      200 代码段不可大于或等于 64K。 
         203 操作系统找不到已输入的环境选项。 
      205 命令子树中的进程没有信号处理程序。 
      206 文件名或扩展名太长。 
      207 第 2 环堆栈已被占用。 
      208 没有正确输入文件名通配符 * 或 ?,或指定过多的文件名通配符。 
      209 正在发送的信号不正确。 
      210 无法设置信号处理程序。 
      212 段已锁定且无法重新分配。 
      214 连到该程序或动态链接模块的动态链接模块太多。 
      215 无法嵌套调用 LoadModule。 
      230 管道状态无效。 
      231 所有的管道范例都在使用中。 
      232 管道正在被关闭。 
      233 管道的另一端上无任何进程。 
      234 有更多数据可用。 
      240 已取消会话。 
      254 指定的扩展属性名无效。 
      255 扩展属性不一致。 
      258 等待的操作过时。 
      259 没有可用的数据了。 
      266 无法使用复制功能。 
         267 目录名无效。 
      275 扩展属性在缓冲区中不适用。 
      276 装在文件系统上的扩展属性文件已损坏。 
      277 扩展属性表格文件已满。 
      278 指定的扩展属性句柄无效。 
      282 装入的文件系统不支持扩展属性。 
      288 企图释放并非呼叫方所拥有的多用户终端运行程序。 
      298 发向信号灯的请求过多。 
      299 仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。 
      300 操作锁定请求被拒绝。 
      301 系统接收了一个无效的操作锁定确认。 
      302 此卷太碎,不能完成这个操作。 
      303 不能打开文件,因为它正在被删除。 
      487 试图访问无效的地址。 
      534 算术结果超过 32 位。 
      535 管道的另一端有一进程。 
      536 等候打开管道另一端的进程。 
      994 拒绝访问扩展属性。 
      995 由于线程退出或应用程序请求,已放弃 I/O 操作。 
      996 重叠 I/O 事件不在信号状态中。 
      997 重叠 I/O 操作在进行中。 
      998 内存分配访问无效。 
      999 执行页内操作时的错误。 
         1001 递归太深;堆栈溢出。 
      1002 窗口无法在已发送的消息上操作。 
      1003 无法完成此功能。
      1004 无效标志。 
      1005 此卷不包含可识别的文件系统。请确定所有请求的文件系统驱动程序已加载,且此卷未损坏。 
      1006 文件所在的卷已被外部改变,因此打开的文件不再有效。 
      1007 无法在全屏幕模式下运行请求的操作。 
      1008 试图引用不存在的令牌。 
      1009 配置注册表数据库损坏。 
      1010 配置注册表项无效。 
      1011 无法打开配置注册表项。 
      1012 无法读取配置注册表项。 
      1013 无法写入配置注册表项。 
      1014 注册表数据库中的某一文件必须使用记录或替代复制来恢复。恢复成功完成。 
      1015 注册表损坏。包含注册表数据的某一文件结构损坏,或系统的文件内存映像损坏,或因为替代副本、日志缺少或损坏而无法恢复文件。 
      1016 由注册表启动的 I/O 操作失败并无法恢复。注册表无法读入、写出或清除任意一个包含注册表系统映像的文件。 
      1017 系统试图加载或还原文件到注册表,但指定的文件并非注册表文件格式。 
      1018 试图在标记为删除的注册表项上进行不合法的操作。 
      1019 系统无法分配注册表日志中所需空间。 
      1020 无法在已有子项或值的注册表项中创建符号链接。 
      1021 无法在易变父项下创建稳定子项。 
      1022 正在完成通知更改请求,而且信息没有返回到呼叫方的缓冲区中。当前呼叫方必须枚举文件来查找改动。 
      1051 停止控制被发送到其他正在运行的服务所依赖的服务。 
      1052 请求的控件对此服务无效。 
      1053 服务没有及时响应启动或控制请求。 
      1054 无法创建此服务的线程。 
      1055 服务数据库已锁定。 
      1056 服务的范例已在运行中。 
      1057 帐户名无效或不存在,或者密码对于指定的帐户名无效。 
      1058 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。 
      1059 指定了循环服务依存。 
      1060 指定的服务并未以已安装的服务存在。 
      1061 服务无法在此时接受控制信息。 
      1062 服务未启动。 
      1063 服务进程无法连接到服务控制器上。 
      1064 当处理控制请求时,在服务中发生异常。 
      1065 指定的数据 
         1066 服务已返回特定的服务错误码。 
      1067 进程意外终止。 
      1068 依存服务或组无法启动。 
      1069 由于登录失败而无法启动服务。 
      1070 启动后,服务停留在启动暂停状态。 
      1071 指定的服务数据库锁定无效。 
      1072 指定的服务已标记为删除。 
      1073 指定的服务已存在。 
      1074 系统当前以最新的有效配置运行。 
      1075 依存服务不存在,或已被标记为删除。 
      1076 已接受使用当前引导作为最后的有效控制设置。 
      1077 上次启动之后,仍未尝试引导服务。 
      1078 名称已用作服务名或服务显示名。 
      1079 此服务的帐户不同于运行于同一进程上的其他服务的帐户。 
      1080 只能为 Win32 服务设置失败操作,不能为驱动程序设置。 
      1081 这个服务所运行的处理和服务控制管理器相同。所以,如果服务处理程序意外中止的话,服务控制管理器无法进行任何操作。 
      1082 这个服务尚未设置恢复程序。 
      1083 配置成在该可执行程序中运行的这个服务不能执行该服务。 
      1084 不能以安全模式开始这项服务 
      1100 已达磁带的实际结尾。 
      1101 磁带访问已达文件标记。 
      1102 已达磁带或磁盘分区的开头。 
      1103 磁带访问已达一组文件的结尾。 
      1104 磁带上不再有任何数据。 
      1105 磁带不能分区。 
      1106 在访问多卷分区的新磁带时,当前的块大小不正确。 
      1107 在加载磁带时找不到磁带分区信息。 

      1108 无法锁定媒体弹出功能。 

      1109 无法卸载介质。 

      1110 驱动器中的介质可能已更改。 

      1111 已复位 I/O 总线。 

      1112 驱动器中没有媒体。 

      1113 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 

      1114 动态链接库(DLL)初始化例程失败。 

      1115 系统正在关机。 

      1116 因为没有任何进行中的关机过程,所以无法中断系统关机。 

      1117 由于 I/O 设备错误,无法运行此项请求。 

      1118 串行设备初始化不成功。串行驱动程序将卸载。  

       1119 无法打开正在与其他设备共享中断请求(IRQ)的设备。至少有一个使用该 IRQ 的其他设备已打开。 

      1120 序列 I/O 操作已由另一个串行口的写入完成。 (IOCTL_SERIAL_XOFF_COUNTER 已达零。) 

      1121 因为已过超时时间,所以串行 I/O 操作完成。 (IOCTL_SERIAL_XOFF_COUNTER 未达零。) 

      1122 在软盘上找不到 ID 地址标记。 

      1123 软盘扇区 ID 字符域与软盘控制器磁道地址不匹配。 

      1124 软盘控制器报告软盘驱动程序不能识别的错误。 

      1125 软盘控制器返回与其寄存器中不一致的结果。 

      1126 访问硬盘时,重新校准操作失败。重试之后仍然不成功。 

      1127 访问硬盘时,磁盘操作失败。重试之后仍然不成功。 

      1128 当访问硬盘时,即使失败,仍须复位磁盘控制器。 

      1129 已达磁带结尾。 

      1130 服务器存储空间不足,无法处理此命令。 

      1131 检测出潜在的死锁状态。 

      1132 指定的基址或文件偏移量没有适当对齐。 

      1140 改变系统供电状态的尝试被另一应用程序或驱动程序否决。 

      1141 系统 BIOS 改变系统供电状态的尝试失败。 

      1142 试图在文件上创建超过文件系统支持的链接数。 

      1150 指定程序要求更新的 Windows 版本。 

      1151 指定程序不是 Windows 或 MS-DOS 程序。 

      1152 只能启动该指定程序的一个范例。 

      1153 该指定程序是为以前一个版本的的 Windows 而写的。 

      1154 运行该应用程序所需的一个库文件已被损坏。 

      1155 没有应用程序与此操作的指定文件有关联。 

      1156 在输送指令到应用程序的过程中出现错误。 

      1157 执行该应用程序所需的库文件之一无法找到。 

      1158 当前程序已使用了 Window 管理器对象的系统允许的所有句柄。 

      1159 消息只能与同步操作一起使用。 

      1160 指出的源元素没有媒体。 

      1161 指出的目标元素已包含媒体。 

      1162 指出的元素不存在。 

      1163 指出的元素是未显示的存储资源的一部分。 

      1164 由于硬件错误,显示设备需要重新初始化。 

      1165 设备指示在尝试进一步操作之前需要清除。 

      1166 设备指示门是打开的。 

      1167 设备没有连接。 

      1168 找不到元素。 

      1169 索引中没有同指定项相匹配的项。 

      1170 在对象上不存在指定的属性集。 

      1171 传递到 GetMouseMovePoints 的点不在缓冲区中。 

      1172 跟踪(工作站)服务没有运行。  

        1173 找不到卷 ID。 

      1175 无法删除要被替换的文件。 

      1176 无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。 

      1177 无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。 

      1178 正在删除卷更改日志。 

      1179 卷更改日志处于非活动状态。 

      1180 找到一份文件,但是可能不是正确的文件。 

      1181 日志项已从日志中被删除。 

      1200 指定的设备名无效。 

      1201 设备当前未连接上,但其为一个记录连接。 

      1202 本地设备名称已有到另一网络资源的记录连接。 

      1203 无任何网络提供程序接受指定的网络路径。 

      1204 指定的网络提供程序名称无效。 

      1205 无法打开网络连接配置文件。 

      1206 网络连接配置文件损坏。 

      1207 无法枚举空载体。 

      1208 出现了扩展错误。 

      1209 指定的组名格式无效。 

      1210 指定的计算机名格式无效。 

      1211 指定的事件名格式无效。 

      1212 指定的域名格式无效。 

      1213 指定的服务名格式无效。 

      1214 指定的网络名格式无效。 

      1215 指定的共享名格式无效。 

      1216 指定的密码格式无效。 

      1217 指定的消息名格式无效。 

      1218 指定的消息目标格式无效。 

      1219 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次... 

      1220 试图与网络服务器建立会话,但目前与该服务器建立的会话太多。 

      1221 工作组或域名已由网络上的另一部计算机使用。  
    1222 网络不存在或尚未启动。 

      1223 操作已被用户取消。 

      1224 请求的操作无法在使用用户映射区域打开的文件上执行。 

      1225 远程系统拒绝网络连接。 

      1226 网络连接已被适当地关闭了。 

      1227 网络传输终结点已有与其关联的地址。 

      1228 地址仍未与网络终结点关联。 

      1229 企图在不存在的网络连接上进行操作。 

      1230 企图在使用中的网络连接上进行无效的操作。 

      1231 不能访问网络位置。有关网络排除故障的信息,请参阅 Windows 帮助。 

      1232 不能访问网络位置。有关网络排除故障的信息,请参阅 Windows 帮助。 

      1233 不能访问网络位置。有关网络排除故障的信息,请参阅 Windows 帮助。 

      1234 没有任何服务正在远程系统上的目标网络终结点上操作。 

      1235 请求被终止。 

      1236 由本地系统终止网络连接。 

      1237 操作无法完成。应该重试。 

      1238 因为已达到此帐户的最大同时连接数限制,所以无法连接服务器。 

      1239 试图在这个帐户未被授权的时间内登录。 

      1240 此帐户并未得到从这个工作站登录的授权。 

      1241 请求的操作不能使用这个网络地址。 

      1242 服务器已经注册。 

      1243 指定的服务不存在。 

      1244 因为用户还未被验证,不能执行所要求的操作。 

      1245 因为用户还未登录网络,不能执行所要求的操作。指定的服务不存在。 

      1246 正在继续工作。 

      1247 试图进行初始操作,但是初始化已完成。 

      1248 没有更多的本地设备。 

      1249 指定的站点不存在。 

      1250 具有指定名称的域控制器已经存在。 

      1251 只有连接到服务器上时,该操作才受支持。 

      1252 即使没有改动,组策略框架也应该调用扩展。 

      1253 指定的用户没有一个有效的配置文件。 

      1254 Microsoft Small Business Server 不支持此操作。 

      1255 服务器已关机。 

       1256 远程系统不可用。有关网络疑难解答,请见 Windows 帮助。 

      1257 提供的安全标识符不是来自一个帐户域。 

      1258 提供的安全标识符没有域组件。 

      1259 取消了 AppHelp 对话,导致应用程序无法启动。 

      1260 由于一个软件限制策略的阻止,Windows 无法打开此程序。要获取更多信息,请打开事件查看器或与系统管理员联系。 

      1261 一个程序企图用无效的注册值。通常由未初始化的注册表引起。此错误是 Itanium 特有的。 

      1262 该共享目前处于脱机状态,或者不存在。 

      1263 在智能卡登陆过程中,验证 KDC 证书时 kerberos 协议遇到一个错误。 

      1264 试图使用智能卡子系统时,Kerberos 协议出错。 

      1265 系统检测到危害安全的尝试。请确认您能与对您进行身份验证的服务器联系。 

      1266 用于身份验证的智能卡证书被取消。请与系统管理元联系。事件日志中可能有额外的信息。 

      1267 在处理用于身份验证的智能卡证书时,检测到一个不受信用证书颁发机构。请与系统管理员联系。 

      1268 无法决定用于身份验证的智能卡证书的取消状态。请与系统管理员联系。 

      1269 用于身份验证的智能卡证书不被信任。请与系统 管理员联系。 

      1270 用于身份验证的智能卡证书已经过期。请与系统 管理员联系。 

      1271 计算机已经锁定而且不使用强制选项无法关机。 

      1273 当调用一个应用程序定义的回叫时,出现无效数据错误。 

      1274 在同步前台策略刷新时,组策略框架应该调用扩展。 

      1275 此驱动程序被阻止加载 

      1276 动态链接库(DLL)引用的模块不是 DLL 也不是过程可执行映像。 

      1300 并非所有被引用的特权都指派给呼叫方。 

      1301 帐户名和安全 ID 间的某些映射未完成。 

      1302 没有为该帐户特别设置系统配额限制。 

      1303 没有可用的加密密钥。返回了一个已知加密密钥。 

      1304 密码太复杂,无法转换成 LAN Manager 密码。返回的 LAN Manager 密码为空字符串。 

      1305 修订级别未知。 

      1306 表明两个修订级别是不兼容的。 

      1307 这个安全 ID 不能指派为此对象的所有者。 

      1308 这个安全 ID 不能指派为对象的主要组。 

      1309 目前未模仿客户端的线程试图在模仿令牌上操作。 

      1310 组可能未被禁用。

      1311 目前没有可用的登录服务器处理登录请求。 

      1312 指定的登录会话不存在。可能已被终止。 

      1313 指定的特权不存在。 

      1314 客户端没有所需的特权。 

      1315 提供的名称不是正确格式的帐户名。 

      1316 指定的用户已存在。 

      1317 指定的用户不存在。 

      1318 指定的组已存在。 

      1319 指定的组不存在。 

      1320 指定的用户帐户已是指定组的成员,或是因为组包含成员所以无法删除指定的组。 

       1321 指定的用户帐户不是指定组帐户的成员。 

      1322 无法禁用或删除最后剩余的系统管理帐户。 

      1323 无法更新密码。提供作为当前密码的值不正确。 

      1324 无法更新密码。提供给新密码的值包含密码中不允许的值。 

      1325 无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。 

      1326 登录失败: 未知的用户名或错误密码。 

      1327 登录失败: 用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。 

      1328 登录失败: 违反帐户登录时间限制。 

      1329 登录失败: 不允许用户登录到此计算机。 

      1330 登录失败: 指定的帐户密码已过期。 

      1331 登录失败: 禁用当前的帐户。 

      1332 帐户名与安全标识间无任何映射完成。 

      1333 一次请求过多的本地用户标识符(LUIDs)。 

      1334 无更多可用的本地用户标识符(LUIDs)。 

      1335 对于该特别用法,安全 ID 的次级授权部分无效。 

      1336 访问控制列表(ACL)结构无效。 

      1337 安全 ID 结构无效。 

      1338 安全描述符结构无效。 

      1340 无法创建固有的访问控制列表(ACL)或访问控制项目(ACE)。 

      1341 服务器当前已禁用。 

      1342 服务器当前已启用。 

      1343 所提供的值是无效的标识符颁发机构的值。 

      1344 无更多可用的内存以更新安全信息。 

      1345 指定的特性无效,或不与组的特性兼容。 

      1346 指定的模拟级别无效,或所提供的模拟级别无效。 

      1347 无法打开匿名级安全令牌。 

      1348 请求的验证信息类别无效。 

      1349 令牌的类型对其尝试使用的方法不适当。 

      1350 无法在与安全性无关联的对象上运行安全性操作。 

      1351 未能从域控制器读取配置信息,或者因为机器不可使用,或者是访问被拒绝。 

      1352 安全帐户管理器(SAM)或本地安全颁发机构(LSA)服务器处于运行安全操作的错误状态。 

      1353 域处于运行安全操作的错误状态。 

      1354 该操作只能在主要域控制器执行。 

      1355 指定的域不存在,或无法联系。 

      1356 指定的域已存在。 

      1357 试图超出每服务器域个数的限制。 

      1358 无法完成请求操作,因为磁盘上的严重媒体失败或数据结构损坏。 

      1359 出现了内部错误。 

      1360 通用访问类型包含于已映射到非通用类型的访问掩码中。 

       1361 安全描述符格式不正确(绝对或自相关的)。 

      1362 请求的操作只准登录过程使用。该调用过程并未被记录为登录过程。 

      1363 无法使用已在使用中的标识启动新的会话。 

      1364 特定的身份验证程序包未知。 

      1365 登录会话并非处于与请求操作一致的状态中。 

      1366 登录会话标识已在使用中。 

      1367 登录请求包含无效的登录类型值。 

      1368 在使用命名管道读取数据之前,无法经由该管道模拟。 

      1369 注册表子树的事务处理状态与请求状态不一致。 

      1370 安全性数据库内部出现损坏。 

      1371 无法在内置帐户上运行此操作。 

      1372 无法在内置特殊组上运行此操作。 

      1373 无法在内置特殊用户上运行此操作。 

      1374 无法从组中删除用户,因为当前组为用户的主要组。 

      1375 令牌已作为主要令牌使用。 

      1376 指定的本地组不存在。 

      1377 指定的帐户名不是本地组的成员。 

      1378 指定的帐户名已是本地组的成员。 

      1379 指定的本地组已存在。 

      1380 登录失败: 未授予用户在此计算机上的请求登录类型。 

      1381 已超过在单一系统中可保存机密的最大个数。 

      1382 机密的长度超过允许的最大长度。 

      1383 本地安全颁发机构数据库内部包含不一致性。 

      1384 在尝试登录的过程中,用户的安全上下文积累了过多的安全标识。 

      1385 登录失败: 未授予用户在此计算机上的请求登录类型。 

      1386 更改用户密码时需要交叉加密密码。 

      1387 该成员不存在,因此不能将其添加到本地组中或从本地组删除。 

      1388 无法将新成员加入到本地组中,因为成员的帐户类型错误。 

      1389 已指定过多的安全标识。 

      1390 更改此用户密码时需要交叉加密密码。 

      1391 表明 ACL 未包含任何可承继的组件。 

      1392 文件或目录损坏且无法读取。 

      1393 磁盘结构损坏且无法读取。 

      1394 没有指定登录会话的用户会话密钥。 

      1395 正在访问的服务有连接数目授权限制。这时候已经无法再连接,原因是已经到了可接受的连接数目上限。 

      1396 登录失败: 该目标帐户名称不正确。 

      1397 相互身份验证失败。该服务器在域控制器的密码过期。 

      1398 在客户端和/或服务器之间有一个时间差。 

      1399 无法在当前域上执行此操作。 

      1400 无效的窗口句柄。  

       1401 无效的菜单句柄。 

      1402 无效的光标句柄。 

      1403 无效的加速器表句柄。 

      1404 无效的挂钩句柄。 

      1405 无效的多重窗口位置结构句柄。 

      1406 无法创建最上层子窗口。 

      1407 找不到窗口类别。 

      1408 无效窗口;它属于另一线程。 

      1409 热键已注册。 

      1410 类别已存在。 

      1411 类别不存在。 

      1412 类别仍有打开的窗口。 

      1413 无效索引。 

      1414 无效的图标句柄。 

      1415 使用专用 DIALOG 窗口字词。 

      1416 找不到列表框标识。 

      1417 找不到通配字符。 

      1418 线程没有打开的剪贴板。 

      1419 没有注册热键。 

      1420 窗口不是合法的对话窗口。 

      1421 找不到控件 ID。 

      1422 因为没有编辑控制,所以组合框的消息无效。 

      1423 窗口不是组合框。 

      1424 高度必须小于 256。 

      1425 无效的设备上下文(DC)句柄。 

      1426 无效的挂接程序类型。 

      1427 无效的挂接程序。 

      1428 没有模块句柄无法设置非本机的挂接。 

      1429 此挂接程序只可整体设置。 

      1430 日志挂接程序已安装。  

        1431 挂接程序尚未安装。 

      1432 单一选择列表框的无效消息。 

      1433 LB_SETCOUNT 发送到非被动的列表框。 

      1434 此列表框不支持 Tab 键宽度。 

      1435 无法毁坏由另一个线程创建的对象。 

      1436 子窗口没有菜单。 

      1437 窗口没有系统菜单。 

      1438 无效的消息对话框样式。 

      1439 无效的系统范围内的(SPI_*)参数。 

      1440 已锁定屏幕。 

      1441 多重窗口位置结构中窗口的所有句柄必须具有相同的上层。 

      1442 窗口不是子窗口。 

      1443 无效的 GW_* 命令。 

      1444 无效的线程标识。 

      1445 无法处理非多重文档接口(MDI)窗口中的消息。 

      1446 弹出式菜单已经激活。 

      1447 窗口没有滚动条。 

      1448 滚动条范围不可大于 MAXLONG。 

      1449 无法以指定的方式显示或删除窗口。 

      1450 系统资源不足,无法完成请求的服务。 

      1451 系统资源不足,无法完成请求的服务。 

      1452 系统资源不足,无法完成请求的服务。 

      1453 配额不足,无法完成请求的服务。 

      1454 配额不足,无法完成请求的服务。 

      1455 页面文件太小,无法完成操作。 

        1456 找不到菜单项。 

      1457 键盘布局句柄无效。 

      1458 不允许使用挂钩类型。 

      1459 该操作需要交互式窗口工作站。 

      1460 由于超时时间已过,该操作返回。 

      1461 无效监视器句柄。 

      1500 事件日志文件损坏。 

      1501 无法打开事件日志文件,事件日志服务没有启动。 

      1502 事件日志文件已满。 

      1503 事件日志文件已在读取间更改。 

      1601 无法访问 Windows 安装服务。发生这种情况的可能是您在安全模式下运行 Windows,或是没有正确安装 Windows 安装,。请与技术支持人员联系以获得帮助。 

      1602 用户取消了安装。 

      1603 安装时发生严重错误 

      1604 安装已挂起,未完成。 

      1605 这个操作只对当前安装的产品有效。 

      1606 功能 ID 未注册。 

      1607 组件 ID 并未注册。 

      1608 未知属性。 

      1609 句柄处于不正确的状态。 

      1610 这个产品的配置数据已损坏。请与技术支持人员联系。 

      1611 组件限制语不存在。 

      1612 这个产品的安装来源无法使用。请验证来源是否存在,是否可以访问。 

      1613 Windows 安装服务无法安装这个安装程序包。您必须安装含有 Windows 安装服务新版本的 Windows Service Park。 

      1614 没有卸载产品。 

      1615 SQL 查询语法不正确或不被支持。 

      1616 记录字符域不存在。 

      1617 设备已被删除。 

      1618 正在进行另一个安装操作。请在继续这个安装操作之前完成那个操作。 

      1619 未能打开这个安装程序包。请验证程序包是否存在,是否可以访问;或者与应用程序供应商联系,验证这是否是有效的 Windows 安装服务程序包。 

      1620 未能打开这个安装程序包。请与应用程序供应商联系,验证这是否是有效的 Windows 安装服务程序包。 

      1621 启动 Windows 安装服务用户接口时有错误。请与技术支持人员联系。 

      1622 打开安装日志文件的错误。请验证指定的日志文件位置是否存在,是否可以写入。 

      1623 安装程序包的语言不受系统支持。 

      1624 应用变换时的错误。请验证指定的变换路径是否有效。 

      1625 系统策略禁止这个安装。请与系统管理员联系。 

      1626 无法执行函数。 

       1627 执行期间,函数出了问题。 

      1628 指定了无效的或未知的表格。 

      1629 提供的数据类型不对。 

      1630 这个类型的数据不受支持。 

      1631 Windows 安装服务未能启动。请与技术支持人员联系。 

      1632 临时文件夹已满或无法访问。请释放一些空间或验证您是否有写入临时文件夹的权限。 

      1633 这个处理器类型不支持该安装程序包。请与产品供应商联系。 

      1634 组件没有在这台计算机上使用。 

      1635 无法打开修补程序包。请验证修补程序包是否存在,是否可以访问;或者与应用程序供应商联系,验证这是否是 Windows 安装服务的修补程序包。 

      1636 无法打开修补程序包。请与应用程序供应商联系,验证这是否是 Windows 安装服务的修补程序包。 

      1637 Windows 安装服务无法处理这个修补程序包。您必须安装含有 Windows 安装服务新版本的 Windows Service Pack。 

      1638 已安装这个产品的另一个版本。这个版本的安装无法继续。要配置或删除这个产品的现有版本,请用“控制面板”上的“添加/删除程序”。 

      1639 无效的命令行参数。有关详细的命令行帮助,请查阅 Windows 安装服务的 SDK。 

      1640 在终端服务远程会话期间,只有管理员有添加、删除或配置服务器软件的权限。如果您要在服务器上安装或配置软件,请与网络管理员联系。 

      1641 要求的操作已成功结束。要使改动生效,必须重新启动系统。 

      1642 Windows 安装服务无法安装升级修补程序,因为被升级的程序可能会丢失或是升级修补程序可能更新此程序的一个不同版本。请确认要被升级的程序在您的计算机上且您的升级修补程序是正确的。 

      1643 软件限制策略不允许有修补程序包。 

      1644 软件限制策略不允许一个或多个自定义项。 

      1700 字符串绑定无效。 

      1701 绑定句柄的类型不正确。 

      1702 绑定句柄无效。 

      1703 不支持 RPC 协议序列。 

      1704 RPC 协议序列无效。 

      1705 字符串通用唯一标识(UUID)无效。 

      1706 终结点格式无效。 

      1707 网络地址无效。 

      1708 找不到终结点。 

      1709 超时值无效。 

      1710 找不到对象通用唯一标识(UUID)。 

      1711 对象通用唯一标识(UUID)已注册。 

      1712 类型通用唯一标识(UUID)已注册。 

      1713 RPC 服务器已在侦听。 

      1714 未登记任何协议序列。 

      1715 RPC 服务器未在侦听。 

      1716 管理程序类型未知。 

      1717 接口未知。 

      1718 没有绑定。 

      1719 没有协议序列。 

      1720 无法创建终结点。  

        1721 资源不足,无法完成该操作。 

      1722 RPC 服务器不可用。 

      1723 RPC 服务器太忙,不能完成该操作。 

      1724 网络选项无效。 

      1725 该线程中没有远程过程调用活动。 

      1726 远程过程调用失败。 

      1727 远程过程调用失败且未运行。 

      1728 远程过程调用(RPC)协议出错。 

      1730 RPC 服务器不支持传送语法。 

      1732 不支持通用唯一标识(UUID)类型。 

      1733 标识无效。 

      1734 数组绑定无效。 

      1735 绑定不包含登录项名字。 

      1736 名称语法无效。 

      1737 不支持该名称语法。 

      1739 没有可用来创建通用唯一标识(UUID)的网络地址。 

      1740 终结点重复。 

      1741 未知的验证类型。 

      1742 调用的最大个数太小。 

      1743 字符串太长。 

      1744 找不到 RPC 协议顺序。 

      1745 过程号超出范围。 

      1746 绑定不包含任何验证信息。 

      1747 未知的验证服务。 

      1748 未知的验证级别。 

      1749 安全上下文无效。 

      1750 未知的授权服务。 

      1751 项目无效。 

      1752 服务器终结点无法运行操作。 

      1753 终结点映射器中没有更多的终结点可用。 

      1754 未导出任何接口。 

      1755 项目名不完整。 

      1756 版本选项无效。 

      1757 没有其他成员。 

      1758 没有内容未导出。 

      1759 接口没有找到。 

      1760 项目已存在。 

      1761 找不到项目。 

      1762 名称服务不可用。 

      1763 网络地址族无效。 

      1764 不支持请求的操作。 

      1765 没有安全上下文可用来允许模仿。 

        1766 远程过程调用(RPC)中发生内部错误。 

      1767 RPC 服务器试图以零除整数。 

      1768 RPC 服务器出现寻址错误。 

      1769 RPC 服务器上的浮点操作导至以零做除数。 

      1770 RPC 服务器上发生浮点下溢。 

      1771 RPC 服务器上发生浮点溢出。 

      1772 自动句柄绑定的可用 RPC 服务器列表已用完。 

      1773 无法打开字符翻译表文件。 

      1774 包含字符转换表的文件小于 512 字节。 

      1775 在远程过程调用时,将空的上下文句柄从客户端传递到主机。 

      1777 在远程过程调用时,上下文句柄已更改。 

      1778 传送给远程过程调用的绑定句柄不匹配。 

      1779 承接体无法获得远程过程调用句柄。 

      1780 向占位程序传送了空的索引指针。 

      1781 枚举值越界。 

      1782 字节计数太小。 

      1783 占位程序接收到错误数据。 

      1784 提供给请求操作的用户缓冲区无效。 

      1785 磁盘媒体无法识别。可能未被格式化。 

      1786 工作站没有信任机密。 

      1787 服务器上的安全数据库没有此工作站信任关系的计算机帐户。 

      1788 主域和受信域间的信任关系失败。 

      1789 此工作站和主域间的信任关系失败。 

      1790 网络登录失败。 

      1791 此线程的远程过程调用已在进行中。 

      1792 试图登录,但是网络登录服务没有启动。 

      1793 用户帐户已过期。 

      1794 重定向程序正使用中,不能卸装。 

      1795 指定的打印机驱动程序已安装。 

      1796 指定的端口未知。 

      1797 未知的打印机驱动程序。 

      1798 未知的打印机处理器。 

      1799 指定的分隔页文件无效。 

      1800 指定的优先级无效。 

      1801 打印机名无效。 

      1802 打印机已存在。 

      1803 打印机命令无效。 

      1804 指定的数据类型无效。 

      1805 指定的环境无效。 

      1806 没有更多的绑定。 

      1807 所用帐户为域间信任帐户。请使用您的全局用户帐户或本地用户帐户来访问这台服务器。 

      1808 所用帐户是一个计算机帐户。使用您的全局。

     

    展开全文
  • 窗口句柄:在Windows或Linux等操作系统下窗口句柄对应着每个窗口的钥匙,例如,你要对某一个窗口进行操作,你必须知道你要操作哪一个窗口,这里就拿Windows做举例,Windows下几乎会创建许许多多个窗口,但是我们怎么...

    窗口句柄:

    在Windows或Linux等操作系统下窗口句柄对应着每个窗口的钥匙,例如,你要对某一个窗口进行操作,你必须知道你要操作哪一个窗口,这里就拿Windows做举例,Windows下几乎会创建许许多多个窗口,但是我们怎么知道我们操作的是哪个窗口?

    答:就是窗口句柄,每个窗口在被创建出来之后就会被赋予一个句柄,该句柄(句柄实则上是一个指针)指向一个数据结构体,结构体里明确表示着该窗口的各种信息,窗口大小,窗口名等,当我们得到这个句柄时就可以请求操作系统对它做一系列操作,列如:移动窗口,关闭窗口,最小化最大化等,这些都是通过窗口句柄来告诉操作系统的,我们要对哪个窗口进行操作,而消息则是告诉操作系统要做什么样的操作,消息的附加参数就是操作值,列如移动窗口,会有附加的xy坐标参数!

    进程ID:

    进程ID是当一个进程被创建出来时系统内核为其分配的一个名字/绰号,且进程分配的首地址在GDT(局域的叫LDT,详细可以查看: 详解:物理地址,虚拟地址,内存管理,逻辑地址之间的关系)表中,进程ID会被保存到该进程的PCB进程控制块中(线程的会存放到:TCB线程控制块中,都是一个数据结构体包含:

     

    • 程序计数器:接着要运行的指令地址。
    • 进程状态:可以是new、ready、running、waiting或 blocked等。
    • CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因电脑架构有所差异。
    • CPU排班法:优先级、排班队列等指针以及其他参数。
    • 村粗气管理:如标签页表等。
    • 会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。
    • 输入输出状态:配置进程使用 I/O设备,如磁带机。  

     

    ),当操作系统想要操作某个进程时会通过进程ID来指定要操作哪个进程!

     

    进程句柄:

    进程句柄与窗口句柄不一样,这里先解释一下上面是进程句柄:进程句柄指向进程下的PCB进程控制块,当我们要对进程进行I/O操作时候时候需要知道进程的堆栈地址范围以及状态才能的值对应的LDT/GDT并转化为物理地址(或通过段选择符进行转换详细:详解:物理地址,虚拟地址,内存管理,逻辑地址之间的关系),操作系统才能为我们对该进程进行读写操作,所以一般我们会通过进程ID来获取进程句柄(临时的),来对进程进行操作。

    操作系统会通过进程ID来遍历进程下的PCB进程控制块看一下该进程属于哪个GDT下的LDT表中,找到之后会将该进程的PCB进程控制块地址返回给获取者!

    注意:进程ID在创建时就会规定好,其ID是按照进程创建顺序来分配的,用完后会被回收二次分配,进程句柄不是,当我们获取某个进程的句柄时,操作系统会将PCB进程控制块地址返回给获取者,获取者需要通过指针来接收它,指针占用的空间是占用的是自己进程下的!所以当我们用完释放,二次获取时候句柄的地址就会发生改变,但句柄指向的地址不会发生改变(是因为PE文件映射关系,详细请查看PE文件格式映射原理,在PE文件格式中PCB进程控制块的映射位置是:0x64(100)),句柄等于指针!

    窗口与进程之间的关系

    一个窗口对应一个进程,就拿人来做形容吧

    人都有一个身体和大脑,身体是对外展示的,而大脑是在控制身体应该怎样对外展示,所以窗口就是对用户进行可视化界面交互的,而进程里的数据和指令在控制着窗口应该怎样交互!

     

     

     

     

    展开全文
  • 进程 1 进程的含义: 1.1 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。 1.2 另一个是地址空间,它包含所有可执行模块或DL L 模块的代码和数据。它还包含动态内存...
  • Windows或Linux等操作系统下窗口句柄对应着每个窗口的钥匙,例如,你要对某一个窗口进行操作,你必须知道你要操作哪一个窗口,这里就拿Windows做举例,Windows下几乎会创建许许多多个窗口,但是我们怎么知道我们...
  • windows C++进程间和线程间通信

    千次阅读 2016-08-09 21:36:15
    Thank Swarajya Pendharkar and MSDN...进程间通信进程基本概念In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system p
  • Windows进程通信之剪贴板

    千次阅读 2014-08-01 14:03:40
    本文从剪贴板概念、剪贴板内容监听,普通数据类型,打开剪贴板,读剪贴板,写剪贴板、API汇总、他山之石、通过剪贴板实现进程间通信和总结共11个方面来较为深入地探讨Windows剪贴板的机制和使用。   说明:建议先...
  • Windows事件ID及解释大全

    万次阅读 2019-12-10 21:23:40
    ID 的地址不正确。   160 至少有一个参数不正确。   161 指定的路径无效。   162 信号已暂停。   164 无法在系统中创建更多的线程。   167 无法锁定文件区域。   170 请求的资源在...
  • Windows事件ID大全

    万次阅读 2019-04-25 09:07:26
    事件查看器常见ID代码解释 ID 类型 来 源 代 表 的 意 义 举 例 解 释 2 信息 Serial 在验证 \Device\Serial1 是否确实是串行口时,系统检测到先进先出方式...
  • linux和windows进程的虚拟地址空间

    千次阅读 2016-09-19 20:02:12
    昨晚看到了深夜,终于对进程的虚拟地址空间有了个大致的了解,很激动,也很欣慰。回头想来,一个程序员,真的应该知道这些知识,否则还真不太称职。 首先告诉大家,我后面提到的这些知识在《windows核心编程》中都...
  • LINUX系统和WINDOWS系统进程创建流程

    千次阅读 2018-09-06 17:04:23
    windows进程创建流程 windows系统提供给用户的创建函数接口名称为CreateProcess(),下面我们通过分析系统中的这个函数的具体实现过程来阐述系统是如何 从无到有将一个新进程带入到操作系统的运行中去的。 来源...
  • windows系统各进程详解

    千次阅读 2012-01-12 11:39:17
    系统各进程详解        下面列出的都是操作系统的进程,而不是程序的进程,记住这些进程并了解他们的工作原理,用途,能让我们对系统进程的理解提升一个...
  • 在一些windows程序中需求需要分析当前程序运行的状态,那么就需要程序自己去捕获自己当前的所使用资源信息。这里上传一个封装好了的程序。 CPU_MEMusage.h #include &lt;Windows.h&gt; #include &lt...
  • 范围:0~5073) 代码 错误信息解释 0 操作成功完成。 1 函数不正确。 2 系统找不到指定的文件。 3 系统找不到指定的路径。 4 系统无法打开文件。 5 拒绝访问。 6 句柄无效。 7 存储控制块被损坏。 8 存储空间不足,...
  • 常见的进程终止值: 0x00000003 CRT的 abort() 或者 assert() 方法被调用了 0x80000003 在 RTC 运行时检查 发现一个未处理的断点(比如__debugbreak())  0xC0000005 访问冲突 0xC00000FD 堆栈溢出。请避免递归,...
  • Windows下查看dll被哪个进程调用

    万次阅读 2016-09-21 16:24:56
    这玩意一会儿打印10来条,一会儿打印10来条,实在是影响我的程序调试,而且我电脑本来就慢得要死,查看其进程id,竟然是ie!然后就查看ie的加载项,发现了一个KisIEProtecter64.dll,标明是kingsoft公司的插件,复制...
  • Linux,Windows和UNIX的进程调度的分析

    万次阅读 2011-05-14 17:23:00
    Windows 操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识  关键词:进程调度 优先级 时间片轮转 实时进程 分时技术      引言:无论是在批处理系统还是分时系统...
  • 进程句柄和进程ID的区别和关系

    千次阅读 2013-09-21 00:19:11
    进程句柄和进程ID的区别和关系  进程是一个正在运行的程序 进程里可以包括多个模块(DLL,OCX,等) 进程句柄是程序访问时用到的东西,当前进程句柄等于主模块的句柄,当你使用OpenProcess时的进程句柄是不等于...
  • 枚举进程ID并且获得进程路径

    千次阅读 2012-09-27 22:06:21
    枚举进程在vc里面一般用CreateToolhelp32Snapshot()函数 这个函数的作用是给系统内的所有进程拍一个快照 CreateToolhelp32Snapshot 用于获取系统内指定进程的快照,也可以获取被这些进程使用 的堆、模块和线程的...
  • Windows进程创建

    千次阅读 2010-05-11 13:37:00
    漫谈兼容内核之十七:再谈Windows进程创建毛德操 在漫谈之十中。我根据“Microsoft Windows Internals 4e”一书第六章的叙述介绍了Windows进程创建和映像装入的过程。但是,由于缺乏源代码的支撑,这样的叙述...
  • HANDLE、进程ID和HINSTANCE的区别

    千次阅读 2011-09-16 11:20:08
    本篇文章属于文摘,引子一个帖子的回复。 原文如下: ...Handle在Windows中的含义很广泛,以下关于谈到的Handle除非特别说明,将仅限于进程、线程的上下文中。 1. 先来谈谈Handle  Handle本身是一个32位
  • windows内核状态下进程创建解析

    千次阅读 2014-01-01 23:55:06
    存与进程管理器 ========================== But I fear tomorrow I'll be crying, Yes I fear tomorrow I'll be crying. King Crimson'69 -Epitaph 关于Windows NT内存管理器的高层次信息已经够多的了...
  • Windows 进程的句柄表

    千次阅读 2015-03-12 14:49:32
    本文源自《Windows内核原理与实现》第3章Windows 进程和线程 3.4.1 Windows 进程的句柄表(1) 上一章介绍了Windows 内核中的对象管理器,Windows 执行体实现了一套对象机制来管理各种资源或实体。每种...
  • C语言-获得进程或线程ID函数

    万次阅读 2013-06-18 23:22:49
    1 获得进程ID: C语言getpid函数简介  函数功能:取得进程识别码  相关函数:fork,kill,getpid  头文件:旧版本:unistd.h,在VC++6.0下可以用process.h  函数原型:旧的原型为pid...
  • windows 7 系统进程服务详解(一)

    千次阅读 2012-08-08 00:38:32
    windows 7已经发布有段时间了,相信很多网友都已经换上了传说中非常完美的win7系统.win7不仅继承而且还超越了vista的美观界面,性能优化方面也下足了...本文就来给大家详解下win7的进程和服务,大家可以根据自己的需
  • Windows CE 进程、线程和内存管理

    千次阅读 2008-08-09 09:55:00
    进程、线程、内存管理是一个内核最基本的服务,也是一个内核最主要的组成部分。这几方面的知识是一个软件开发人员必须掌握的基础知识。虽然一个人不懂这些...顺便说一下,在Windows CE.net下可以运行用Visual Studio
  • 进程的句柄,PID及线程

    千次阅读 2019-02-28 16:03:55
    进程(process) 进程是一个正在运行的程序 进程里可以包括多个模块(DLL,OCX,等) 进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。 一个任务就是一个进程(Process),比如...
  • 被问懵了:一个进程最多可以创建多少个线程?

    千次阅读 多人点赞 2021-07-15 09:19:09
    大家好,我是小林。 昨天有位读者问了我这么个问题: 大致意思就是,他看了一个面经...在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址 空间的范围也不同。比如最常
  • Windows Event 事件ID介绍

    千次阅读 2012-10-29 17:26:10
    Windows ID事件及解释(XP、2000、2003)【转】 (范围:0~5073)代码 错误信息解释 0 操作成功完成。 1 函数不正确。 2 系统找不到指定的文件。 3 系统找不到指定的路径。 4 系统无法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,229
精华内容 26,891
关键字:

windows进程id的范围