- 博客(25)
- 资源 (44)
- 收藏
- 关注
原创 reactos操作系统实现(172)
NtUserTranslateMessage函数实现键盘的消息转换,实现代码如下:#001 BOOL APIENTRY#002 NtUserTranslateMessage(LPMSG lpMsg,#003 HKL dwhkl)#004 {#005 NTSTATUS Status;#006 MSG S
2009-12-29 22:28:00 1522
原创 reactos操作系统实现(171)
TranslateMessage函数用来把虚拟键消息转换为字符消息,其实现的代码如下:#001 BOOL WINAPI#002 TranslateMessage(CONST MSG *lpMsg)#003 { 在这个函数里只是简单地调用函数TranslateMessageEx。#004 return(TranslateMessageEx((LPMSG)lpM
2009-12-28 23:07:00 1648
原创 reactos操作系统实现(170)
co_IntPeekMessage主要实现内核里获取窗口消息,具体实现代码如下:#001 BOOL FASTCALL#002 co_IntPeekMessage(PUSER_MESSAGE Msg,#003 HWND hWnd,#004 UINTMsgFilterMin,#005
2009-12-27 11:29:00 1732
原创 reactos操作系统实现(169)
当用USER32.DLL里调用获取消息之后,就调用到WIN32K.SYS里处理的函数NtUserGetMessage,这个函数实现的代码如下:#001 BOOL APIENTRY#002 NtUserGetMessage(PNTUSERGETMESSAGEINFOUnsafeInfo,#003 HWND hWnd,#004
2009-12-25 23:36:00 1839 1
原创 reactos操作系统实现(168)
当应用程序更新窗口后,就需要不断地接收系统发过来的消息,然后处理消息,最后发送消息出去,这样就构成了应用程序的消息循环处理。不断地获取系统消息的函数是GetMessage函数,下面就是它的实现代码:#001 BOOL WINAPI#002 GetMessageW(LPMSG lpMsg,#003 HWND hWnd,#004 UINT
2009-12-24 22:33:00 1569
原创 reactos操作系统实现(167)
co_UserRedrawWindow函数是用来实现窗口重画的功能,实现代码如下:#001 BOOL FASTCALL#002 co_UserRedrawWindow(PWINDOW_OBJECT Window,const RECT* UpdateRect, HRGN UpdateRgn,#003 ULONG Flags)#00
2009-12-23 23:21:00 1820
原创 reactos操作系统实现(166)
NtUserRedrawWindow函数主要用来重画窗口显示。具体代码如下:#001 BOOL APIENTRY#002 NtUserRedrawWindow(HWND hWnd, CONST RECT*lprcUpdate, HRGN hrgnUpdate,#003 UINT flags)#004 {#005 RE
2009-12-22 21:53:00 1627 1
原创 reactos操作系统实现(165)
在应用程序里,当窗口显示出来之后,需要立即调用一个函数UpdateWindow来更新窗口,否则窗口里面的内容就不会更新,显示还是前面其它窗口显示的内容。现在就来分析这个函数又是怎么样实现的,代码如下:#001 BOOL#002 WINAPI#003 UpdateWindow(#004 HWND hWnd)#005 { 在这个函数里只是简单调用Redra
2009-12-21 21:40:00 1787 1
原创 reactos操作系统实现(164)
继续前面的分析,上次说到需要调用函数co_WinPosShowWindow来显示窗口,那么这个函数里怎么样实现窗口的显示呢?实现代码如下:#001 BOOLEAN FASTCALL#002 co_WinPosShowWindow(PWINDOW_OBJECT Window,INT Cmd)#003 {#004 BOOLEAN WasVisible;#005
2009-12-20 13:03:00 1807
原创 reactos操作系统实现(163)
在应用程序里,当创建窗口之后,就需要把窗口显示出来,那么就需要调用函数ShowWindow,具体这个函数是怎么实现的呢?现在就来分析它的实现代码,如下:#001 EXTINLINE BOOL WINAPI#002 ShowWindow(HWND hWnd, int nCmdShow)#003 { 这里直接就调WIN32K.SYS里的代码了。#004
2009-12-19 21:07:00 2019
原创 reactos操作系统实现(162)
co_IntCreateWindowEx函数主要用创建一个显示的窗口,具体实现代码如下:#001 HWND APIENTRY#002 co_IntCreateWindowEx(DWORD dwExStyle,#003 PUNICODE_STRINGClassName,#004 PUN
2009-12-17 22:29:00 2270
原创 reactos操作系统实现(161)
NtUserCreateWindowEx函数主要用来创建一个窗口显示。在Win32k.sys里的代码如下:#001 HWND APIENTRY#002 NtUserCreateWindowEx(DWORD dwExStyle,#003 PUNICODE_STRINGUnsafeClassName,#004
2009-12-16 23:57:00 1931
原创 reactos操作系统实现(160)
CreateWindowExW函数主要用来根据已经注册窗口类来创建一个窗口。它在User32.dll实现代码如下:#001 HWND WINAPI#002 CreateWindowExW(DWORD dwExStyle,#003 LPCWSTR lpClassName,#004 LPCWSTR lpWind
2009-12-15 21:22:00 2204
原创 reactos操作系统实现(159)
NtUserRegisterClassEx函数是Win32k.sys里实现窗口类的注册,那么窗口类的注册是什么意思呢?到底注册是为了什么样的目的呢?下面就通过实现代码的分析来解决这些问题,代码如下:#001 RTL_ATOM APIENTRY#002 NtUserRegisterClassEx(IN CONST WNDCLASSEXW*lpwcx,#003
2009-12-14 22:04:00 1801
原创 reactos操作系统实现(158)
在ReactOS的应用程序里,每个有窗口的应用程序都需要注册一个窗口类,然后根据窗口类来创建窗口。注册窗口的调用函数就是RegisterClassW,这个函数是UNICODE的版本,其实还有多节字版本,但代码是差不多的。这里主要分析UNICODE版本的实现,其代码如下:#001 ATOM WINAPI#002 RegisterClassW(CONST WNDCLASSW *lpWn
2009-12-13 11:05:00 1601
原创 reactos操作系统实现(157)
上面介绍了USER32的入口函数,在那里调用Init函数进行初始化,这里就来分析这个函数的代码,看看它怎么样进行初始化,如下:#001 BOOL#002 Init(VOID)#003 { 这里设置内核的回调函数。#004 /* Set up the kernel callbacks. */#005 NtCurrentPeb()->Kernel
2009-12-12 21:05:00 1700
原创 reactos操作系统实现(156)
在USER32.DLL里也不例外,它的入口函数也是DllMain,当每个应用程序启动时就会调用本函数进行实始化。具体实现代码如下:#001 INT WINAPI#002 DllMain(#003 INPVOID hInstanceDll,#004 INULONG dwReason,#005 INPVOID reserved)#00
2009-12-11 21:33:00 1488 1
原创 reactos操作系统实现(155)
从前面可以看到GDI32的初始化函数是调用GdiDllInitialize函数来初始化,下面就来分析这个初始化的具体实现,代码如下:#001 BOOL#002 WINAPI#003 GdiDllInitialize (#004 HANDLE hDll,#005 DWORD dwReason,#006 LPVOID lpReserved
2009-12-10 23:08:00 1588 1
原创 reactos操作系统实现(154)
前面介绍了DllMain的入口函数,但GDI32的初始化函数并不是在入口函数里进行的,那么它到底在那里初始化的呢?它的初始化流程又是怎么样的呢?下面就来解决这两个问题,通过代码来分析它的过程。通过仔细地分析代码的调用关系,可以看到GDI32的初始化是在USER32模板里进行的,先在USER32的DllMain函数里初始化,如下:#001 INT WINAPI#002 DllMa
2009-12-09 20:47:00 2003
原创 reactos操作系统实现(153)
现在开始仔细地分析GDI32.DLL的实现代码,看看这里的API函数是怎么样实现的,又做了些什么样的工作,然后才能深入地了解WIN32K.SYS所需要做的工作。在ReactOS操作系统里,所有DLL库都有一个默认的首先加载函数函数,名称叫做DllMain。这个函数是操作系统加载DLL时就调用,那么我们就从这个函数开始分析,这是DLL最先的入口点函数。它的实现代码如下:#001 BOOL
2009-12-08 22:01:00 1538
原创 reactos操作系统实现(152)
在GDI32.DLL动态连接库里,主要是包括图形调用和文本输出的API函数,这些函数都是一些中间函数,主要是封装了系统调用的代码,其实所有实现图形绘制和文本输出都是系统内核模块WIN32K.SYS实现的功能。所有应用程序要进行图形显示,或者文本显示时,就需要调用这个动态连接里的函数,连接时需要连接GDI32.LIB库。GDI32.DLL代码所在的目录如下:reactos/dll/win
2009-12-07 22:19:00 1458
原创 reactos操作系统实现(151)
图形模块包括用户模式gdi32和内核模式的win32k,gdi32的代码在目录reactos/dll/win32/gdi32里,win32k的代码在目录reactos/subsystems/win32/win32k里。所有客户端的应用程序都是调用gdi32库里的API函数,编译时也是连接这个库里的函数。由于gdi32的代码是在用户模式下的,那么它是怎么样去访问内核提供的功能呢?其实它在编译时,
2009-12-06 17:02:00 1591 2
原创 reactos操作系统实现(150)
在图形界面下,显示文字是最基本的功能了。下面就来从用户调用API函数TextOut开始,直到在内核里显示文字。如下面流程图所示:
2009-12-05 22:49:00 1488 1
原创 reactos操作系统实现(149)
IntVideoPortFindAdapter函数主要用来查找到相应显示卡,并且把显示卡驱动安装到对象管理器里,以便GUI界面调用时,可以找到相应驱动程序显示。具体实现代码如下:#001 NTSTATUS NTAPI#002 IntVideoPortFindAdapter(#003 IN PDRIVER_OBJECTDriverObject,#004 I
2009-12-02 23:11:00 1402
原创 reactos操作系统实现(148)
在小端口驱动程序里,主要调用视频驱动程序API来实现相关的功能,下面就来分析小端口驱动程序里调用的初始化函数VideoPortInitialize,它的实现代码在文件reactos/drivers/video/videoprt/videoprt.c里,如下:#001 ULONG NTAPI#002 VideoPortInitialize(#003 IN PVOID Co
2009-12-01 23:04:00 1833 2
python抓取天气并分析 实例源码
2017-08-28
书《深度学习》
2017-03-13
国产8051模拟器
2016-09-10
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
开源鸿蒙4.0不能进入桌面的补丁
2024-03-17
开源鸿蒙 4.0 RK3566开发板配置
2024-03-17
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
python web py入门配套源代码
2018-02-23
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人