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

reactos操作系统实现(190)

阅读更多

GetDC函数是通过窗口的句柄获取设备环境,这样就可以把获取到的设备环境使用到后面的GDI函数里,这样就可以在窗口的客户区中绘图了。当应用程序结束时,需要使用ReleaseDC来释放设备环境。如果是私有设备时,就可以不删除它。这个API实现函数如下:

#001 EXTINLINE HDC WINAPI

#002 GetDC(HWND hWnd)

#003 {

这里调用函数NtUserGetDC来实现相应的功能。

#004 return NtUserGetDC(hWnd);

#005 }

NtUserGetDC函数是在内核WIN32K里实现的,如下:

#001 HDC APIENTRY

#002 NtUserGetDC(HWND hWnd)

#003 {

#004 DPRINT("NtUGetDC -> %x:%x\n", hWnd, !hWnd ? DCX_CACHE | DCX_WINDOW : DCX_USESTYLE );

#005

这里是调用函数NtUserGetDCEx来实现。

#006 return NtUserGetDCEx(hWnd, NULL, NULL == hWnd ? DCX_CACHE | DCX_WINDOW : DCX_USESTYLE);

#007 }

NtUserGetDCEx函数代码如下:

#001 HDC APIENTRY

#002 NtUserGetDCEx(HWND hWnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)

#003 {

#004 PWINDOW_OBJECT Wnd=NULL;

#005 DECLARE_RETURN(HDC);

#006

进入用户临界区。

#007 DPRINT("Enter NtUserGetDCEx\n");

#008 UserEnterExclusive();

#009

从窗口句柄获取窗口对象。

#010 if (hWnd && !(Wnd = UserGetWindowObject(hWnd)))

#011 {

#012 RETURN(NULL);

#013 }

使用函数UserGetDCEx从窗口对象获取窗口相关的设备句柄。

#014 RETURN( UserGetDCEx(Wnd, ClipRegion, Flags));

#015

#016 CLEANUP:

#017 DPRINT("Leave NtUserGetDCEx, ret=%i\n",_ret_);

#018 UserLeave();

#019 END_CLEANUP;

#020 }

分享到:
评论

相关推荐

    ReactOS-0.3.3源码

    ReactOS-0.3.3源码是一款开源操作系统项目,旨在构建一个与Microsoft Windows系统高度兼容的免费替代品。这个项目对于那些希望了解操作系统工作原理,尤其是Windows内核机制的开发者和研究者来说,是一个宝贵的资源...

    ReactOS source code

    ReactOS源代码是开源项目ReactOS的核心组成部分,它旨在实现一个与Microsoft Windows操作系统高度兼容的免费和开放源代码操作系统。这个项目始于1996年,由一群对Windows内核工作原理感兴趣的开发者发起,目标是提供...

    reactos可调试光盘映像

    ReactOS是一款开源、免费的操作系统,致力于实现与微软Windows NT系列操作系统高度兼容。这款系统采用微内核架构,由全球的志愿者开发者共同维护和开发。"reactos可调试光盘映像"指的是专为开发和调试目的设计的...

    ReactOS-0.3.14源代码

    ReactOS-0.3.14源代码是一个重要的开源项目,旨在实现与Windows NT系列操作系统高度兼容的自由软件。这个项目的核心目标是提供一个与Windows系统底层行为相似的开源环境,使得用户和开发者可以在不依赖Microsoft ...

    预装了ReactOS的VMware虚拟机

    这个版本的VMware虚拟机文件(ReactOS-0.3.13-VMware)包含了所有必要的组件,包括ReactOS操作系统映像以及VMware Workstation Player或Player Pro的配置设置,以便用户可以直接启动并运行ReactOS。文件名中的...

    reactos源代码

    ReactOS是一个开源、免费的操作系统项目,旨在实现与Microsoft Windows高度兼容。它的源代码是学习Windows操作系统底层工作原理以及软件开发的重要资源。ReactOS的开发始于1996年,目标是提供一个与Windows NT系列...

    ReactOS-0.3.15

    ReactOS是一个开源、免费的操作系统项目,其目标是创建一个与Windows NT家族(包括NT4.0、2000、XP和2003)高度兼容的替代品。这个项目始于1996年,旨在提供一个与微软Windows类似的用户体验,同时保持底层操作系统...

    ReactOS_Fix

    ReactOS是一个开源项目,旨在实现一个与Microsoft Windows操作系统兼容的自由软件。它的目标是提供一个与Windows NT内核类似的环境,允许Windows应用程序和驱动程序在ReactOS上无缝运行。 在开发和维护ReactOS的...

    reactos键盘切换

    ReactOS键盘切换程序,简称KBSwitch,是ReactOS操作系统中的一个重要组件,它负责管理和实现系统小托盘区域的键盘布局切换功能。ReactOS是一个开源、免费的操作系统,旨在实现与微软Windows系统的高度兼容性。...

    ReactOS-0317-CLT2015-Source

    ReactOS是一个开源操作系统项目,旨在实现与微软Windows操作系统兼容的免费和开放源代码替代品。ReactOS-0317-CLT2015-Source这个压缩包包含了ReactOS在2015年3月17日版本的源代码。这个版本的源代码对于开发者和...

    reactos-0.3.12.zip

    ReactOS是一个开源、免费的操作系统项目,旨在实现与微软Windows操作系统高度兼容。它的目标是创建一个与Windows NT内核相似的系统,使得软件开发者和用户可以在ReactOS上运行原本为Windows设计的应用程序,无需进行...

    ReactOS 源码

    ReactOS是一个开源、免费的操作系统项目,旨在实现与Microsoft Windows操作系统兼容。它的源码提供了深入理解Windows内核工作原理的机会,对于操作系统开发者、驱动程序编写者以及对底层系统有兴趣的人员来说,是一...

    REACTOS当中Rundll的实现

    ReactOS是一个开源操作系统,旨在与Microsoft Windows兼容。在ReactOS中,`Rundll`是实现Windows兼容性的重要组成部分,它允许程序加载和执行DLL(动态链接库)中的函数。`Rundll32.exe`是Windows系统中的一个实用...

    漫谈兼容内核之一:ReactOS怎样实现系统调用

    ReactOS是一个旨在创建自由及开源的操作系统的项目,其主要目标是实现对Microsoft Windows的高度兼容性。这意味着除了用户界面的相似之外,ReactOS还必须能够运行大量为Windows设计的软件和硬件驱动。为了达到这一...

    Windows内核情景分析-采用开源代码ReactOS(下册)高清pdf版

    本书《Windows内核情景分析-采用开源代码ReactOS(下册)》是一本深入探讨Windows操作系统内核的专著,作者采用了开源操作系统ReactOS的源代码作为分析材料,对Windows内核的结构、功能、算法和实现进行了详细的解剖...

    ReactOS-0.4.11-src.zip

    ReactOS-0.4.11-src.zip是一个包含ReactOS 0.4.11源代码的压缩包,该项目是一个开放源代码的操作系统,旨在实现与Microsoft Windows的高度兼容性。这个压缩包对于开发者、学生以及对操作系统底层工作原理感兴趣的人...

    ( ReactOS-0.3.13-REL-src(1).zip )

    ReactOS 是一个开源的、免费的操作系统项目,旨在实现与微软Windows NT内核系列操作系统(如Windows 2000, XP, Vista, 7等)的高度兼容。ReactOS-0.3.13-REL-src(1).zip 文件是一个包含ReactOS 0.3.13版本源代码的...

    cpp-ReactOS一个免费兼容Windows的操作系统

    ReactOS是一个开源、免费的操作系统项目,旨在实现与Microsoft Windows的源代码级兼容性。它的设计目标是提供一个与Windows NT内核家族相媲美的、符合用户和开发者期望的环境,但并不依赖于任何专有技术。ReactOS的...

    ReactOS-0.4.7-PressKit_ReactOS_

    ReactOS是一个开源、免费的操作系统,致力于实现与微软Windows NT系列操作系统高度兼容。ReactOS-0.4.7-PressKit是ReactOS项目为0.4.7版本发布准备的媒体资料包,主要包含了用于宣传和报道ReactOS 0.4.7版本更新的...

    ReactOS-0.4.7-PressKit4_ReactOS_

    ReactOS 是一个开源操作系统项目,旨在实现与微软Windows操作系统高度兼容的免费软件。"ReactOS-0.4.7-PressKit4_ReactOS_" 可能是ReactOS项目发布0.4.7版本时提供的媒体资料包,主要用于宣传和展示项目进展。...

Global site tag (gtag.js) - Google Analytics