我在OS X上发现了一些可以处理DVD区域设置的实用工具:
DVD Info X和Region X。DVD Info X可以显示驱动器的区域代码,而无需插入DVD。
Region X更有趣,因为虽然它不能直接服务于您的目的,但
其源代码是可用的。查看后,我发现
Region X.m
中的
ScanAll
方法就是您需要的。更具体地说,有趣的情况是找不到磁盘名称(因为没有安装磁盘),并且使用SCSI命令来查找DVD驱动器的属性(
printf
调用是我的添加)。
task = (*scsitaskinterface)->CreateSCSITask(scsitaskinterface);
if (task)
{
cdb[0] = 0xa4;
cdb[1] = 0x00;
cdb[2] = 0x00;
cdb[3] = 0x00;
cdb[4] = 0x00;
cdb[5] = 0x00;
cdb[6] = 0x00;
cdb[7] = 0x00;
cdb[8] = (sizeof(DVDInfo) >> 8) & 0xff;
cdb[9] = sizeof(DVDInfo) & 0xff;
cdb[10] = 0x08;
cdb[11] = 0x00;
memset(&DVDInfo, 0, sizeof(DVDInfo));
ProcessCDB(task, cdb, 12, DirIn, &DVDInfo, sizeof(DVDInfo), 30000);
printf("drive region %#hhx\n", DVDInfo.driveRegion);
printf("number of region changes left: %hhu\n", DVDInfo.numberUserResets);
if (DVDInfo.rpcScheme == 0) RPC1++;
if (DVDInfo.rpcScheme != 0) RPC2++;
(*task)->Release(task);
}
我在我的Macbook Pro上运行了这个代码,结果如预期。
显然你需要修改它,将其中的部分独立出来以便你可以使用,但我认为这段代码将是一个有用的起点。