繁体   English   中英

在C中的OS X中确定DVD驱动器的区域代码,而不要求DVD在驱动器中

[英]Determining a DVD drive's region code in OS X in C WITHOUT requiring that a DVD be in the drive

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

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

谢谢

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

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

显然你需要按摩它以便将那部分隔离成你可以使用的东西,但我认为这段代码将是一个有用的起点。

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

  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区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM