ログ ファイルの操作
読み取り用にログ ファイルを開くには、 PdhOpenQuery を呼び出し、ログ ファイルへのパスを指定します。 書き込み用にログ ファイルを開くには、 PdhOpenLog を呼び出す必要があります。 ログ ファイルを閉じるには、ログ ファイルを開くために使用した関数に応じて、 PdhCloseQuery または PdhCloseLog を呼び出します。
ログ ファイルからの読み取り
ログ ファイルからのパフォーマンス データの読み取りは、リアルタイム ソースからのデータの読み取りと同じです。クエリを開き、クエリにカウンターを追加し、 PdhCollectQueryData を呼び出してログ ファイルからサンプルを収集します。 PdhCollectQueryData は、ログ ファイルの末尾に達するとPDH_NO_MORE_DATAを返します。
ログ ファイル内の各サンプルには、最初に収集されてログ ファイルに書き込まれた日時のタイム スタンプが含まれています。 ログ ファイルの最初と最後のサンプルのタイム スタンプを取得するには、 PdhGetDataSourceTimeRange 関数を呼び出します。 ログから読み取ったサンプルを特定の時間範囲に制限する場合は、「クエリの 時間範囲の設定」を参照してください。
ログ ファイルに存在するパフォーマンス オブジェクトとカウンターがわからない場合は、 PdhEnumObjects を呼び出してオブジェクトの一覧を確認できます。 オブジェクトを指定すると、 PdhEnumObjectItems または PdhExpandWildCardPath を呼び出して、ログ ファイルに含まれるオブジェクトのインスタンスとカウンターの一覧を取得できます。
PdhEnumObjectItems を呼び出す場合は、インスタンスとカウンターの一覧を使用して、インスタンスとカウンターの可能な組み合わせごとにパスを作成します。 PdhAddCounter を呼び出してカウンターをクエリに追加すると、ログ ファイルに指定された組み合わせが含まれていない場合、関数は失敗します。
PdhExpandWildCardPath を使用する場合は、インスタンス名とカウンターのワイルドカードを含むパス (\object(*)\* など) を作成できます。 オブジェクトにインスタンスが含まれていない場合、関数はPDH_INVALID_PATHを返します。 この場合は、カウンターのみのワイルドカード (\object\* など) を使用して PdhExpandWildCardPath を呼び出します。
新しいオペレーティング システムでは、古いオペレーティング システムで生成されたログ ファイルを読み取ることができます。ただし、Windows Vista 以降のオペレーティング システムで作成されたログ ファイルは、以前のオペレーティング システムでは読み取ることができません。
ログ ファイルからデータを読み取る例については、「ログ ファイル からのパフォーマンス データの読み取り」を参照してください。
複数のログ ファイルからの読み取り
複数のログ ファイルから読み取るクエリを作成する必要がある場合は、 PdhBindInputDataSource を呼び出してログ ファイルをバインドします。 次に、'H' で終わる PDH 関数 ( PdhOpenQueryH など) を使用する必要があります。
ログ ファイルへの書き込み
ログ ファイルに書き込む前に 、PdhOpenQuery を呼び出してクエリを作成し、リアルタイム データまたはログ ファイルのパフォーマンス データのソースを指定します。 次に、クエリを実行するカウンターを追加します。
宛先ファイルを開くには、 PdhOpenLog を呼び出します。 ログ ファイルを開くときにクエリを指定します。 パフォーマンス データを収集してログ ファイルに書き込むには、 PdhUpdateLog を呼び出します。
カウンター データがコンマ区切り (.csv) またはタブ区切り (.tsv) ログ ファイルに書き込まれていて、パスにワイルドカード インスタンスが含まれている場合、パスは展開され、パスの展開時に存在するインスタンスのみがログ ファイルに含まれます。 ただし、バイナリ (.blg) または SQL ログ ファイルの場合、ログ記録中に作成されたインスタンスがログ ファイルに含まれるようにワイルドカードは展開されません。
ログ ファイルにデータを書き込む例については、「ログ ファイルへの パフォーマンス データの書き込み」を参照してください。
ログ ファイルの圧縮
PdhComputeCounterStatistics 関数を使用して、ログ ファイルを圧縮できます。 たとえば、ログ ファイルから 10 個のレコードを読み取り、 PdhComputeCounterStatistics を呼び出して平均値を計算し、その平均値を出力ログ ファイルに書き込みます。
次のトピックでは、ログ ファイルの使用に関する追加情報を示します。