reactos操作系统实现(157)

前端之家收集整理的这篇文章主要介绍了reactos操作系统实现(157)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上面介绍了@H_404_4@USER32@H_404_4@的入口函数,在那里调用@H_404_4@Init@H_404_4@函数进行初始化,这里就来分析这个函数代码,看看它怎么样进行初始化,如下:@H_404_4@@H_404_4@

#001 @H_404_4@BOOL@H_404_4@

#002 @H_404_4@Init(VOID)@H_404_4@

#003 @H_404_4@{@H_404_4@

@H_404_4@

这里设置内核的回调函数。@H_404_4@@H_404_4@

#004 @H_404_4@/* Set up the kernel callbacks. */@H_404_4@

#005 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_WINDOWPROC] =@H_404_4@

#006 @H_404_4@(PVOID)User32CallWindowProcFromKernel;@H_404_4@

#007 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_SENDASYNCPROC] =@H_404_4@

#008 @H_404_4@(PVOID)User32CallSendAsyncProcForKernel;@H_404_4@

#009 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_LOADSYSMENUTEMPLATE] =@H_404_4@

#010 @H_404_4@(PVOID)User32LoadSysMenuTemplateForKernel;@H_404_4@

#011 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_LOADDEFAULTCURSORS] =@H_404_4@

#012 @H_404_4@(PVOID)User32SetupDefaultCursors;@H_404_4@

#013 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_HOOKPROC] =@H_404_4@

#014 @H_404_4@(PVOID)User32CallHookProcFromKernel;@H_404_4@

#015 @H_404_4@NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_EVENTPROC] =@H_404_4@

#016 @H_404_4@(PVOID)User32CallEventProcFromKernel;@H_404_4@

#017 @H_404_4@@H_404_4@

@H_404_4@

获取当前进程,并设置进程信息,然后返回当前进程的信息。@H_404_4@@H_404_4@

#018 @H_404_4@g_pi = GetW32ProcessInfo();@H_404_4@

@H_404_4@

共享用户进程信息给内核使用。@H_404_4@@H_404_4@

#019 @H_404_4@g_kpi = SharedPtrToKernel(g_pi);@H_404_4@

#020 @H_404_4@g_psi = SharedPtrToUser(g_pi->psi);@H_404_4@

#021 @H_404_4@gHandleTable = SharedPtrToUser(g_pi->UserHandleTable);@H_404_4@

#022 @H_404_4@gHandleEntries = SharedPtrToUser(gHandleTable->handles);@H_404_4@

#023 @H_404_4@@H_404_4@

@H_404_4@

分配用户线程相关的数据空间。@H_404_4@@H_404_4@

#024 @H_404_4@/* Allocate an index for user32 thread local data. */@H_404_4@

#025 @H_404_4@User32TlsIndex = TlsAlloc();@H_404_4@

#026 @H_404_4@if (User32TlsIndex != TLS_OUT_OF_INDEXES)@H_404_4@

#027 @H_404_4@{@H_404_4@

@H_404_4@

初始化消息使用临界区。@H_404_4@@H_404_4@

#028 @H_404_4@if (MessageInit())@H_404_4@

#029 @H_404_4@{@H_404_4@

@H_404_4@

初始化每个应用程序的系统菜单。@H_404_4@@H_404_4@

#030 @H_404_4@if (MenuInit())@H_404_4@

#031 @H_404_4@{@H_404_4@

#032 @H_404_4@InitializeCriticalSection(&U32AccelCacheLock);@H_404_4@

@H_404_4@

初始化@H_404_4@GDI32@H_404_4@图形库。@H_404_4@@H_404_4@

#033 @H_404_4@GdiDllInitialize(NULL,DLL_PROCESS_ATTACH,NULL);@H_404_4@

#034 @H_404_4@InitStockObjects();@H_404_4@

@H_404_4@

加载应用程序所有要加载的动态连接库。@H_404_4@@H_404_4@

#035 @H_404_4@LoadAppInitDlls();@H_404_4@

#036 @H_404_4@@H_404_4@

#037 @H_404_4@return TRUE;@H_404_4@

#038 @H_404_4@}@H_404_4@

@H_404_4@

清空消息的临界区。@H_404_4@@H_404_4@

#039 @H_404_4@MessageCleanup();@H_404_4@

#040 @H_404_4@}@H_404_4@

@H_404_4@

删除本线程使用的空间。@H_404_4@@H_404_4@

#041 @H_404_4@TlsFree(User32TlsIndex);@H_404_4@

#042 @H_404_4@}@H_404_4@

#043 @H_404_4@@H_404_4@

#044 @H_404_4@return FALSE;@H_404_4@

#045}@H_404_4@

原文链接:https://www.f2er.com/react/308365.html

猜你在找的React相关文章