Undefine メソッドの作成
この項目では、Undefine デバイス方式がどのように機能するかについて説明します。 また、プログラマーが独自の Undefine 装置構成メソッドを作成するためのガイドラインも提案します。
構文
UndD 日EV - 名前
説明
Undefine メソッドは、定義済みデバイスをカスタマイズ・データベースから削除します。 装置がいったん削除されると、DEFINE メソッドによって再度定義されるまで、その装置を構成することはできません。
また、Undefine メソッドは、デバイス・インスタンスのメジャー番号とマイナー番号の割り当てを解放し、デバイスの特殊ファイルを /dev ディレクトリーから削除します。 マイナー番号割り当てが Genminor サブルーチンに登録されている場合、Undefine メソッドは RELDEVNO サブルーチンを使用して、メジャー番号割り当てとマイナー番号割り当てを解放し、スペシャル・ファイルを削除することができます。
規則により、Undefine メソッドの名前の最初の 3 文字は Undです。 名前の残りの部分 (デヴ) は、オペレーティング・システムのファイル名の制限に従って、メソッドを使用するデバイスまたはデバイス・グループを識別する任意の文字にすることができます。
フラグ
| 項目 | 説明 |
|---|---|
| -l 名前 | 未定義にするデバイスの論理名を識別します。 |
未定義メソッドの作成に関するガイドライン
このタスク・リストは、Undefine メソッドを作成するためのガイドラインとして提供されています。 一部のデバイスには、これらのタスクでは対処されない特殊なニーズがある場合があります。
Undefine メソッドは、以下を行う必要があります。
- 入力パラメーターを検証します。 未定義のデバイスを識別するには、 - フラグを指定する必要があります。
- odm_initialize サブルーチンを使用してオブジェクト・データ・マネージャー (ODM) を初期化し、 odm_lock サブルーチンを使用して構成データベースをロックします。 例については、 "デバイス・メソッドの書き込み" を参照してください。
- 未定義にするデバイスのカスタマイズ・デバイス (CuDv) オブジェクトを取得します。 これを行うには、 -l フラグで指定された名前と一致するデバイス名記述子を持つ CuDv オブジェクトを取得します。 指定された名前のオブジェクトが見つからない場合、このメソッドはエラーで終了します。
- デバイスの現在の状態を確認します。 装置状況記述子が、装置が「定義済み」状態でないことを示している場合は、未定義になる準備ができていません。 この場合、このメソッドはエラーで終了します。
- 子デバイスがあるかどうかを確認します。 この検査は、親デバイスの論理名記述子がこのデバイスの名前と一致するすべてのオブジェクトについて、 CuDv オブジェクト・クラスを照会することによって行われます。 デバイスに子デバイスがある場合、その状態に関係なく、Undefine メソッドは失敗します。 親を未定義にする前に、すべての子デバイスを未定義にする必要があります。
- このデバイスが別のデバイスの依存関係としてリストされているかどうかを確認してください。 これは、このデバイスの論理名と一致する依存関係記述子を持つオブジェクトのカスタマイズ依存関係 (CuDep) オブジェクト・クラスを照会することによって行われます。 一致するものが見つかると、メソッドはエラーで終了します。 装置が別の装置の従属としてリストされている場合には, その装置を未定義にすることはできません。
- 特殊ファイルおよびメジャー番号とマイナー番号を削除します。 エラーが検出されなかった場合、メソッドはカスタマイズされた情報を削除できます。 まず、 /dev ディレクトリーから特殊ファイルを削除します。 次に、すべてのマイナー番号割り当てを削除します。 特定のメジャー番号の最後のマイナー番号が削除されている場合は、 再メジャー サブルーチンを使用して、そのメジャー番号もリリースしてください。 Undefineメソッドは、カスタマイズされたデバイスドライバー(CuDvDr) オブジェクト クラスを直接使用することはできませんが、常に提供されているルーチンを使用する必要があります。 マイナー番号割り当てが Genminor サブルーチンに登録されている場合は、上記のすべてを RELDEVNO サブルーチンを使用して行うことができます。
- カスタマイズ属性 (CuAt) オブジェクト・クラスからデバイスのすべての属性を削除します。 単に、デバイス名記述子がこのデバイスの論理名と一致するすべての CuAt オブジェクトを削除します。 属性の削除に使用された ODM ルーチンが、オブジェクトが削除されなかったことを示している場合は、エラーではありません。 これは、デフォルト値から変更された属性がデバイスにないことを示します。
- デバイスのカスタマイズ済み VPD (CuVPD) オブジェクトを削除します (ある場合)。
- このデバイスに従属する他のデバイスを示すカスタマイズされた依存関係 (CuDep) オブジェクトを削除します。
- デバイスのカスタマイズ・デバイス (CuDv) オブジェクトを削除します。
- すべてのオブジェクト・クラスをクローズし、 ODMを終了します。 エラーがない場合は、終了コード 0 (ゼロ) で終了します。
ファイル
| 項目 | 説明 |
|---|---|
| /dev ディレクトリー | 装置特殊ファイルが入っています。 |