ログファイルの操作

読み取り用のログファイルを開くには、 Pdhopenquery を呼び出し、ログファイルへのパスを指定します。 ログファイルを書き込み用に開くには、 Pdhopenlogを呼び出す必要があります。 ログファイルを閉じるには、ログファイルを開くために使用した関数に応じて、 Pdhclosequery または pdhclosequery を呼び出します。

ログファイルからの読み取り

ログファイルからのパフォーマンスデータの読み取りは、リアルタイムソースからのデータの読み取りと同じです。クエリを開いてクエリにカウンターを追加し、 Pdhcollectquerydata を呼び出してログファイルからサンプルを収集します。 Pdhcollectquerydata は、 _ _ _ ログファイルの末尾に近づいたときに、PDH データを返さなくなります。

ログファイルの各サンプルには、最初に収集されてログファイルに書き込まれたときのタイムスタンプが含まれています。 ログファイルの最初と最後のサンプルのタイムスタンプを取得するには、 PdhGetDataSourceTimeRange 関数を呼び出します。 ログから読み取ったサンプルを特定の時間範囲に制限する場合は、「 クエリの時間範囲を設定する」を参照してください。

どのパフォーマンスオブジェクトおよびカウンターがログファイルに存在するかわからない場合は、 PdhEnumObjects を呼び出してオブジェクトの一覧を確認できます。 オブジェクトを指定すると、 PdhEnumObjectItems または PdhExpandWildCardPath を呼び出して、ログファイルに格納されているオブジェクトのインスタンスとカウンターの一覧を取得できます。

PdhEnumObjectItemsを呼び出した場合は、インスタンスとカウンターの一覧を使用して、インスタンスとカウンターの可能な組み合わせごとにパスを作成します。 Pdhaddcounterを呼び出してカウンターをクエリに追加すると、指定した組み合わせがログファイルに含まれていない場合、関数は失敗します。

PdhExpandWildCardPathを使用する場合は、インスタンス名とカウンターのワイルドカードを含むパスを作成でき \ ます (object () など * ) \ * 。 オブジェクトにインスタンスが含まれていない場合、関数は PDH _ 無効パスを返し _ ます。 この場合は、 PdhExpandWildCardPath を呼び出して、オブジェクトなどのカウンタのみにワイルドカードを使用し \ \ * ます。

新しいオペレーティングシステムでは、以前のオペレーティングシステムで生成されたログファイルを読み取ることができます。ただし、Windows Vista 以降のオペレーティングシステムで作成されたログファイルは、以前のオペレーティングシステムでは読み取ることができません。

ログファイルからデータを読み取る例については、「 ログファイルからのパフォーマンスデータの読み取り」を参照してください。

複数のログファイルからの読み取り

複数のログファイルから読み取るクエリを作成する必要がある場合は、 Pdhbindinputdatasource を呼び出して、ログファイルをまとめてバインドします。 次に、"H" で終わる PDH 関数を使用する必要があります。たとえば、「 Pdhopenqueryh」と入力します。

ログファイルへの書き込み

ログファイルに書き込む前に、 Pdhopenquery を呼び出してクエリを作成し、パフォーマンスデータのソース (リアルタイムデータまたはログファイル) を指定します。 次に、クエリを実行するカウンターを追加します。

コピー先ファイルを開くには、 Pdhopenlogを呼び出します。 ログファイルを開くときにクエリを指定します。 パフォーマンスデータを収集してログファイルに書き込むには、 Pdhupdatelogを呼び出します。

カウンターデータがコンマ区切り (.csv) またはタブ区切り (.tsv) のログファイルに書き込まれていて、パスにワイルドカードインスタンスが含まれている場合、パスは展開され、パスが展開されたときに存在するインスタンスだけがログファイルに含まれます。 ただし、バイナリ (.blg) または SQL ログファイルの場合は、ログファイルにログ記録中に作成されたインスタンスが含まれるように、ワイルドカードは展開されません。

ログファイルにデータを書き込む例については、「 ログファイルへのパフォーマンスデータの書き込み」を参照してください。

ログファイルの圧縮

ログファイルを圧縮するには、 PdhComputeCounterStatistics 関数を使用します。 たとえば、ログファイルから10個のレコードを読み取り、 PdhComputeCounterStatistics を呼び出して平均値を計算した後、平均値を出力ログファイルに書き込みます。

次のトピックでは、ログファイルの使用に関する追加情報について説明します。