`
chinamming
  • 浏览: 151159 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

理解 Windows API 调用过程

 
阅读更多
我们在应用层调用一个Win32 API, 系统内部究竟是如何执行的, 它是如何从用户态进入到内核态的呢 ?



对于每层一些概念的解释,这里不详述了,具体可以参考理解Windows内核模式与用户模式.

以Kernel32里的CreateProcess 为例, 内部会调用ntdll.dll里导出的NtCreateProcess,ntdll.dll通过一个中断请求int 2Eh(Sysenter)进入内核态, 在内核的Executive Service Routines 层, 内部保存着一张表“SSDT”(System Service Descriptor Table,系统服务描述符表), 通过该表找到该API在执行体 (Executive)(ntoskrnl.exe)中导出函数的位置,最终调用系统功能。

下面是另外一张《Windows图形编程》中提到的系统架构图, 我们也可以参考一下:


下面这张《Inside Microsoft Windows 2000》的架构图, 基本上都大同小异:



最后, 总结一下, 微软在Intel处理器上开发Windows操作系统, 我们在Windows操作系统上开发应用程序,无非是一层层的封装, 其实具体到细节, 每层都没有太多神秘的东西。我们当然不可能掌握每层的细节, 只能理解每层的概念, 以帮助我们在应用层更好的开发。
分享到:
评论

相关推荐

    java 调用windows API

    通常,开发者指南会涵盖库的安装、配置、API调用语法以及错误处理等内容。 4. **javadoc**: `javadoc`通常是一个包含Java类库API文档的HTML文件集合。对于`jinvoke.jar`,javadoc会列出所有可用的类、方法和接口...

    windowsAPI调用查询器与PB API调用例子

    "windowsAPI调用查询器"就是为了方便开发者查询和使用这些API而设计的工具。 "PB API调用例子"则是针对如何在PowerBuilder中正确地调用Windows API进行实践操作的示例代码。这些例子通常会展示如何声明API函数、...

    VB.NET 调用Windows API 使用方法

    ### VB.NET 调用 Windows API 使用方法 #### 一、引言 Windows API(Application Programming Interface)调用在过去曾...通过本文介绍的基本步骤和示例,开发者可以更好地理解和掌握如何在VB.NET中调用Windows API。

    LabWindows调用WindowsAPI函数

    首先,理解Windows API的基本概念至关重要。Windows API是微软提供的一组库,包含了大量的函数,允许开发者访问操作系统的核心服务。这些函数覆盖了进程管理、线程控制、网络通信、图形绘制等多个领域。 在...

    Visual+C#的Windows+API调用实例

    本实例将深入探讨如何在C#中进行Windows API调用,并通过具体的例子来展示这一过程。 首先,要调用Windows API,我们需要包含相关的头文件,这在C#中是通过`using`指令实现的。例如,要调用Windows API中的`...

    系统篇API调用全过程.docx

    在本文中,我们将详细介绍系统篇 API 调用全过程,包括 Windows API 调用全过程、内核模块、SSDT 表识别、系统服务表引索等知识点。 系统篇 API 调用全过程 系统篇 API 调用全过程可以分为三个环节:用户模式、...

    vbs的widows api调用范例

    首先,我们需要理解API调用的基本流程: 1. **导入API**:使用`Declare`语句在VBS脚本中声明API函数,指定函数名、参数类型和返回值类型。例如: ```vbscript Declare Function FindWindow Lib "user32" Alias ...

    C#中调用Windows API的要点.rar_API_C#调用C_C# windows_windows

    总之,C#中调用Windows API涉及到理解API的函数原型、类型映射、异常处理等多个方面。熟练掌握这些要点,可以帮助开发者充分利用Windows系统的功能,扩展C#应用程序的能力。在实际项目中,应遵循最佳实践,确保代码...

    LabVIEW中如何调用Windows API__中源代码.rar

    首先,理解Windows API的概念是关键。Windows API是一组预先定义的函数,由微软为开发Windows应用程序而设计。它们允许开发者直接与操作系统交互,执行各种任务。在LabVIEW中调用这些API,可以扩展LabVIEW的功能,...

    LabVIEW调用Windows API编程指导与源代码.rar

    本资源“LabVIEW调用Windows API编程指导与源代码.rar”应该包含了一系列指导文档和实际的LabVIEW虚拟仪器(VI)示例,帮助开发者了解如何将Windows API函数集成到LabVIEW程序中。 首先,调用Windows API需要以下...

    C#调用windowsAPI

    ### C#调用Windows API详解 #### 一、引言 C#作为一种广泛使用的编程语言...理解`DllImport`特性的各个字段及其作用,对于正确高效地进行API调用至关重要。希望本文能帮助读者掌握这一技能,并在实际开发中灵活运用。

    Windows API 编程_pdf_windowsAPI编程_

    Windows API编程是Windows平台上开发软件的基础,对于理解和创建高效、稳定的应用程序至关重要。 **1. API函数** Windows API的核心是大量的函数,例如CreateWindow用于创建窗口,SendMessage用于在窗口之间发送...

    新编WINDOWS API参考大全

    1. **系统调用与API**:Windows API主要由系统调用组成,这些调用允许程序与操作系统内核进行交互。例如,CreateProcess函数用于启动新的进程,CreateThread函数则用于创建线程。 2. **窗口管理**:Windows API提供...

    Cjwdev.WindowsApi.dll

    4. **兼容性与稳定性**:作为专门针对Windows平台开发的库,Cjwdev.WindowsApi.dll确保了与各种Windows版本的兼容性,并且在稳定性方面做了充分优化,减少了因API调用错误导致的程序崩溃。 5. **易于集成**:Cjwdev...

    CSharp调用WindowsAPI入门_C#_windowsapi_

    综上所述,C#调用Windows API是通过P/Invoke技术实现的,涉及对DllImport特性的理解和使用,以及结构体和封送处理的掌握。这使得C#开发者能够利用.NET框架之外的丰富系统资源,扩展应用程序的功能。

    C#中调用Windows API的要点,在.Net Framework SDK文档中,关于调用Windows API的指示

    理解并掌握以上知识点,开发者就能更有效地在C#中调用Windows API,充分利用系统的底层功能。然而,需要注意的是,虽然直接调用API能实现更多功能,但过度依赖API可能导致代码可读性和维护性降低,因此在使用时要...

    API函数调用 windows编程

    首先,理解API调用的基本过程至关重要。当程序需要执行如创建窗口、读写文件等任务时,会通过函数调用向操作系统发送请求。这些函数通常位于Windows的动态链接库(DLL)中,如kernel32.dll、user32.dll等。调用API...

    PB如何调用WINDOWS的API(以播放声音为例)

    ### PB如何调用WINDOWS的API(以播放声音为例) 在PowerBuilder开发环境中,有时我们需要调用Windows API来实现一些特定的功能。例如,在本例中,我们将探讨如何通过PowerBuilder调用Windows API来播放声音。 ####...

    恶意程序在cuckoo沙箱中产生的Windows API序列数据集

    本数据集涉及的是恶意程序在Cuckoo沙箱中运行时生成的Windows API调用序列,这为研究人员提供了一种深入理解恶意软件功能和行为的途径。 API(Application Programming Interface)是操作系统提供的接口,允许软件...

    vc++ api函数(Windows API大全)下载

    9. **错误处理**:讨论了如何正确处理API调用中可能出现的错误,包括错误码的获取和含义,以及调试技巧。 10. **实例分析**:提供了丰富的示例代码,帮助读者将理论知识转化为实践,通过实际编程加深对Windows API...

Global site tag (gtag.js) - Google Analytics