6

基本上我运行一个计算机网络,需要知道各种计算机的驱动器设置为什么区域代码。我不需要更改区域,但我不知道如何在不单独访问每台计算机并粘贴在光盘中的情况下确定区域。我尝试使用 Apple 的可可 DVD 播放框架,但这需要将磁盘插入驱动器,这有点违背了目的。

那么是否有任何 API 可以用来确定 Mac Pro 的 DVD 驱动器上的区域代码,而无需插入光盘?我愿意用几乎任何语言编写代码。

谢谢

4

2 回答 2

3

我发现了一些能够在 OS X 上处理 DVD 区域设置的实用程序:DVD Info X 和 Region X。DVD Info X 将显示驱动器的区域代码,无需插入 DVD。

X 区更有趣,因为虽然它不直接服务于您的目的,但它的来源是可用的。看着它,我发现里面的ScanAll方法Region X.m就是你需要的。更具体地说,有趣的情况是找不到磁盘名称(因为没有安装磁盘)并且使用 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 上运行了这个,结果符合预期。

显然,您需要对其进行按摩,以便将该部分隔离为您可以使用的东西,但我认为这段代码将是一个有用的起点。

于 2011-12-09T19:11:46.220 回答
1

我没有这样的答案,但我有两个链接给你:

  1. 解释如何读取区域的代码(适用于 Windows,不适用于 Mac):http: //www.codeproject.com/KB/system/mydvdregion.aspx

由于这些是纯 SCSI 命令 - 它可能适用于 Mac。

  1. ftp://ftp.san.ru/unix/soft.cvs/wine.git/wine-git/dlls/ntdll/cdrom.c 那里有Mac支持 - 他们也在那里读取DVD区域。
于 2011-12-09T12:06:03.157 回答