6

基本的に私はコンピューターのネットワークを運営しており、さまざまなコンピューターのドライブがどのリージョンコードに設定されているかを知る必要があります。地域を変更する必要はありませんが、各コンピュータに個別にアクセスしてディスクを貼り付けずに地域を特定する方法がわかりません。AppleのcocoaDVD再生フレームワークを使ってみましたが、ドライブにディスクを挿入する必要があり、目的が果たせません。

では、ディスクを挿入しなくてもMac ProのDVDドライブのリージョンコードを判別するために使用できるAPIはありますか?私はほとんどすべての言語でコーディングするつもりです。

ありがとう

4

2 に答える 2

3

OS XでDVDリージョン設定を処理できるユーティリティをいくつか見つけました:DVDInfoXとRegionX。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);
}

これをMacbookProで実行したところ、期待どおりの結果が得られました。

もちろん、その部分を使用できるものに分離するためにそれをマッサージする必要がありますが、このコードは有用な出発点になると思います。

于 2011-12-09T19:11:46.220 に答える
1

そのような答えはありませんが、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リージョンも読み取れます。
于 2011-12-09T12:06:03.157 に答える