高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A ME07
Finding the VM Backing Store

Q: 私はバックアップ・プログラムを書いていますが、仮想メモリの VM Storage ファイルを見つけて、それはバックアップしないようにしたいと思います。どのようにしたらよいでしょうか?

A: 使用中の仮想メモリ VM Storage ファイルを探す最良の方法は、以前はマニュアルに記載のなかった Gestalt セレクタを使うことです。使い方は次の通りです。
enum {
    gestaltVMBackingStoreFileRefNum = 'vmbs'
};

このセレクタは現在使用中の“VM Storage”ファイルへのファイル参照番号を返します。次のように、PBGetFCBInfoSync を呼び出して、参照番号を FSSpec に変換することができます。

OSErr FindVMStorage(FSSpec *fss) {
    OSErr err;
    long gestaltResult;
    FCBPBRec fcbPB;
    Str255 theName;

    err = Gestalt(gestaltVMBackingStoreFileRefNum, &gestaltResult);
    if (err == noErr) {
        fcbPB.ioNamePtr = theName;
        fcbPB.ioVRefNum = 0;
        fcbPB.ioRefNum = gestaltResult;
        fcbPB.ioFCBIndx = 0;
        err = PBGetFCBInfoSync(&fcbPB);
        if (err == noErr) {
            err = FSMakeFSSpec(fcbPB.ioFCBVRefNum,
                    fcbPB.ioFCBParID, theName, fss);
        }
    }
    return err;
}

[2001年3月30日]