首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自不同cd的不同可执行文件总是运行相同的代码。

来自不同cd的不同可执行文件总是运行相同的代码。
EN

Stack Overflow用户
提问于 2017-07-08 10:01:01
回答 1查看 65关注 0票数 1

我用一个名为"Data.exe“的c可执行文件烧录了25张光盘。所有CD具有相同的CD名称和相同的可执行名称,但可执行版本不同。下面是代码:

CD0

代码语言:javascript
复制
system("C:\\_folder\\_folder.exe 0");

CD1

代码语言:javascript
复制
system("C:\\_folder\\_folder.exe 1");

.....and等等.

CD24

代码语言:javascript
复制
system("C:\\_folder\\_folder.exe 24");

"C:\_folder\_folder.exe“代码是

代码语言:javascript
复制
printf(argv[1]);

只是为了检查cds是否被正确烧坏了。(所有这一切背后的核心思想是让cds识别自己,并将真正的逻辑转移到托管pc上,使cds可重用以满足我的需要。)

问题是,当我随机地将cd插入到pc中时,以前插入的cd的可执行文件通常会“卡住”并显示出来,而不是新的cd。

例如,如果插入CD16,则打印16,然后插入CD20,仍然从CD20可执行文件打印16,CD20可执行文件的最后编辑日期仍然是CD16的编辑日期。重新启动后,一切都会“重置”,插入的第一张cd就变成了新的“卡住”光盘。同样的问题也适用于所有其他cds。

这似乎是一项琐碎的任务,我肯定遗漏了一些东西。我的错误在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-10 11:40:03

Windows在访问CD单元之前对其进行媒体更改测试,以检查CD是否已从上次调用中更改。如果是这样的话,它会丢弃所有缓冲的缓存块,然后用CD中的新数据重新加载它。媒体更改功能的机制通常放在存储在格式化中的卷id标记上,为每个卷设置一个新的uuid。windows id所期望的卷不以ISO-9660格式显示,因此操作系统通常采用另一种方法来检测媒体是否已被更改。尝试更改卷标签,在每个CD磁盘上使用不同的卷标签,因此windows可能会使用它来检查卷是否已被更改(仅仅打开cd门是不够的,因为并非所有cd单元都有门打开的硬件检查)。

如果是这样的话,那么仅仅读取cd单元的卷标签就足以模拟每次输出不同状态或信息的程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44984901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档