前へ | 次へ | 目次 | 索引 |
この章では, OpenVMS Registry の $REGISTRY システム・サービスと $REGISTRYW システム・サービスについて説明します。
$REGISTRY システム・サービスと $REGISTRYW システム・サービスは, OpenVMS Registry データベース・サーバへのインタフェースです。 $REGISTRY サービスを使用すると, OpenVMS Registry データベースに登録されているキー,サブキー,値の表示,更新,設定を行うことができます。$REGISTRY サービスでは,同期操作と非同期操作の両方がサポートされます。非同期完了の場合は, Registry ($REGISTRY) システム・サービスを使用します。同期完了の場合は,Registry and Wait ($REGISTRYW) システム・サービスを使用します。$REGISTRYW システム・サービスは $REGISTRY システム・サービスとほとんど同じ機能を実行しますが,要求された操作が完了した後で呼び出しプロセスに制御が返されます。システム・サービスの終了の詳細については, Synchronize ($SYNCH) システム・サービスを参照してください。
このシステム・サービスは 64 ビット互換です。
SYS$REGISTRY [efn], func, 0, itmlst, [iosb or iosa_64], [astadr or astadr_64], [astprm or astprm_64]SYS$REGISTRYW [efn], func, 0, itmlst, [iosb or iosa_64], [astadr or astadr_64], [astprm or astprm_64]
efn
OpenVMS usage: ef_number データ型: longword (unsigned) アクセス: read only 受け渡し方: by value
$REGISTRY で使用されるイベント・フラグの数。イベント・フラグを指定しなかった場合,デフォルトは EFN$C_ENFになります。イベント・フラグは $REGISTRY で最初にクリアされ,操作が完了したときにセットされます。func
OpenVMS usage: function_code データ型: longword (unsigned) アクセス: read only 受け渡し方: by value
$REGISTRY が実行する動作を指定する機能コード。 func 引数は,この機能コードを格納したロングワードです。機能コードには機能修飾子を含むことができます。機能修飾子の詳細については,この章の機能修飾子を参照してください。$REGISTRY の呼び出しには機能コードを 1 つだけ指定できます。どの機能コードを呼び出す場合も,itmlst 引数に追加情報を指定しなければなりません。
itmlst
OpenVMS usage: item_list3 or item_list_64b データ型: longword (unsigned) アクセス: read only 受け渡し方: by reference
func 引数によって指定される機能を実行するために,システムが使用する情報を示すアイテム・リスト。 itmlst 引数はアイテム・リストのアドレスです。アイテム・リストは 1 組以上のアイテム記述子で構成されます。各記述子は item-list-3 または item-list-64b 形式です。一部の機能コードでは,1 回の呼び出しに複数の操作を指定できます。この場合,各アイテム・コード・セットの間に REG$_SEPARATORアイテム・コードを指定しなければなりません。 REG$_SEPARATORアイテム・コードで区切られた各要求にアイテム・コードを指定する順序は任意です。
アイテム・コードは入力パラメータまたは出力パラメータとして指定できます。入力パラメータは機能の変更,コンテキストの設定,返す情報の指定を行います。出力パラメータは要求された情報を返します。item-list-3 リストの場合は,リストの最後にロングワードの 0 を指定しなければなりません。item-list-64b リストの場合は,リストの最後にクォドワードの 0 を指定しなければなりません。
図 10-1 は item-list-3 記述子の構造を示しています。
図 10-1 item-list-3 の構造
図 10-2 は item-list-64b 記述子の構造を示しています。
図 10-2 item-list-64b の構造
表 10-1 はアイテム記述子フィールドの定義を示しています。
記述子フィールド | 定義 |
---|---|
Buffer length | バッファの長さを指定するワード。バッファは,$REGISTRY で使用される情報を渡すか,または $REGISTRY からの情報を受け取る場所である。必要なバッファの長さは,指定するアイテム・コードに応じて異なる。各アイテム・コード記述に必要な長さを指定する。 |
Item code | バッファ内に現在格納されている情報のタイプを示すシンボリック・コード,またはバッファに返されたシンボリック・コードを格納したワード。 buffer address フィールドはバッファの場所を示す。 |
Buffer address | 情報の受け渡しで使用されるバッファのアドレスが格納されているロングワード。 |
Return length address | $REGISTRY から返された情報の実際の長さ (バイト数) を指定するワードのアドレスが格納されているロングワード。情報は buffer address フィールドで示されるバッファに格納される。このフィールドは出力アイテム・リスト・エントリにだけ適用され,入力エントリの場合は 0 でなければならない。return length address が 0 の場合は無視される。 |
OpenVMS usage: | status_block |
データ型: | buffer |
アクセス: | write only |
受け渡し方: | by reference |
$REGISTRY 操作の最終終了状態と情報が返される状態ブロック。1 つの機能コードに対して複数の操作が要求された場合は, iosb に返される値は
SS$_NORMALまたは
SS$_REGERRORになります。各操作の戻り状態は
REG$_RETURNSTATUSアイテム・コード (指定されている場合) に返されます。iosb 引数は $REGISTRY の状態ブロックのアドレスです。
iosb 引数を指定した場合は,$REGISTRY の実行が開始されるときに,クォドワードの I/O 状態ブロックがクリアされます。
iosb 引数は省略してもかまいませんが,次の理由により,なるべく指定してください。
R0 に返される条件値と,I/O 状態ブロックに返される条件値は, $REGISTRY サービスへの呼び出しに関して異なる情報を提供します。 R0 に返される条件値は,サービスの呼び出し自体が正常終了したのか,異常終了したのかに関する情報を示します。I/O 状態ブロックに返される条件値は,サービス操作が正常終了したのか,異常終了したのかに関する情報を示します。
$REGISTRY への呼び出しが正常終了したのか,異常終了したのかを正確に判断するには,最初に R0 に返された条件値を確認しなければなりません。 R0 に正常終了を示す値が格納されている場合は,I/O 状態ブロックの条件値を確認しなければなりません。
表 10-2 はアイテム記述子フィールドの定義を示しています。
記述子フィールド | 定義 |
---|---|
Status | $REGISTRY サービスの最終状態を指定するロングワード。1 つの機能コードに対して複数の操作を要求した場合は, SS$_NORMAL または SS$_REGERROR が iosb に返される。このフィールドは操作を開始するときに,0 に設定される。 |
Reserved | 予約されているロングワード。 |
OpenVMS usage: | ast_procedure |
データ型: | procedure value |
アクセス: | call without stack unwinding |
受け渡し方: | by reference |
$REGISTRY が完了したときに実行される AST サービス・ルーチン。 astadr 引数はこのルーチンのアドレスです。
astadr を指定した場合,AST ルーチンは $REGISTRY サービスの呼び出し側プロセスと同じアクセス・モードで実行されます。
$REGISTRY サービスの呼び出しが正常終了しなかった場合 (つまり,エラーが直ちに戻された場合) は,AST ルーチンは実行されません。
OpenVMS usage: | user_arg |
データ型: | longword (unsigned) |
アクセス: | read only |
受け渡し方: | by value |
astadr 引数によって指定された AST サービス・ルーチンに渡される AST パラメータ。 astprm 引数はこのロングワード・パラメータを指定します。
$REGISTRY サービスは,レジストリ・キー,キーの値,キーの属性の作成,削除,変更を行う機能を提供します。$REGISTRY サービスでは,キーに対するハンドルを格納するためにプロセス P1 空間を使用します。$REGISTRY サービスは IPL 0 で呼び出さなければならず,AST 要求を配布するためにシステム・ダイナミック・メモリを必要とします。
$REGISTRYW
SS$_ACCVIO 引数の 1 つを読み込みまたは書き込みできません。 SS$_BADPARAM 機能コードまたはアイテム・リスト・コードの 1 つが不正です。 SS$_EXASTLM AST リミットを超えました。 SS$_EXBYTLM バイト・カウント・クォータを超えました。 SS$_ILLEFC イベント・フラグ番号が不正です。 SS$_INSFARG 指定された引数の数が不足しています。 SS$_INSFMEM ダイナミック・メモリが不足しています。 SS$_NORMAL 正常終了。 SS$_TOO_MANY_ARGS 引数の数が多すぎます。 REG$_ACCESSDENIED キーに対して要求されたアクセスが拒否されました。 REG$_BADFILEVER ファイル・バージョン番号が不正です。 REG$_BUFFEROVF バッファ・オーバフロー。 REG$_CANTCLEANVOLSEG レジストリの揮発性セグメントを消去できません。 REG$_CANTCONVCS コード・セット変換エラー。 REG$_CANTOPENOUTFILE 指定された出力ファイルを開くことができません。 REG$_DBACCESS レジストリ・データベース・オブジェクトにアクセスできません。 REG$_DBALREADYLOADED データベースはすでにロードされています。 REG$_DBCREATE レジストリ・データベースを作成できません。 REG$_DBCSMISMATCH データベース・チェックサムの不一致: 格納値 = !XL 計算値 = !XL REG$_DBFIND レジストリ・データベースを見つけることができません。 REG$_DBFULL レジストリ・データベースが満杯です。 REG$_DBLOAD レジストリ・データベースをロードできません。 REG$_DBNOTYETLOADED データベースはまだロードされていません。 REG$_DBVERMISMATCH データベース・バージョンの不一致: 現在のバージョン = V!UW.!UW データベース = V!UW.!UW REG$_DELROOTKEY ルート・キーが削除されました。 REG$_DOUBLEDEALLOC 構造はすでにフリー・リストに登録されています。 REG$_DTMUTEXERROR DECthreads ミューテックスロック/アンロック・エラー。 REG$_DTMUTEXINIT DECthreads ミューテックス初期化エラー !UL REG$_DTMUTEXLOCK DECthreads ミューテックス・ロック・エラー !UL REG$_DTMUTEXLOCKED DECthreads ミューテックスは別のスレッドによってすでに保有されています。 REG$_DTMUTEXUNLOCK DECthreads ミューテックス・アンロック・エラー !UL REG$_DTRWLOCKINIT DECthreads 読み込み/書き込みロック初期化エラー !UL REG$_DTRWLOCKLOCK DECthreads 読み込み/書き込みロック・エラー !UL REG$_DTRWLOCKUNLOCK DECthreads 読み込み/書き込みアンロック・エラー !UL REG$_DUPLREQUEST 作業中のハッシュ・テーブル挿入で重複する要求が検出されました。 REG$_EXQUOTA レジストリ・ファイル・クォータまたはページ・ファイル・クォータを超えました。 REG$_FILECREATE !AZ!AZ の作成でエラーが発生しました。 REG$_FILENAMEINVAL ファイル名が不正です。 REG$_FILEOPEN !AZ!AZ を開くときにエラーが発生しました。 REG$_FILEREADEOF ファイルの末尾をこえて読み込もうとしました。FTE !XL REG$_FNAMMISMATCH 物理/論理ファイル名の不一致; FTE=!AZ LTE=!AZ REG$_FSOCORRUPT ファイルにはすでに破損フラグが付いています。FSO: !XL !XL REG$_FSOFILEINDEX FSO: !XL !XL のファイル・インデックスが不正です。 REG$_FSOOFFSET FSO: !XL !XL のオフセットが不正です。 REG$_FSOSEGNUMBER FSO: !XL !XL のセグメント番号が不正です。 REG$_FSOSEGREADERR FSO: !XL !XL でセグメントの読み込みエラーが発生しました。 REG$_FTEALLOC ファイル・テーブル・エントリ !XL を !AZ に対して割り当てるときにエラーが発生しました。 REG$_FTEALREADYEXIST ファイル !AZ!AZ を作成できません。ファイルはすでに存在します。 REG$_FTEALREADYOPEN ファイルはすでに開かれています。 REG$_FTEDUPNAME ファイル・テーブル・エントリの割り当てエラー; ファイル名が重複します。 REG$_FTEINSUFFINFO 指定されたファイル・テーブル・エントリは割り当てられていません。 REG$_FTEINUSE ファイル・テーブル・エントリの割り当てエラー,エントリは使用中です。 REG$_FTENOTEXIST 指定されたファイル・テーブル・エントリは存在しません。 REG$_FTENOTOPEN 指定されたファイルは開かれていません。 REG$_FTIMISMATCH 物理ファイル・インデックスの不一致; LTE = !XL,FTE = !XL REG$_HASLINK キーに別のキーへのリンクがあります。 REG$_HAVESUBKEYS サブキーのあるキーを削除することはできません。 REG$_INTERNERR レジストリの内部エラー。 REG$_INVCACHEACTION キャッシュ・アクション・パラメータが不正です。 REG$_INVCREDENTIALS NT 資格情報が不正です。 REG$_INVDATA データ値が不正です。 REG$_INVDATATYPE データ・タイプ・パラメータが不正です。 REG$_INVFUNCCODE 機能コードが不正です。 REG$_INVKEYFLAGS キー・フラグが不正です。 REG$_INVKEYID キーが存在しないか,または不正なキー ID が指定されました。 REG$_INVKEYNAME キー名が不正です。 REG$_INVLINK リンクまたはリンク・タイプが不正です。 REG$_INVLINKPATH リンク・パスが不正です。 REG$_INVLOG ログ・ファイルが不正です。 REG$_INVLOGREC ログ・レコードが不正です。 REG$_INVPARAM パラメータが不正です。 REG$_INVPATH キー・パスが不正です。 REG$_INVSECDESCRIPTOR セキュリティ記述子が不正です。 REG$_INVSECPOLICY セキュリティ・ポリシー・パラメータが不正です。 REG$_INVSEGNUM セグメント番号が不正です。 REG$_INVVOLROOTKEY 揮発性ルート・キーを使用して新しいファイルを作成することはできません。 REG$_IOREADERR ブロック !UL で長さ !UL のディスク読み込みエラーが発生しました。 REG$_IOWRITERR ブロック !UL で長さ !UL のディスク書き込みエラーが発生しました。 REG$_IPCCONACC IPC 接続受諾エラー: !XL REG$_IPCCONREJ IPC 接続拒否エラー: !XL REG$_IPCDCLAST IPC は同期完了のために AST を宣言できません。!XL REG$_IPCOPEASS IPC 関連付けオープン・エラー: !XL REG$_IPLTOOHIGH IPL 0 より上の呼び出しプロセスはこのサービスを呼び出すことができません。 REG$_KEYCHANGED キーまたはサブキーが変更されています。 REG$_KEYEXIST キーはすでに存在します。 REG$_KEYLOCKED キーは別のスレッドによってロックされています。 REG$_KEYNAMEEXIST キー名はすでに存在します。 REG$_LOGFILETABFULL 論理ファイル・テーブルが満杯です。 REG$_LTENOTEXIST 指定された論理ファイル・テーブル・エントリは存在しません。 REG$_MOREDATA 提供されたバッファが小さすぎるため,要求されたデータを格納できません。 REG$_NOBLOCKFOUND レジストリ・データベースに使用できるブロックが残っていません。 REG$_NOKEY 指定されたキーは存在しません。 REG$_NOMEMORY メモリ不足。 REG$_NOMOREITEMS 指定されたキーに対するアイテムはこれ以上ありません。 REG$_NOMORESEG 使用できるセグメントはこれ以上ありません。 REG$_NOMORESUBSTRING 部分文字列を見つけることができません。 REG$_NOPATHFOUND パスを見つけることができません。 REG$_NORESPONSE OpenVMS Registry サーバは使用できない状態です。 REG$_NOSUCHFILE このようなファイルは存在しません。 REG$_NOTROOTKEY ルート・キー・インデックスが不正です。 REG$_NOTSUPPORTED 機能コード,アイテム・コード,アイテム値のいずれかがサポートされません。 REG$_NOVALUE 指定された値は存在しません。 REG$_OBJWITHLINK 削除されたキーまたは値を指すリンクがあります。 REG$_REQRECEIVED キー変更要求の通知を受け取りました。 REG$_RESERVED 予約キーまたは値を削除/変更することはできません。 REG$_ROOTINSFILE ルート・ファイル内のファイル・リストが不足しています。 REG$_RUIDMISMATCH ルート・キー UID の不一致; LTE = !@XQ !@XQ; ルート・キー = !@XQ !@XQ REG$_SECVIO このキーが最後に開かれたときに指定されたセキュリティ・アクセス方式に違反します。 REG$_SEGREADERR ファイル !AZ のセグメント !UL の読み込みでエラーが発生しました。 REG$_STRINGTOOLONG 入力文字列が長すぎます。 REG$_STRINGTRUNC 出力バッファが小さすぎるため,変換された文字列を格納できません。 REG$_SVRVERMISMATCH バージョンの不一致: サーバ = V!UL.!UL データベース = V!UL.!UL REG$_SVRSHUTDOWN サーバのシャットダウン中です。 REG$_TOOMANYOPENKEY 開かれているキーの数が多すぎます。一部のキーを閉じてください。 REG$_UNKTHRREQ スレッド要求コードが不明です。 REG$_VALUEEXIST 値はすでに存在します。 REG$_VOLMISMATCH 揮発性キーに対して不揮発性サブキーを作成することはできません。
前へ | 次へ | 目次 | 索引 |