 |
Btrieve API Guide (v11) |
 |
|
Set Owner(29)
Set Owner オペレーション(B_SET_OWNER)ではファイルにオーナー ネーム(パスワード)を割り当てます。ファイルにオーナー ネームが設定されている場合は、ユーザーやアプリケーションはそのファイルにアクセスするたびにオーナー ネームを指定する必要があります。オーナー ネームがすべてのアクセス権に対し、あるいは更新権限だけに対し要求されるように指定することができます。
オーナー ネームを割り当てるときに、ディスク上のファイルのデータを暗号化するようトランザクショナル インターフェイスに指示することもできます。データの暗号化を指定すると、トランザクショナル インターフェイスでは Set Owner オペレーションの実行中にすべてのデータが暗号化されます。このため、ファイル サイズが大きいほど、Set Owner オペレーションの完了に要する時間は長くなります。
パラメーター
|
オペレーション コード
|
ポジション ブロック
|
データ バッファー
|
データ バッファー長
|
キー バッファー
|
キー番号
|
送り値
|
|
|
|
|
|
|
戻り値
|
|
|
|
|
|
|
前提条件
- 対象となるファイルが開いていることが必要です。
- トランザクションが実行中でないことが必要です。
- ファイルに既にオーナ ネームが設定されていてはいけません。
手順
- オペレーション コードに 29 を設定します。
- オプションで、+17000 のバイアスを含めると最長 24 バイト(半角 24 文字)のオーナーネーム(「長い」オーナーネーム)を作成することができます。このバイアスは btrconst.h に B_LONG_OWNER_NAME_BIAS としても定義されています。Btrconst.h は、Btriev ソフトウェア開発キット(SDK)で提供されます。
- 長いオーナー ネームを指定した場合、そのデータ ファイルは Pervasive PSQL v10 SP1 より前のデータベース エンジンで読み取ることはできません。
- 長いオーナー ネームを使用したデータ ファイルは、v9.5 より前のファイル形式にリビルドしようとする場合、そのオーナー ネームを最初に削除しておかないとリビルドすることができません。
- 保護するファイルを識別するポジション ブロックを渡します。
- データ バッファーとキー バッファーの両方にオーナー ネームを格納します。トランザクショナル インターフェイスは、誤って不正な値を指定するのを防ぐために、オーナー ネームを両方のバッファーに格納することを要求します。
- +17000 のバイアスが指定されない場合、オーナー ネームは 8 バイト(半角 8 文字)までの範囲で指定可能で、末尾はバイナリ 0 になっている必要があります。これは「短い」オーナー ネームと呼びます。+17000 のバイアスが指定された場合、オーナー ネームは 24 バイト(半角 24 文字)までの範囲で指定可能で、末尾はバイナリ 0 になっている必要があります。これは「長い」オーナー ネームと呼びます。どちらの場合も、オーナー ネームをすべてスペース(0x20)で構成することはできません。
- データ バッファー長パラメーターに、バイナリ 0 を含めたオーナー ネームの長さを指定します。オーナー ネームが、指定可能な最大長(8 文字または 24 文字)よりも短い場合、その最大長に満たない部分には空白が埋め込まれます。
- キー番号に、ファイルに対するアクセス制限と暗号化のタイプを指定する整数を設定します(表 26 を参照してください)。
詳細
一度オーナー ネームを指定すると、Clear Owner(30)オペレーションを発行するまでそのオーナー ネームは有効です。次の表に、キー番号に指定できるアクセス制限コードの一覧を示します。
表 26 アクセスおよび暗号化のコード
コード
|
説明
|
0
|
すべてのアクセス モードでオーナー ネームが必要になります(データは暗号化されません)。
|
1
|
読み取り専用アクセスはオーナ ネームがなくても許可されます(データは暗号化されません)。
|
2
|
すべてのアクセス モードでオーナー ネームが必要になります(データが暗号化されます)。
|
3
|
読み取り専用アクセスはオーナー ネームがなくても許可されます(データが暗号化されます)。
|
結果
Set Owner オペレーションが正常に終了した場合、それ以降のオペレーションでは正しいオーナー ネームが指定されない限り、トランザクショナル インターフェイスでファイルへのアクセスやファイルの変更を行えなくなります。唯一の例外は、オーナー ネームの指定なしで読み取り専用アクセスが許可されている場合です。さらに、Set Owner オペレーションが正常に終了すると、暗号化が指定されている場合には、トランザクショナル インターフェイスでファイル内のデータが暗号化されます。
暗号化は直ちに行われ、ファイル全体が暗号化されるまではトランザクショナル インターフェイスの制御下にあります。ファイル サイズが大きいほど、暗号化処理にかかる時間は長くなります。暗号化されたファイルからのデータの読み取りは、暗号化されていないファイルからデータを読み取る場合よりも遅くなります。トランザクショナル インターフェイスはディスクからページを読み込む際にそのページを解読し、ディスクに書き込む際に再度ページを暗号化します。キャッシュが小さい場合、あるいは比較的大量の変更操作を行う場合には、トランザクショナル インターフェイスは暗号化ルーチンをさらに頻繁に実行しなければなりません。
Set Owner オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。
41
|
実行しようとした操作はトランザクショナル インターフェイスでは許可されていません。
|
50
|
ファイルのオーナーは既に設定されています。
|
51
|
オーナー ネームが不正です。
|
ポジショニング
Set Owner オペレーションは、ポジショニングにまったく影響しません。
 Set Directory(17) |
 Stat(15) |
|