macos - 在 C 语言中确定 OS X 中 DVD 驱动器的区域代码而不要求 DVD 位于驱动器中

标签 macos dvd

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

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

谢谢

最佳答案

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

区域 X 更有趣,因为尽管它不直接用于您的目的,its source is available .查看它我发现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 上运行它,结果如预期。

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

关于macos - 在 C 语言中确定 OS X 中 DVD 驱动器的区域代码而不要求 DVD 位于驱动器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8342767/

相关文章:

macos - NSOpenGLView 子类不随窗口调整大小

c++ - 如何以编程方式区分插入的 dvd 或迷你 dvd 磁盘?

delphi - 检测是否存在物理光盘驱动器

java - 在 Java 中获取所有 DVD 驱动器

ffmpeg - 自动切碎?

c++ - 安装自己的 block 后 Gnuradio 崩溃

macos - NSWindowController orderOut 在 Mac Yosemite 10.10 中崩溃

ios - Xcode Storyboard变灰

c# - 使用 UdpClient 发送数据时访问被拒绝