入坑Galgame到底有多难?
的有关信息介绍如下:
是的,很难
首先,玩Galgame的前提是下载Galgame
那么,以HTTP协议的下载站为例,你需要做以下事情:
向NS服务器发送请求。等待返回。根据返回值取得文件服务器网络地址。
向文件服务器发起请求。等待返回。根据返回值解析文件信息。
在本地创建文件对象,并设置文件大小。
创建线程。
对于每个线程:向文件服务器发起带RANGE字段的请求,获得文件的一部分;等待返回;等待文件上锁,将内容保存到文件,解锁。
关闭线程。
到这里,我们才算是真正地完成了开始玩Galgame前的准备工作。
然后,我们调用CreateProcessW函数启动这个程序。
CreateProcess解析了一部分参数后,通过SystemSearchFile寻找到程序文件,并配置相关环境。NtOpenFile获取文件句柄,NtCreateSection将文件载入内存,再作为解析可执行文件头部,以获得堆栈大小、程序入口等一系列信息。一系列检查通过后,调用NtCreateProcess启动程序,并执行NtResumeThread使它开始运行。
NtCreateProcess又会调用PspCreateProcess。PspCreate创建内核进程对象,创建程序运行需要的地址空间、运行环境等,并初始化。
在程序开始执行后,会通过CreateWindow创建一个窗口。从资源文件中加载图片、文字、音频等资源,并通过相关API显示程序界面。
如果你这时候移动一下鼠标,鼠标会产生一个interrupt。系统接受并处理这个irp,并向当前窗口发送一个WM_MOUSEMOVE消息。
最后,当你把鼠标放置在“开始游戏”的按钮上时,请用力点击鼠标左键。
在解析到鼠标点击操作时,程序正式跳转向第一段剧情
到这里,我们终于成功地“入坑”了游戏
可喜可贺,可喜可贺。



