DVD区域编码是一种用于控制DVD播放器和光盘之间兼容性的机制。这种编码既存在于DVD播放器的硬件中,也存储在DVD光盘的IFO文件中。区域编码限制了特定DVD播放器能够播放的光盘区域。例如,如果一个DVD播放器被设置为区域1(美国和加拿大),那么它将无法播放区域2(欧洲)的光盘。
要绕过这种限制,一种方法是更新播放器的固件并移除DVD区域支持。但需要注意的是,DVD播放器中的区域编码一旦设置,通常无法通过重新安装操作系统或将播放器移动到另一台电脑来重置。
DVD区域编码定义了全球不同地区的DVD播放器和光盘之间的兼容性。以下是DVD区域编码的分布:
为了从DVD驱动器读取信息,需要向硬件(DVD播放器)发送SCSI命令。为了简化操作,本文的代码示例不使用ASPI,而是使用微软的SPTI(SCSI Pass Through Interface)与硬件通信。发送到硬件的SCSI命令是标准的,可以在互联网上找到相关信息。
使用SPTI接口发送SCSI/CDB(命令描述块)到设备非常简单,只需要设置正确的块并发送它。以下是发送SCSI命令的步骤:
根据参考资料,需要向DVD发送SCSI操作码SCSIOP_REPORT_KEY(0xA4)以及一些特定参数。REPORT_KEY可以用来做很多事情,但只需要读取DVD区域信息。为此,需要填充CDB_REPORT_KEY结构体:
report.OperationCode = SCSIOP_REPORT_KEY;
report.AllocationLength = sizeof(REPORT_KEY_DATA_RPC_STATE);
report.AGID = 0;
report.KeyFormat = KEY_FORMAT_RPC_STATE;
命令发出后,REPORT_KEY_DATA_RPC_STATE结构体将被填充区域信息。
区域信息包括: