[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]
Windows NTシステムでは,イベントは,システムまたはアプリケーション内で発生する重要な出来事です。 たとえば,サービスの開始や停止, ユーザのログオンやログオフ,リソースへのアクセスなどはイベントです。 システムでイベントが検出されると,イベント・ログ・ サービスがイベント(または監査エントリ)をレコード形式でシステム・ ログ,セキュリティ・ログ,アプリケーション・ログのいずれかに書き込み, 監査トレールを作成します。レコードには日時,ソース(発生源) ,カテゴリ,イベント番号,ユーザ,コンピュータに関する情報が格納されます。Windows NT システムでは,これらのログやそこに記録されているイベントは, イベント・ビューアを使用して表示します。
COM Version 1.0 for OpenVMSでは, OpenVMSはすべてのCOM for OpenVMSイベントをDCOM$EVENTLOG.RPTテキスト・ ファイルに書き込んでいました。COM Version 1.1 for OpenVMSでは,OpenVMSはCOM for OpenVMSイベントのWindows NTログとAdvanced Server for OpenVMSログの両方をサポートするようになりました。COM for OpenVMSイベント(OpenVMSでのCOMサーバの起動など)をログに記録し,Windows NT システムまたはOpenVMSシステムからこれらのOpenVMS イベントを確認できるようになりました。
OpenVMS Eventsの依存関係についてと,OpenVMS EventsがOpenVMSインフラストラクチャの他の部分とどのように関係するかの詳細については, 第4.9節を参照してください。
イベントと関連トピックの詳細については,次の参考文献が役立ちます。
特に,RegisterEventSource
,ReportEvent
,
DeregisterEventSource
機能に関する節と,System Services: Event Loggingという節を参照してください。
システムはOpenVMS EventsをWindows NTイベント・ログ,Advanced Server for OpenVMSイベント・ログ,OpenVMSシステムのログ・ファイルに記録します。
OpenVMS Eventsを表示するには,次のいずれかを使用します。
Windows NTイベント・ビューアを使用してOpenVMS Eventsを表示するには, 次の操作を行います。
「スタート」メニューから「プログラム」,「管理ツール」 ,「イベントビューア」を選択します。
COM for OpenVMSイベントだけを表示するには, 次の操作を行います。
「フィルタ」ウィンドウが表示されます。
COM for OpenVMSイベントを表示するには, 次の操作を行います。
$ ADMIN SHOW EVENTS/TYPE=SYSTEM/SOURCE=DCOM/FULL
ビューアはCOM for OpenVMSイベントだけを表示し,COM for OpenVMS イベントに関連付けられた補足情報も表示します。
場合によっては,COM for OpenVMSイベントをOpenVMS システムのみで書き込んだり,表示しなければならないことがあります。Windows NT ログの代わりに, CompaqはCOMイベント情報をOpenVMSファイルに書き込む別のイベント・ロガーを提供しています。 このファイルは次の場所にあります。
SYS$MANAGER:DCOM$EVENTLOG.RPT
COMサーバ(DCOM$RPCSS
)がエラーを検出すると,COM for OpenVMS
はこのイベント・ログ・レポートを自動的に作成します。
イベント・ロガーはファイルの最後に新しいイベントを追加します。
記録されるイベントの形式は次のとおりです。
event type : ddd mmm dd hh:mm:ss yyyy First event message event type : ddd mmm dd hh:mm:ss yyyy Second event message . . .
例 11-1はイベント・ ログの内容を示しています。
$ Type SYS$MANAGER:DCOM$EVENTLOG.RPT 【1】 ERROR : Tue Sep 15 11:18:54 1998 Unable to start a DCOM Server: {5E9DDEC7-5767-11CF-BEAB-00AA006C3606} Runas (null)/SMITH The Windows NT error: 1326 Happened while starting: device:[account]SSERVER.EXE 【2】 ERROR : Tue Sep 15 19:14:45 1998 The server {0C092C21-882C-11CF-A6BB-0080C7B2D682} did not register with DCOM within the required timeout.
Tue Sep 15
11:18:54 1998
に記録しました。COMサーバ(DCOM$RPCSS)
は,SMITH
アカウントで稼動しているクライアントの代わりに,COM
アプリケーションdevice:[account]SSERVER.EXE
を起動できませんでした(クライアントは"access denied"などのエラーを受け取っている可能性があります)
。この結果作成されたWindows
NTエラーは1326
であり,これが"Logon failure:
unknown user name or bad password"
に変換されます。
このエラーを検出した場合は,OpenVMS Authorizeユーティリティ(AUTHORIZE) を使用して,ユーザ・アカウントが有効であるかどうか確認してください。
Tue Sep 15
19:14:45 1998
に記録しました。COMサーバ(DCOM$RPCSS)
は,COMアプリケーション{0C092C21-882C-11CF-A6BB-
0080C7B2D682}
を起動することはできましたが,アプリケーションは正常に動作しませんでした。
アプリケーションは指定された時間内にDCOM$RPCSS
に登録されませんでした(クライアントは"Server
execution failed" CO_E_SERVER_EXEC_FAILURE
などのエラーを受け取っている可能性があります)
。
このエラーを検出した場合は,対話方式でサーバ・アプリケーションを実行し, 整合性を判断してください。
アプリケーションがイベント・ログ・ファイルに情報を記録することを許可します。
NTA$EVENTWルーチンはすべての操作を同期的に完了します。
NTA$EVENTW [nullarg], func, itmlst, evsb
OpenVMS使用法: reserved type: longword (unsigned) access: read only mechanism: by value
OpenVMS使用法: function_code type: longword (unsigned) access: read only mechanism: by value
OpenVMS使用法: address of item list type: 64-bit address access: read only mechanism: by value
次の図は,1つのアイテム記述子の64ビット形式を示しています。
OpenVMS使用法: address of status block type: 64-bit address access: write only mechanism: by reference
NTA$EVENTWは要求を開始するときに,状態ブロックを0に設定します。要求の終了時に,EVT$L_VMS_STATUS フィールドには操作の主(OpenVMS)終了状態が格納されます。
エラーが発生した場合,EVT$L_NT_STATUS (0以外の場合)は,エラー状態をさらに定義する補助エラー状態です。
アイテム・コード | 必須 | パラメータ | データ・タイプ |
---|---|---|---|
EVT$_SERVER_NAME | 省略可能 | 入力 | 文字列(4バイトのUnicode) |
EVT$_SOURCE |
省略可能 | 入力 | 文字列(4バイトのUnicode) |
EVT$_HANDLE
| 必須 | 出力 | 符号なしロングワード |
この操作が実行されるサーバのUNC (汎用命名規則)名。
UNC名は\\server\ share\path \fileという形式です。このアイテムは0または未指定でなければなりません。 これはクラスタ内で使用可能なAdvanced Server for OpenVMSサーバで操作を実行します。
イベントを記録するアプリケーションの名前。このフィールドは,説明テキストが格納されているアプリケーション・ メッセージ・ファイルをアプリケーションのイベント・ ログ・エントリと関連付けます。
ソースを指定する場合は,Eventlog\System
キー,
Eventlog\Security
キー,
Eventlog\Application
レジストリ・キーのサブキーでなければなりません。
たとえば,Myapp
のソース名は,
次のキーのレジストリ・エントリを示します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Eventlog\Application\Myapp)
Myapp
レジストリ値EventMessageFile
は,このアプリケーションのイベントを変換するために使用されるメッセージ・
ファイルとパスの名前を指定します。
ソースは指定しないか,またはNullとして指定できます。この場合, イベントはアプリケーション・ログ・ファイルに記録されますが,アプリケーションは関連イベントのメッセージ・ ファイルを記録しません( この結果,置換テキストも記録されません)。
アプリケーション・イベント・ログへのハンドルを返します。このハンドルは他の$EVENT 機能への入力として必要です。
エラーが発生した場合,ハンドルとして0が返されます。このハンドルは
CloseHandle
APIの責任の範囲外です。
アイテム・コード | 必須 | パラメータ | データ・タイプ |
---|---|---|---|
EVT$_HANDLE | 必須 | 入力 | 符号なしロングワード |
EVT$_EVENT_TYPE | 必須 | 入力 | ワード・マスク |
EVT$_EVENT_CATEGORY | 省略可能 | 入力 | ワード |
EVT$_EVENT_ID | 必須 | 入力 | ロングワード |
EVT$_USER_SID | 省略可能 | 入力 | NTセキュリティID |
EVT$_NUMSTRINGS | 省略可能 | 入力 | ワード |
EVT$_DATASIZE | 省略可能 | 入力 | ロングワード |
EVT$_STRING_ARRAY | 省略可能 | 入力 | 可変長記述子の配列(4バイトのUnicode) |
EVT$_RAW_DATA
| 省略可能 | 入力 | バイナリ・ データ |
以前のEVT$_FC_REGISTER_EVENT_SOURCE呼び出しから返された値。
イベントの重大度を示します。タイプは次のいずれかです。
重大度タイプは,WINNT.Hに定義されているWindows NTの対応する重大度にマップされます。
1〜65535の範囲の整数値。EVT$_EVENT_CATEGORYは特定のソース固有の値です。
EVT$_EVENT_CATEGORYを使用すると,アプリケーションはメッセージ・ ファイルをセクションに分割できます。各セクションにはイベントID がインデックスとして付加されます。カテゴリを指定しなかった場合, デフォルトは0になります。
無制限の整数値。この値はアプリケーション・メッセージ・ファイルでカテゴリのインデックスとして使用されます。 インデックスはこのイベント・ メッセージに対して表示されるテキスト文字列の場所を示します。 イベントIDは特定のソース固有の値です。
イベントをログに記録するスレッドのWindows
NTセキュリティID (省略可能)。$PERSONAシステム・サービスを介してWindows NT
資格情報を取得したアプリケーションは,
OpenProcessToken
とGetTokenInformation
Win32 APIを呼び出すことにより,SID
を取得できます。形式はこのサービスからは不明です。
EVT$_STRING_ARRAYアイテム・コードに指定された文字列の数。
EVT$_RAW_DATAアイテム・コードによって示されたバッファの長さ(バイト数) 。
文字列ポインタの配列。各エントリ・ポイントは最後がNullの文字列です。 メッセージ・ファイル内の記述文字列には,%nの形式で文字列プレースホルダを格納できます。%1 は最初のプレースホルダを示します。 この配列に指定された文字列は,システムがイベント・ メッセージを表示するときに,これらのプレースホルダを置き換えます。
イベント・メッセージにバイナリ・データを含むことを許可します。
たとえば,エラーが発生したコンポーネントからデータ構造をダンプできます。
アイテム・コード | 必須 | パラメータ | データ・タイプ |
---|---|---|---|
EVT$_HANDLE | 必須 | 入力 | 符号なしロングワード |
以前のEVT$_FC_REGISTER_EVENT_SOURCE呼び出しから返された値。
アイテム・コード | パラメータ・タイプ | データ・タイプ |
---|---|---|
EVT$_SERVER_NAME | 入力 | 文字列 |
EVT$_SOURCE
| 入力 | 文字列 |
EVT$_HANDLE | 入力/出力 | 符号なしロングワード |
EVT$_
EVENT_TYPE | 入力 | ワード・マスク |
EVT$_EVENT_CATEGORY
| 入力 | ワード |
EVT$_EVENT_ID | 入力 | ロングワード |
EVT$_USER_
SID | 入力 | NTセキュリティID |
EVT$_NUMSTRINGS
| 入力 | ワード |
EVT$_DATASIZE | 入力 | ロングワード |
EVT$_STRING_
ARRAY | 入力 | 文字列ポインタの配列 |
EVT$_RAW_DATA
| 入力 | バイナリ・データ |
説明NTA$EVENTW ルーチンを使用すると,イベントのソースの登録と登録の解除, イベント・データの報告を行うことができます。このイベント・ログ機能を使用すると, アプリケーションの内部から情報を記録できます。イベント・ ルーチンを使用して,アプリケーション内で進行状況を追跡したり, アプリケーションで検出された問題を識別できます。
NTA$EVENTWルーチンは同期的に終了します。つまり,要求が終了した後で制御は呼び出しプロセスに戻されます。
イベント・データを書き込むには,次の操作を行います。
この操作は,イベント・データが書き込まれるイベント・ログを定義します。
この操作を実行すると,情報が適切なイベント・ログに書き込まれます。
この操作は,イベント・ソースの登録の一部として取得されたリソースを解放します。
SS$_NORMAL | サービスは正常終了しました。 |
SS$_
ACCVIO | 引数の1つを読み込み/書き込みすることができません。 |
SS$_BADPARAM
| パラメータが不正です。 |
SS$_NOPRIV | 特権が不足しているため, 指定されたイベント・ログにアクセスできません。 |
SS$_TIMEOUT | 要求がタイムアウトしました。 |
SS$_
UNREACHABLE | イベント・サービスを使用できません。 |
SS$_REJECT
| Windows NT LAN Managerサーバがエラーを検出しました。 詳細については,Win32の状態情報を参照してください。 |
デフォルト設定では,システムはCOM for OpenVMSで生成されたDCOMイベントをログに記録します。COM for OpenVMSイベントを記録する他に, ユーザが作成したCOMアプリケーションのCOMアプリケーション・イベントをログに記録することもできます。
COM for OpenVMSキットには,Win32 API を使用してアプリケーション・イベントを生成する方法を示すサンプル・ コードが含まれています。このサンプル・コードは,Windows NTシステムでそのまま使用できます。 また, OpenVMSでCOM for OpenVMSアプリケーションを作成する指示に従って, このサンプル・コードを正しく作成することもできます( 必要なヘッダ・ファイルはDCOM$LIBRARYから取得してください) 。これらの手順については,第6章を参照してください。 また,このサンプル・コードには,Wind/Uを使用して例を作成するためのリンク手順も示されています。
イベントを報告するときに発生したエラーは,追跡が困難なことがあります。 これは,途中にあるいくつものソフトウェア・レイヤをイベントが通過するからです。 ここでは,OpenVMS EventsがWindows NTログに記録されるまでに, 他のソフトウェア・レイヤをどのように通過するかについて説明します。
RegisterEventSource
,
ReportEvent
,Deregis
)を呼び出します。
- Win32 APIは指定された引数を使用して,適切なアイテム・リストを作成し,NTA$EVENTW
ルーチンを呼び出します。
- NTA$EVENTWルーチンは,指定された情報(機能コード,アイテム・
リストなど)を確認し,SYS$ACMシステム・サービスに対して適切なアイテム・
リストを作成します。
NTA$EVENTがエラーを検出すると,R0とイベント状態ブロックを使用して,
そのエラーをWin32 APIに返します。
- SYS$ACMシステム・サービスは情報を確認し,その情報をNT
ACMEに渡します。
SYS$ACMがエラーを検出すると,R0とACM状態ブロックを使用して,そのエラーをNTA$EVENTW
に返します。
- NT ACMEは指定された情報を(IPCパイプを使用して) Advanced Server for OpenVMS
のディスパッチャに渡します。
NT ACMEがエラーを検出すると,ACM状態ブロックを使用して,そのエラーを呼び出し側プロセスに返します。
- Advanced Server for OpenVMSディスパッチャは情報を確認し,
要求された操作(登録,レポート,登録の解除)
を実行するために適切なルーチンを呼び出します。
Advanced Server for OpenVMSがエラーを検出すると,
そのエラーをNT ACMEに報告します。NT ACMEはエラーを他の呼び出しプロセスに渡します。
イベント状態ブロックの内容を確認すると,エラーがどこで発生したのかを判断するのに役立ちます。 表 11-1は, 実行しなければならないチェックを(重要な順に)示しています。
R0状態 | 状態フィールド値 | チェックするコンポーネント |
---|---|---|
エラー(ビット0 がクリア) | EVT$L_NT_STATUSフィールドが0以外の値である。 | エラーはAdvanced Server for OpenVMSの内部で発生している可能性が最も高い。 |
エラー | EVT$L_VMS_STATUSフィールドが0 以外の値で,EVT$L_NT_STATUSが0である。 | エラーはSYS$ACM システム・サービスまたはNT ACMEの内部で発生している可能性が最も高い。 |
エラー | EVT$L_ VMS_STATUSが0で,EVT$L_NT_STATUSが0である。 | エラーはSYS$ACM システム・サービスの内部で発生している可能性が最も高い。 |
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]