免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3789 | 回复: 1
打印 上一主题 下一主题

[Windows 7] Windows核心编程中的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-03 15:47 |只看该作者 |倒序浏览
******************************************************************************************************************************************
13:4.1.8 进程的当前目录
    “如果进程的当前目录是。。。。。。它们只是读取这些变量。”
    根据这一段的意思,假设我有E:\\Test\\ReadMe.txt,
    首先,我添加环境变量E=E:\\Test,
    然后调用CreateFile打开E:\\ReaeMe.txt,那么系统首先查看环境变量发现E存在,那么就试图从E:\\Test下打开ReadMe.txt文件。如果不存在则从E:ReadMe.txt打开。(主要是这里)
    不知道这样的理解对吗?如果正确,那么添加环境变量后,应该是可以的,但是实际上却是不行的。难道是我哪里的理解有问题。
    还有就是,如果是E:\\Test\\ReadMe.txt,我现在要添加一个环境变量E,来标识E:\\Test\\ReadMe.txt,然后将环境变量E添加到当前进程的环境块中,这个怎么做呢?
   
14:GetEnvironmentVariable函数和SetEnvironmentVariable函数仅仅是针对当前进程有效吗?还有就是如何获取当前进程的环境块的所有信息?

15:4.2.1 pszApplicationName和pszCommandLine
     “在内部CreateProcess并不会修改我们虽传递的命令行字符串。不过,在CreateProcess返回之前,它将该字符串恢复为它的原始形式”这里的恢复到原始形式是个什么意思?

16:“这个问题很重要,如果命令行参数不包含在文件映像的只读部分中,就会发生违规访问,。。”   是什么意思?

17:4.3.2 ExitProcess函数
    该部分的那段代码,执行结果有问题,无论如何全局对象都是看不到被析构的(Why??)。


******************************************************************************************************************************************
19:第6章 线程的基础知识 6.4.2 cbStackSize
     “/STACK:[reserve][.commit]
     reserve参数用于设定系统应该... ... 当线程的堆栈溢出它的堆栈时,就会产生一个异常条件。系统抓取该异常条件,并且将另一页用于保留空间,这使得线程的堆栈大小能根据需要动态的扩大。”
    该段是什么意思?我的理解是:reserve(或者cbStackSize)用于设定线程堆栈大小的上限值(默认为1MB),在线程创建后,系统会默认的分配给线程一定的堆栈空间的大小n,这个n往往是小于1MB的,当线程使用的堆栈空间超出n时,系统自动的为该线程扩展一点空间,扩展的这点空间就是一页(或者是commit设定的值,如果是2那么就增加2页)的大小,扩展后的堆栈大小是n+1页。(不知这样的理解是否正确?)

21:6.6 线程的一些性质
    “另外,由于使用BaseThreadStart,线程函数可以在它完成处理后返回。当BaseStartThread... ... ... ... 并且BaseThreadStart将试图返回到某个随机内存位置。”
    该段要描述什么意思?实在不太明白,个人理解就是:因为在BaseThreadStart中调用我们的线程函数,因此我们的线程函数自然能够完成返回,而BaseThreadStart函数本身调用了ExitThread因此就不会返回。而这段描述想要描述什么意思?

22:6.7 C/C++运行期库的考虑
    “那么系统是否知道在创建线程时分配该数据块呢?回答是不知道。... ... ... 若要创建一个线程,绝对不要调用操作系统的CreateThread函数,必须调用C/C++运行期库函数_beginthreadex..”    为什么作者在这里提到在程序中,要调用C/C++库中的函数_beginthreadex而不使用CreateThread呢?难道就是为了降低程序对系统函数接口的依赖?而且查看C源代码发现实际上_beginthreadex也是调用CreateThread的。


******************************************************************************************************************************************
23:第7章 7.1 暂停和恢复线程
    “一旦改变了线程的环境,必须使线程成为可调度的线程”为什么?不成为调度又会怎么样?

000:其他 关于实时操作系统、分时操作系统、抢占式多任务操作系统的具体区别 ,主要是实时和抢占式多任务的,最好举个例子。

001:设置线程的优先级是为了调度,因为系统调度原子就是线程,那么设置进程的优先级的意义是什么呢?

论坛徽章:
0
2 [报告]
发表于 2014-06-03 18:41 |只看该作者
没有大神在这方面有研究吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP