E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
ReactOS
reactos
操作系统实现(145)
前面的函数已经介绍怎么样显示一个字符串了,那么下面就来仔细地实查看怎么样实现一个字符的显示,当然这里字符的显示,只是字母的显示,没有中文显示,如果需要实现中文字符的显示,就需要修改这个函数和相应的排版函数、读取相应的字体文件。由于显示卡已经被初始化为图形模式,那么所有字符的显示都生成图形方式来显示,文字也不例外,因此需要使用字体的点阵数据。具体实现代码如下: #001 V
·
2015-11-13 18:54
react
reactos
操作系统实现(144)
当操作系统引导过程中,需要输出一些信息给用户来查看,那么就需要这个简单的VGA驱动程序,可以输出字符串显示,实现这个功能的函数就是VidDisplayString函数,具体实现的代码如下: #001 VOID #002 NTAPI #003 VidDisplayString(PUCHAR String) #004 { #005&
·
2015-11-13 18:53
react
reactos
操作系统实现(143)
VgaIsPresent函数通过读取图形模式的索引寄存器和数据寄存器来检查VGA显示卡是否安装,实现代码如下: #001 BOOLEAN #002 NTAPI #003 VgaIsPresent(VOID) #004 { #005 UCHAR VgaReg, VgaRe
·
2015-11-13 18:52
react
reactos
操作系统实现(142)
VidInitialize函数主要进行VGA简单视频显示模式初始化。具体实现代码如下: #001 BOOLEAN #002 NTAPI #003 VidInitialize(IN BOOLEAN SetMode) #004 { #005 ULONG Context =
·
2015-11-13 18:51
react
reactos
操作系统实现(141)
在操作系统启动的早期阶段,由于很多基本的功能没有初始化(比如IO管理器都没有初始化),因此完整和功能强大的显示驱动程序是不可能运行的,那么就需要在这个阶段写一个比较简单的VGA显示驱动程序给内核引导时使用,这个驱动程序就是bootvid.dll。 先来分析在内核里调用初始化的位置,具体如下: #001 VOID #002 NTAPI #0
·
2015-11-13 18:51
react
reactos
操作系统实现(140)
在创建文件成功后,然后就往文件里写入数据,而写入数据说明就需要文件系统给文件分配储存空间,以便保存这些数据到磁盘里,下面就来分析分配文件大小的函数,如下: #001 NTSTATUS #002 VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject, #003 &
·
2015-11-13 18:50
react
reactos
操作系统实现(139)
当用户删除文件时,就会通过
ReactOS
的API调用IO管理器函数,然后创建IRP包发送到文件系统驱动程序来,然后就调用下面函数来把文件分配的簇从FAT分配表时删除。
·
2015-11-13 18:48
react
reactos
操作系统实现(138)
在FAT里,需要从目录入口项里找到文件的首簇数,下面这段代码就是实现这样的功能,如下: #001 ULONG #002 vfatDirEntryGetFirstCluster (PDEVICE_EXTENSION pDeviceExt, #003 &
·
2015-11-13 18:47
react
reactos
操作系统实现(137)
VfatHasFileSystem函数主要用来读取FAT文件系统信息,并且判断这个磁盘卷是否为FAT文件系统,具体实现如下: #001 static NTSTATUS #002 VfatHasFileSystem(PDEVICE_OBJECT DeviceToMount, #003 &n
·
2015-11-13 18:46
react
reactos
操作系统实现(136)
VfatMount函数主要用来安装FAT文件卷,具体实现代码如下: #001 static NTSTATUS #002 VfatMount (PVFAT_IRP_CONTEXT IrpContext) #003 /* #004 * FUNCTION: Mount the filesystem #005 &n
·
2015-11-13 18:45
react
reactos
操作系统实现(135)
当从IO管理器里调用函数IopParseDevice来分析设备时,就可以找到相应的磁盘设备,并在这个函数里调用函数IopCheckVpbMounted来检查这个文件系统是否加载,如果没有加载,就会调用函数IopMountVolume来加载文件卷,那么在这个函数里就会构造一个IRP发送给文件系统驱动程序,驱动程序就收到主功能码为IRP_MJ_FILE_SYSTEM_CONTROL和次功能
·
2015-11-13 18:42
react
reactos
操作系统实现(134)
文件控制块主要用来表示一个
ReactOS
打开文件的对象。
·
2015-11-13 18:41
react
reactos
操作系统实现(133)
VfatReadDiskPartial函数主要用来构造一个IRP给底层驱动程序去读取数据返回。具体实现代码如下: #001 NTSTATUS #002 VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, #003 &
·
2015-11-13 18:40
react
reactos
操作系统实现(184)
GreExtTextOutW函数实现一串字符串输出到指定区域,当然是从字符串变成图片输出。这些都调用FreeType库来实现的,具体实现代码如下: #001 BOOL #002 APIENTRY #003 GreExtTextOutW( #004 IN HDC hDC, #005&nbs
·
2015-11-13 18:26
react
reactos
操作系统实现(183)
UserDrawCaptionText函数实现窗口上标题的显示。实现的代码如下: #001 BOOL #002 UserDrawCaptionText(HDC hDc, #003 const PUNICODE_STRING Text, #004 const LPRE
·
2015-11-13 18:23
react
reactos
操作系统实现(182)
UserDrawCaption函数是用来实现窗口标题显示。具体代码如下: #001 BOOL UserDrawCaption( #002 PWINDOW_OBJECT pWnd, #003 HDC hDc, #004 LPCREC
·
2015-11-13 18:23
react
reactos
操作系统实现(181)
NtUserDrawCaption是内核函数,主要用来实现显示窗口标题。 #001 BOOL #002 APIENTRY #003 NtUserDrawCaption(HWND hWnd, #004 HDC hDC, #005 LPCRECT lpRc
·
2015-11-13 18:22
react
reactos
操作系统实现(180)
DefWndNCPaint函数实现窗口非客户区的显示部分,比如窗口的标题、最大化、最小化、关闭按钮、滚动条等等。 #001 LRESULT #002 DefWndNCPaint(HWND hWnd, HRGN hRgn, BOOL Active) #003 { #004 HDC hDC; #005&
·
2015-11-13 18:21
react
reactos
操作系统实现(179)
SetWindowText函数是实现设置窗口标题上显示的字符串。这个函数在内核里这样实现,代码如下: #001 BOOL WINAPI #002 SetWindowTextW(HWND hWnd, #003 &
·
2015-11-13 18:18
react
reactos
操作系统实现(178)
SendMessageW函数主要用来向窗口发送消息。下面就是它的实现代码: #001 LRESULT WINAPI #002 SendMessageW(HWND Wnd, #003 UINT Msg, #004 &n
·
2015-11-13 18:16
react
reactos
操作系统实现(177)
MessageBoxTimeoutIndirectW的实现代码如下: #001 static int #002 MessageBoxTimeoutIndirectW( #003 CONST MSGBOXPARAMSW *lpMsgBoxParams, UINT Timeout) #004 { #005 
·
2015-11-13 18:16
react
reactos
操作系统实现(176)
MessageBox函数是一个非常简单提示性窗口函数,那么它是怎么实现显示窗口的呢?现在就来分析它的实现代码,如下: #001 int #002 WINAPI #003 MessageBoxW( #004 HWND hWnd, #005 LPCWSTR lpText, #0
·
2015-11-13 18:15
react
reactos
操作系统实现(175)
GetDesktopWindow函数主要用来获取桌面窗口的句柄。下面就是这个函数的实现代码: #001 HWND WINAPI #002 GetDesktopWindow(VOID) #003 { #004 PWINDOW Wnd; #005  
·
2015-11-13 18:12
react
reactos
操作系统实现(172)
NtUserTranslateMessage函数实现键盘的消息转换,实现代码如下: #001 BOOL APIENTRY #002 NtUserTranslateMessage(LPMSG lpMsg, #003 &nbs
·
2015-11-13 18:08
react
reactos
操作系统实现(171)
TranslateMessage函数用来把虚拟键消息转换为字符消息,其实现的代码如下: #001 BOOL WINAPI #002 TranslateMessage(CONST MSG *lpMsg) #003 { 在这个函数里只是简单地调用函数TranslateMessageEx。 #004
·
2015-11-13 18:06
react
reactos
操作系统实现(170)
co_IntPeekMessage主要实现内核里获取窗口消息,具体实现代码如下: #001 BOOL FASTCALL #002 co_IntPeekMessage(PUSER_MESSAGE Msg, #003 &nb
·
2015-11-13 18:06
react
reactos
操作系统实现(169)
当用USER32.DLL里调用获取消息之后,就调用到WIN32K.SYS里处理的函数NtUserGetMessage,这个函数实现的代码如下: #001 BOOL APIENTRY #002 NtUserGetMessage(PNTUSERGETMESSAGEINFO UnsafeInfo, #003 &
·
2015-11-13 18:05
react
reactos
操作系统实现(168)
当应用程序更新窗口后,就需要不断地接收系统发过来的消息,然后处理消息,最后发送消息出去,这样就构成了应用程序的消息循环处理。不断地获取系统消息的函数是GetMessage函数,下面就是它的实现代码: #001 BOOL WINAPI #002 GetMessageW(LPMSG lpMsg, #003
·
2015-11-13 18:04
react
reactos
操作系统实现(167)
co_UserRedrawWindow函数是用来实现窗口重画的功能,实现代码如下: #001 BOOL FASTCALL #002 co_UserRedrawWindow(PWINDOW_OBJECT Window, const RECT* UpdateRect, HRGN UpdateRgn, #003  
·
2015-11-13 18:03
react
reactos
操作系统实现(166)
NtUserRedrawWindow函数主要用来重画窗口显示。具体代码如下: #001 BOOL APIENTRY #002 NtUserRedrawWindow(HWND hWnd, CONST RECT *lprcUpdate, HRGN hrgnUpdate, #003 &n
·
2015-11-13 18:03
react
reactos
操作系统实现(165)
在应用程序里,当窗口显示出来之后,需要立即调用一个函数UpdateWindow来更新窗口,否则窗口里面的内容就不会更新,显示还是前面其它窗口显示的内容。现在就来分析这个函数又是怎么样实现的,代码如下: #001 BOOL #002 WINAPI #003 UpdateWindow( #004 HWND hWnd)
·
2015-11-13 18:02
react
reactos
操作系统实现(163)
在应用程序里,当创建窗口之后,就需要把窗口显示出来,那么就需要调用函数ShowWindow,具体这个函数是怎么实现的呢?现在就来分析它的实现代码,如下: #001 EXTINLINE BOOL WINAPI #002 ShowWindow(HWND hWnd, int nCmdShow) #003 { &nb
·
2015-11-13 18:00
react
reactos
操作系统实现(164)
继续前面的分析,上次说到需要调用函数co_WinPosShowWindow来显示窗口,那么这个函数里怎么样实现窗口的显示呢?实现代码如下: #001 BOOLEAN FASTCALL #002 co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd) #003 { #004 &nb
·
2015-11-13 18:00
react
reactos
操作系统实现(162)
co_IntCreateWindowEx函数主要用创建一个显示的窗口,具体实现代码如下: #001 HWND APIENTRY #002 co_IntCreateWindowEx(DWORD dwExStyle, #003  
·
2015-11-13 18:59
react
reactos
操作系统实现(161)
NtUserCreateWindowEx函数主要用来创建一个窗口显示。在Win32k.sys里的代码如下: #001 HWND APIENTRY #002 NtUserCreateWindowEx(DWORD dwExStyle, #003 &n
·
2015-11-13 18:58
react
reactos
操作系统实现(198)
为了测试2位颜色位图装载到设备是否出错,编写了下面这段测试代码,如下: #001 /* test with 2 bits color depth, not likely to succeed */ #002 hbmp = CreateBitmap(16, 16, 1, 2, bits); #003 &nb
·
2015-11-13 18:12
react
ReactOS
研究班
1、 研究
ReactOS
的实现方法、设计和代码。
·
2015-11-13 18:07
react
reactos
操作系统实现(197)
所有API都需要通过兼容性测试,才说明这个API没有问题,达到可以使用的程度。下面这段代码就是测试API的兼容性,当测试到GetPixel函数时,就发现有一个BUG,就是最后一行,当希望这个单色的图片返回0xFFFFFF值,但在ROS返回是0值。说明这个API函数在单色处理上存在问题,那么怎么样修改这个问题呢? #001 HDC
·
2015-11-13 18:05
react
reactos
操作系统实现(196)
PALETTE_Init函数是用来创建系统调色板。具体实现如下: #001 HPALETTE FASTCALL PALETTE_Init(VOID) #002 { #003 int i; #004 HPALETTE hpalette; #0
·
2015-11-13 18:04
react
reactos
操作系统实现(195)
系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张
·
2015-11-13 18:04
react
reactos
操作系统实现(194)
GetPixel函数是从指定DC里获取指定位置的颜色值。 #001 COLORREF #002 WINAPI #003 GetPixel( HDC hDC, INT x, INT y ) #004 { 如果句柄不是DC,就返回非法的。 #005 if (GDI_HANDLE_GET_TYPE(
·
2015-11-13 18:03
react
reactos
操作系统实现(193)
SelectObject函数是将对象选定到指定的设备场境中。具体实现代码如下: #001 HGDIOBJ #002 WINAPI #003 SelectObject(HDC hDC, #004 &
·
2015-11-13 18:02
react
reactos
操作系统实现(192)
NtGdiCreateBitmap函数是创建一个位图句柄。 #001 HBITMAP APIENTRY #002 NtGdiCreateBitmap( #003 INT Width, #004 INT Height, #005 &
·
2015-11-13 18:02
react
reactos
操作系统实现(191)
CreateBitmap函数是创建具有给定宽度、高度和颜色格式的、以颜色位值构成的数组为基础的位图。 #001 HBITMAP WINAPI #002 CreateBitmap(INT Width, #003
·
2015-11-13 18:00
react
reactos
操作系统实现(190)
GetDC函数是通过窗口的句柄获取设备环境,这样就可以把获取到的设备环境使用到后面的GDI函数里,这样就可以在窗口的客户区中绘图了。当应用程序结束时,需要使用ReleaseDC来释放设备环境。如果是私有设备时,就可以不删除它。这个API实现函数如下: #001 EXTINLINE HDC WINAPI #002 GetDC(HWND hWnd) #003
·
2015-11-13 18:59
react
reactos
操作系统实现(189)
DC(device context)是一个图形对象、图形属性和影响图形输出的集合结构体。CreateDC函数用给定名称为指定的设备创建设备环境。CreateDC一般用于创建打印机的设备环境,也可以用来得到屏幕(硬件屏幕,而不是窗口的客户区)的设备环境。请小心使用这个函数,因为它允许应用程序在屏幕上任何位置绘图,而不仅仅是在窗口的边界内。请用GetDC或BeginPaint来获取屏幕窗口的设备
·
2015-11-13 18:58
react
reactos
操作系统实现(188)
在
Reactos
里是编写了很多API测试程序,也就是针对某一方面的API进行全面的测试。由于
Reactos
里是共享了很多WINE的API代码,所以它的API测试程序就叫做winetests工程。
·
2015-11-13 18:57
react
reactos
操作系统实现(186)
要调试内核代码是一件不容易的事情,一般是需要双机调试的方法,一台电脑作为目标机器来运行编译出来的操作系统,另一台电脑作为跟踪调试的机器,用来查看操作系统输出的调试信息、以及输入命令给操作系统。现在就来介绍基于虚拟机的方式来调试内核代码,最简单的方式就是使用串口通讯的方式,并且串口设置为零调制方式,也就是说只需要把数据线接收和发送交叉连接就可以了。假如在物理的电脑里有两个串口,分别命
·
2015-11-13 18:56
react
reactos
操作系统实现(187)
随着全球化的发展,开发软件都是面向多语言的环境。目前大多数程序都是采用不同字体来显示不同语言的办法,那么有没有一种更好的办法,一种字体就可以解决全球语言的显示呢?答案肯定的,它就是采用逻辑字体MS Shell Dlg和MS Shell Dlg2。比如开发应用程序时,就看到在资源里可以设置MS Shell Dlg和MS Shell Dlg2作为字体,并且可以设置不同的语言标识号,这样一个应用程
·
2015-11-13 18:56
react
感受200万行源程序
感受200万行源程序 昨天有朋友提起
reactos
,问我怎么样调试它,幸好我还能记得起,也许是因为我对它的理解得太深了,到现在还没有忘记。
·
2015-11-13 15:50
程序
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他