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
编写安全的驱动程序之输入输出检查
在NtReadFile函数中,如果PreviousMode不是KernelMode,即NtReadFile函数是从用户态被调用的,可以使用ProbeForWrite函数检测输入输出缓冲区是否可写,参见
ReactOS
博文视点
·
2011-07-11 19:55
职场
休闲
驱动程序
0day
编写安全的驱动程序之输入输出检查
在NtReadFile函数中,如果PreviousMode不是KernelMode,即NtReadFile函数是从用户态被调用的,可以使用ProbeForWrite函数检测输入输出缓冲区是否可写,参见
ReactOS
broadview2006
·
2011-07-11 19:00
fs:[0]到底表示什么?fs段寄存器在WINDOWS系统中的作用
地址的所指向的一块数据区,它其实就是用来保存当前进程关键信息的进程控制块数据结构,在内核态环境下,它表示的是进行控制块KPCB结构体,在用户态环境下,它的表示形式是线程控制块的用户态形式TEB,为了容易阅读,这里使用了
REACTOS
charlesprince
·
2011-04-29 15:00
软件分析
读
ReactOS
的准备工作
ReactOS
是一个开源的类windows的操作系统,学习
ReactOS
是为了更好的了解windows操作系统。
bwmwm
·
2011-03-31 13:00
windows
工作
Build
工具
漫谈兼容内核之一:
ReactOS
怎样实现系统调用
漫谈兼容内核之一:
ReactOS
怎样实现系统调用 毛德操 有网友在论坛上发贴,要求我谈谈
ReactOS
是怎样实现系统调用的。
jhui163
·
2010-12-04 11:00
thread
数据结构
windows
exception
null
linux内核
Reading Book
book.51cto.com/art/200911/161900.htmhttp://book.51cto.com/art/200808/84050.htm《Windows内核情景分析——采用开源代码
ReactOS
jetyi
·
2010-04-10 16:18
生活
职场
book
休闲
reactos
操作系统实现(198)
为了测试2位颜色位图装载到设备是否出错,编写了下面这段测试代码,如下:#001 /*testwith2bitscolordepth,notlikelytosucceed*/#002 hbmp=CreateBitmap(16,16,1,2,bits);#003 ok(hbmp!=NULL,"CreateBitmapreturns%p/n",hbmp);#004 oldhbmp
caimouse
·
2010-02-23 20:00
api
测试
null
reactos
操作系统实现(198)
为了测试2位颜色位图装载到设备是否出错,编写了下面这段测试代码,如下: #001 /* test with 2 bits color depth, not likely to succeed */ #002 hbmp = CreateBitmap(16, 16, 1, 2, bits); #003 ok( hbmp != NULL, "CreateBitmap returns
javasee
·
2010-02-23 20:00
react
ReactOS
研究班
1、研究
ReactOS
的实现方法、设计和代码。
caimouse
·
2010-02-19 15:00
编程
windows
qq
api
测试
email
ReactOS
研究班
1、 研究
ReactOS
的实现方法、设计和代码。
javasee
·
2010-02-19 15:00
编程
windows
qq
软件测试
reactos
操作系统实现(197)
所有API都需要通过兼容性测试,才说明这个API没有问题,达到可以使用的程度。下面这段代码就是测试API的兼容性,当测试到GetPixel函数时,就发现有一个BUG,就是最后一行,当希望这个单色的图片返回0xFFFFFF值,但在ROS返回是0值。说明这个API函数在单色处理上存在问题,那么怎么样修改这个问题呢?#001 HDChdc,hdcmem;#002 DWORDbits[64
caimouse
·
2010-02-10 23:00
api
测试
null
reactos
操作系统实现(197)
所有API都需要通过兼容性测试,才说明这个API没有问题,达到可以使用的程度。下面这段代码就是测试API的兼容性,当测试到GetPixel函数时,就发现有一个BUG,就是最后一行,当希望这个单色的图片返回0xFFFFFF值,但在ROS返回是0值。说明这个API函数在单色处理上存在问题,那么怎么样修改这个问题呢? #001 HDC hdc, hdcmem; #002 DWORD bits[
javasee
·
2010-02-10 23:00
react
reactos
操作系统实现(196)
PALETTE_Init函数是用来创建系统调色板。具体实现如下: #001 HPALETTE FASTCALL PALETTE_Init(VOID) #002 { #003 int i; #004 HPALETTE hpalette; #005 PLOGPALETTE palPtr; #006 #ifndef NO_MAPPING #007 PALOBJ *palObj; #
javasee
·
2010-02-09 23:00
react
reactos
操作系统实现(196)
PALETTE_Init函数是用来创建系统调色板。具体实现如下:#001 HPALETTEFASTCALLPALETTE_Init(VOID)#002 {#003 inti;#004 HPALETTEhpalette;#005 PLOGPALETTEpalPtr;#006 #ifndefNO_MAPPING#007 PALOBJ*palObj;#008 #endif
caimouse
·
2010-02-09 23:00
ReactOS
实现的兼容NT内核分析--KfLowerIrql函数
本文代码来自
ReactOS
-0.3.6。当硬件中断完成后将要返回的时候,将要调用KfLowerIrql来使当前cpu的irql降低到中断发生前的irql,但是真的就是直接降低到原来优先级就完事了吗?
dog250
·
2010-02-09 22:00
null
each
X86
网络技术
reactos
操作系统实现(195)
系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张
javasee
·
2010-02-08 21:00
数据结构
C++
c
C#
reactos
操作系统实现(195)
系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张表格,这张表格就叫做调色板。图
caimouse
·
2010-02-08 21:00
reactos
操作系统实现(194)
GetPixel函数是从指定DC里获取指定位置的颜色值。 #001 COLORREF #002 WINAPI #003 GetPixel( HDC hDC, INT x, INT y ) #004 { 如果句柄不是DC,就返回非法的。 #005 if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC) return CLR_INV
javasee
·
2010-02-07 10:00
react
reactos
操作系统实现(194)
GetPixel函数是从指定DC里获取指定位置的颜色值。#001 COLORREF#002 WINAPI#003 GetPixel(HDChDC,INTx,INTy)#004 { 如果句柄不是DC,就返回非法的。#005 if(GDI_HANDLE_GET_TYPE(hDC)!=GDI_OBJECT_TYPE_DC)returnCLR_INVALID;#006 if(!GdiIsHandleV
caimouse
·
2010-02-07 10:00
object
reactos
操作系统实现(193)
SelectObject函数是将对象选定到指定的设备场境中。具体实现代码如下:#001 HGDIOBJ#002 WINAPI#003 SelectObject(HDChDC,#004 HGDIOBJhGdiObj)#005 {#006 PDC_ATTRpDc_Attr;#007 HGDIOBJhOldObj=NULL;#008 UINTuType;
caimouse
·
2010-02-06 20:00
object
function
reactos
操作系统实现(193)
SelectObject函数是将对象选定到指定的设备场境中。具体实现代码如下: #001 HGDIOBJ #002 WINAPI #003 SelectObject(HDC hDC, #004 HGDIOBJ hGdiObj) #005 { #006 PDC_ATTR pDc_Attr; #007 HGDIOBJ hOldObj = NULL; #008 UINT uType
javasee
·
2010-02-06 20:00
react
reactos
操作系统实现(192)
NtGdiCreateBitmap函数是创建一个位图句柄。#001 HBITMAPAPIENTRY#002 NtGdiCreateBitmap(#003 INTWidth,#004 INTHeight,#005 UINTPlanes,#006 UINTBitsPixel,#007 INOPTIONALLPBYTEpUnsafeBits)Width是位图宽度。
caimouse
·
2010-02-05 21:00
exception
测试
reactos
操作系统实现(192)
NtGdiCreateBitmap函数是创建一个位图句柄。 #001 HBITMAP APIENTRY #002 NtGdiCreateBitmap( #003 INT Width, #004 INT Height, #005 UINT Planes, #006 UINT BitsPixel, #007 IN OPTIONAL LPBYTE pUnsafeBits) Widt
javasee
·
2010-02-05 21:00
react
reactos
操作系统实现(191)
CreateBitmap函数是创建具有给定宽度、高度和颜色格式的、以颜色位值构成的数组为基础的位图。#001 HBITMAPWINAPI#002 CreateBitmap(INT Width,#003 INT Height,#004 UINT Planes,#005 UINT BitsPixel,#006
caimouse
·
2010-02-04 21:00
reactos
操作系统实现(191)
CreateBitmap函数是创建具有给定宽度、高度和颜色格式的、以颜色位值构成的数组为基础的位图。 #001 HBITMAP WINAPI #002 CreateBitmap(INT Width, #003 INT Height, #004 UINT Planes, #005 UINT BitsPixel, #006 PCVOID pUnsafeBits) #007 { #
javasee
·
2010-02-04 21:00
react
reactos
操作系统实现(190)
GetDC函数是通过窗口的句柄获取设备环境,这样就可以把获取到的设备环境使用到后面的GDI函数里,这样就可以在窗口的客户区中绘图了。当应用程序结束时,需要使用ReleaseDC来释放设备环境。如果是私有设备时,就可以不删除它。这个API实现函数如下:#001 EXTINLINEHDCWINAPI#002 GetDC(HWNDhWnd)#003 { 这里调用函数NtUserGetDC来实现相应的功能
caimouse
·
2010-02-02 22:00
cache
object
api
null
reactos
操作系统实现(190)
GetDC函数是通过窗口的句柄获取设备环境,这样就可以把获取到的设备环境使用到后面的GDI函数里,这样就可以在窗口的客户区中绘图了。当应用程序结束时,需要使用ReleaseDC来释放设备环境。如果是私有设备时,就可以不删除它。这个API实现函数如下: #001 EXTINLINE HDC WINAPI #002 GetDC(HWND hWnd) #003 { 这里调用函数NtUserG
javasee
·
2010-02-02 22:00
cache
reactos
操作系统实现(189)
DC(devicecontext)是一个图形对象、图形属性和影响图形输出的集合结构体。CreateDC函数用给定名称为指定的设备创建设备环境。CreateDC一般用于创建打印机的设备环境,也可以用来得到屏幕(硬件屏幕,而不是窗口的客户区)的设备环境。请小心使用这个函数,因为它允许应用程序在屏幕上任何位置绘图,而不仅仅是在窗口的边界内。请用GetDC或BeginPaint来获取屏幕窗口的设备环境。#
caimouse
·
2010-01-31 17:00
object
String
null
图形
output
reactos
操作系统实现(189)
DC(device context)是一个图形对象、图形属性和影响图形输出的集合结构体。CreateDC函数用给定名称为指定的设备创建设备环境。CreateDC一般用于创建打印机的设备环境,也可以用来得到屏幕(硬件屏幕,而不是窗口的客户区)的设备环境。请小心使用这个函数,因为它允许应用程序在屏幕上任何位置绘图,而不仅仅是在窗口的边界内。请用GetDC或BeginPaint来获取屏幕窗口的设备
javasee
·
2010-01-31 17:00
数据结构
reactos
操作系统实现(188)
在
Reactos
里是编写了很多API测试程序,也就是针对某一方面的API进行全面的测试。由于
Reactos
里是共享了很多WINE的API代码,所以它的API测试程序就叫做winetests工程。
caimouse
·
2010-01-30 23:00
api
SVN
测试
工具
任务
程序开发
reactos
操作系统实现(187)
随着全球化的发展,开发软件都是面向多语言的环境。目前大多数程序都是采用不同字体来显示不同语言的办法,那么有没有一种更好的办法,一种字体就可以解决全球语言的显示呢?答案肯定的,它就是采用逻辑字体MSShellDlg和MSShellDlg2。比如开发应用程序时,就看到在资源里可以设置MSShellDlg和MSShellDlg2作为字体,并且可以设置不同的语言标识号,这样一个应用程序里就可以包括N种语言
caimouse
·
2010-01-27 21:00
UI
android
shell
Google
null
语言
reactos
操作系统实现(186)
要调试内核代码是一件不容易的事情,一般是需要双机调试的方法,一台电脑作为目标机器来运行编译出来的操作系统,另一台电脑作为跟踪调试的机器,用来查看操作系统输出的调试信息、以及输入命令给操作系统。现在就来介绍基于虚拟机的方式来调试内核代码,最简单的方式就是使用串口通讯的方式,并且串口设置为零调制方式,也就是说只需要把数据线接收和发送交叉连接就可以了。假如在物理的电脑里有两个串口,分别命名为COM1和
caimouse
·
2010-01-24 14:00
reactos
操作系统实现(185)
在
ReactOS
系统里,当安装完成后,如果网络已经可能使用,就可以立即打开应用程序管理器,直接从网络上下载相应的应用程序,这样是很方便安装和管理软件,这些都是跟Linux操作系统学习过来的。
caimouse
·
2010-01-23 22:00
linux
网络
浏览器
reactos
操作系统实现(184)
GreExtTextOutW函数实现一串字符串输出到指定区域,当然是从字符串变成图片输出。这些都调用FreeType库来实现的,具体实现代码如下:#001 BOOL#002 APIENTRY#003 GreExtTextOutW(#004 INHDChDC,#005 ININTXStart,#006 ININTYStart,#007 INUINTfuOptions,
caimouse
·
2010-01-21 21:00
windows
String
null
Parameters
alignment
distance
ReactOS
正在重写,整合Wine
ReactOS
项目目标是开发出一个自由开源的操作系统,能与WindowsNT程序和驱动兼容。项目于1998年正式启动,然而11年来它始终未能达到令人满意的可用性水平。
hans汉斯
·
2010-01-21 10:00
reactos
操作系统实现(183)
UserDrawCaptionText函数实现窗口上标题的显示。实现的代码如下:#001 BOOL#002 UserDrawCaptionText(HDChDc,#003 constPUNICODE_STRINGText,#004 constLPRECTlpRc,#005 UINTuFlags)#006 {#007 HFONThOldFont=NULL,hFont=NULL
caimouse
·
2010-01-20 23:00
c
function
String
null
reactos
操作系统实现(182)
UserDrawCaption函数是用来实现窗口标题显示。具体代码如下:#001 BOOLUserDrawCaption(#002 PWINDOW_OBJECTpWnd,#003 HDChDc,#004 LPCRECTlpRc,#005 HFONThFont,#006 HICONhIcon,#007 constPUNICODE_STRINGstr,#008
caimouse
·
2010-01-18 21:00
reactos
操作系统实现(181)
NtUserDrawCaption是内核函数,主要用来实现显示窗口标题。#001 BOOL#002 APIENTRY#003 NtUserDrawCaption(HWNDhWnd,#004 HDChDC,#005 LPCRECTlpRc,#006 UINTuFlags)#007 { 这里主要调用函数NtUserDrawCaptionTemp来实现相应的功能。#008 re
caimouse
·
2010-01-17 21:00
FAQ4:Windows的执行程序是如何加载的?
答:1>深入研究CreateProcessAPI2>阅读3>阅读4>阅读
ReactOS
源码5>阅读Wine源码6>阅读已泄漏的NT4源码。
Code_GodFather
·
2010-01-16 22:00
windows
api
reactos
操作系统实现(180)
DefWndNCPaint函数实现窗口非客户区的显示部分,比如窗口的标题、最大化、最小化、关闭按钮、滚动条等等。#001 LRESULT#002 DefWndNCPaint(HWNDhWnd,HRGNhRgn,BOOLActive)#003 {#004 HDChDC;#005 DWORDStyle,ExStyle;#006 HWNDParent;#007 RECTClien
caimouse
·
2010-01-16 21:00
reactos
操作系统实现(179)
SetWindowText函数是实现设置窗口标题上显示的字符串。这个函数在内核里这样实现,代码如下:#001 BOOLWINAPI#002 SetWindowTextW(HWNDhWnd,#003 LPCWSTRlpString)#004 {#005 DWORDProcessId; 获取这个窗口相关的进程标识号。#006 if(!GetWindowTh
caimouse
·
2010-01-12 21:00
reactos
操作系统实现(178)
SendMessageW函数主要用来向窗口发送消息。下面就是它的实现代码:#001 LRESULTWINAPI#002 SendMessageW(HWNDWnd,#003 UINTMsg,#004 WPARAMwParam,#005 LPARAMlParam)#006 {#007 MSGUMMsg,KMMsg;#008 NTUSERSE
caimouse
·
2010-01-11 23:00
reactos
操作系统实现(177)
MessageBoxTimeoutIndirectW的实现代码如下:#001 staticint#002 MessageBoxTimeoutIndirectW(#003 CONSTMSGBOXPARAMSW*lpMsgBoxParams,UINTTimeout)#004 {#005 DLGTEMPLATE*tpl;#006 DLGITEMTEMPLATE*iico,*itxt;
caimouse
·
2010-01-09 21:00
reactos
操作系统实现(176)
MessageBox函数是一个非常简单提示性窗口函数,那么它是怎么实现显示窗口的呢?现在就来分析它的实现代码,如下:#001 int#002 WINAPI#003 MessageBoxW(#004 HWNDhWnd,#005 LPCWSTRlpText,#006 LPCWSTRlpCaption,#007 UINTuType)#008 { 在这里主要调用函数MessageBoxEx
caimouse
·
2010-01-08 22:00
reactos
操作系统实现(175)
GetDesktopWindow函数主要用来获取桌面窗口的句柄。下面就是这个函数的实现代码:#001 HWNDWINAPI#002 GetDesktopWindow(VOID)#003 {#004 PWINDOWWnd;#005 HWNDRet=NULL;#006 使用SEH机制来获取桌面窗口。#007 _SEH2_TRY#008 { 调函数GetThreadDes
caimouse
·
2010-01-07 21:00
exception
null
reactos
操作系统实现(172)
NtUserTranslateMessage函数实现键盘的消息转换,实现代码如下:#001 BOOLAPIENTRY#002 NtUserTranslateMessage(LPMSGlpMsg,#003 HKLdwhkl)#004 {#005 NTSTATUSStatus;#006 MSGSafeMsg;#007 DECLARE_RE
caimouse
·
2009-12-29 22:00
reactos
操作系统实现(171)
TranslateMessage函数用来把虚拟键消息转换为字符消息,其实现的代码如下:#001 BOOLWINAPI#002 TranslateMessage(CONSTMSG*lpMsg)#003 { 在这个函数里只是简单地调用函数TranslateMessageEx。#004 return(TranslateMessageEx((LPMSG)lpMsg,0));#005 } Transla
caimouse
·
2009-12-28 23:00
reactos
操作系统实现(170)
co_IntPeekMessage主要实现内核里获取窗口消息,具体实现代码如下:#001 BOOLFASTCALL#002 co_IntPeekMessage(PUSER_MESSAGEMsg,#003 HWNDhWnd,#004 UINTMsgFilterMin,#005 UINTMsgF
caimouse
·
2009-12-27 11:00
reactos
操作系统实现(169)
当用USER32.DLL里调用获取消息之后,就调用到WIN32K.SYS里处理的函数NtUserGetMessage,这个函数实现的代码如下:#001 BOOLAPIENTRY#002 NtUserGetMessage(PNTUSERGETMESSAGEINFOUnsafeInfo,#003 HWNDhWnd,#004 UINTM
caimouse
·
2009-12-25 23:00
reactos
操作系统实现(168)
当应用程序更新窗口后,就需要不断地接收系统发过来的消息,然后处理消息,最后发送消息出去,这样就构成了应用程序的消息循环处理。不断地获取系统消息的函数是GetMessage函数,下面就是它的实现代码:#001 BOOLWINAPI#002 GetMessageW(LPMSGlpMsg,#003 HWNDhWnd,#004 UINTwMsgFilterMin,#005
caimouse
·
2009-12-24 22:00
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他