Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得CD或DVD上扇区的准确位置和角度(数据位置测量)?_C#_C++_Disk_Copy Protection - Fatal编程技术网

C# 如何获得CD或DVD上扇区的准确位置和角度(数据位置测量)?

C# 如何获得CD或DVD上扇区的准确位置和角度(数据位置测量)?,c#,c++,disk,copy-protection,C#,C++,Disk,Copy Protection,我正在开发一种拷贝保护。它必须能够使用某些功能识别光盘,如扇区角度或扇区的精确物理位置(数据位置测量)。 所以问题是我可以使用哪些特性来实现这一点,以及如何获得关于它们的一些信息,特别是扇区的角度 正如您所知,主要的一点是,每次复制磁盘时,这些功能都必须更改 首选语言为C++和C语言。 谢谢。基本上你不能 扇区角度和读取半径是普通光盘驱动器不公开的信息,您需要修改驱动器固件才能将此信息发送到主机 还有更多:取决于环境条件,驱动器的这些参数视图可能会发生很大的变化,生产公差(大多数中心孔不完全位于

我正在开发一种拷贝保护。它必须能够使用某些功能识别光盘,如扇区角度或扇区的精确物理位置(数据位置测量)。 所以问题是我可以使用哪些特性来实现这一点,以及如何获得关于它们的一些信息,特别是扇区的角度

正如您所知,主要的一点是,每次复制磁盘时,这些功能都必须更改

首选语言为C++和C语言。 谢谢。

基本上你不能

扇区角度和读取半径是普通光盘驱动器不公开的信息,您需要修改驱动器固件才能将此信息发送到主机

还有更多:取决于环境条件,驱动器的这些参数视图可能会发生很大的变化,生产公差(大多数中心孔不完全位于磁盘中心)将使使用此信息变得非常困难,因为它会在同一磁盘的不同样本之间发生变化

最重要的是:这不会创建任何复制保护-如果您可以验证此信息,其他人也可以验证此信息,允许他使用此信息创建足够的副本


基本规则是:您可以从磁盘提取以验证其真实性的任何信息也可以提取以复制它-这就是为什么复制保护方案在锁定硬件(如游戏机)中效果最好的原因,在锁定硬件中,驱动器固件确实适合它。

精确的措施不起作用,但这不是指纹识别的必要条件。您可以测量任何一对扇区之间的寻道时间

我故意说“指纹”。您首先需要测量您的预期市场的设备间差异(可能是PC,而不是XBox,对吗?所以这是相当多的差异)。然后,您需要调查相关性-两轨和三轨寻道时间之间的关系是什么


最后,您需要提出一个适当的公差。磁盘上的污迹将导致寻道错误

每个磁盘副本的寻道时间是否不同?如果是,请解释如何测量寻道时间?Thanks@user3408433当前位置如果你需要问这样的基本问题,那你就没有资格了。把这个问题留给更有经验的人解决。(同样,这些问题在这里是离题的)Eugen请看,Eugen请看。在本页中,作者展示了SFCopy应用程序的用法。这可能是一个非法的应用程序,但我的意思是,使用普通光驱可以从CD或DVD中获取此类信息。问题是我不知道它是如何工作的。当我分析sfcopy时,我发现它使用IOCTL代码0x0004D004调用DeviceIoControl,但我在MSDN中没有找到此代码。如果你能下载并在CD上测试它。感谢这里提到的角度只是从获得数据和旋转速度所需的时间内进行插值-这两个数据都可以从驱动器轻松访问。如果你愿意,可以叫他们“虚拟天使”。您可能已经注意到,您的帖子指出了一个成功的规避,因此基本规则“如果您可以播放它,您可以复制它”仍然有效。我认为IOCTL 0x0004D004是SCSI passthrough,这是有意义的。