PdhExpandCounterPathA 関数 (pdh.h)
カウンター パス内のワイルドカード文字列と一致するカウンターとカウンターのインスタンスについて、指定されたコンピューター (または指定されていない場合はローカル コンピューター) を調べます。
構文
PDH_FUNCTION PdhExpandCounterPathA(
[in] LPCSTR szWildCardPath,
[out] PZZSTR mszExpandedPathList,
[in, out] LPDWORD pcchPathListLength
);
パラメーター
[in] szWildCardPath
展開するカウンター パスを含む null-terminated 文字列を
[out] mszExpandedPathList
szWildCardPathのワイルドカード指定に一致する展開されたカウンター パスの一覧
[in, out] pcchPathListLength
mszExpandedPathList バッファーのサイズ (TCHAR)。 入力時に 0 の場合、関数はPDH_MORE_DATAを返し、このパラメーターを必要なバッファー サイズに設定します。 バッファーが必要なサイズより大きい場合、関数はこのパラメーターを使用したバッファーの実際のサイズに設定します。 入力で指定したサイズが 0 より大きく、必要なサイズより小さい場合は、返されたサイズに依存してバッファーを再割り当てしないでください。
戻り値
関数が成功すると、ERROR_SUCCESSが返されます。
関数が失敗した場合、戻り値は システム エラー コード または PDH エラー コードです。
リターン コード | 形容 |
---|---|
|
mszExpandedPathList バッファー |
|
パラメーターが無効です。 たとえば、一部のリリースでは、入力で指定されたサイズが 0 より大きく、必要なサイズより小さい場合、このエラーが発生する可能性があります。 |
|
この関数をサポートするためにメモリを割り当てることができません。 |
備考
この関数を 2 回呼び出し、必要なバッファー サイズを取得する場合は 2 回 (mszExpandedPathList
一般的なカウンター パスの形式は次のとおりです。
\computer\object(parent/instance#index)\counter
カウンター パスの親、インスタンス、インデックス、およびカウンター コンポーネントには、有効な名前またはワイルドカード文字を含めることがあります。 コンピューター、親、インスタンス、インデックスのコンポーネントは、すべてのカウンターに必要なわけではありません。
使用する必要があるカウンター パスは、カウンター自体によって決まります。 たとえば、LogicalDisk オブジェクトにはインスタンス インデックスがあるため、#index またはワイルドカードを指定する必要があります。 そのため、次の形式を使用できます。
\LogicalDisk(/#*)*
これに対し、Process オブジェクトにはインスタンス インデックスは必要ありません。 そのため、次の形式を使用できます。
\Process(*)\ID Process
使用できる形式の一覧を次に示します。
- \\computer\object(parent/instance#index)\counter
- \\computer\object(parent/instance)\counter
- \\computer\object(instance#index)\counter
- \\computer\object(instance)\counter
- \\computer\object\counter
- \object(parent/instance#index)\counter
- \object(parent/instance)\counter
- \object(instance#index)\counter
- \object(instance)\counter
- \object\counter
インスタンス名にワイルドカード文字が指定されている場合、指定したインデックスに対応するすべてのインスタンス名がワイルドカード文字と一致する場合、指定したオブジェクトと親オブジェクトのすべてのインスタンスが返されます。
カウンター名にワイルドカード文字が指定されている場合は、指定したオブジェクトのすべてのカウンターが返されます。
部分的なカウンター パス文字列の一致 ("pro*" など) はサポートされていません。
例
次の例では、この関数の方法を示します。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <pdh.h>
#include <pdhmsg.h>
#pragma comment(lib, "pdh.lib")
CONST PWSTR WILDCARD_PATH = L"\\Processor(*)\\*";
void wmain(void)
{
PDH_STATUS Status;
PWSTR EndOfPaths;
PWSTR Paths = NULL;
DWORD BufferSize = 0;
Status = PdhExpandCounterPath(WILDCARD_PATH, Paths, &BufferSize);
while (Status == PDH_MORE_DATA)
{
Paths = (PWSTR)malloc(BufferSize * sizeof(WCHAR));
Status = PdhExpandCounterPath(WILDCARD_PATH, Paths, &BufferSize);
}
if (Status != ERROR_SUCCESS)
{
wprintf(L"\nPdhExpandCounterPath failed with status 0x%x", Status);
goto Cleanup;
}
if (Paths == NULL)
{
wprintf(L"\nThe counter path %s cannot be expanded.", WILDCARD_PATH);
goto Cleanup;
}
EndOfPaths = Paths + BufferSize;
// On Vista and later operating systems, the buffer is terminated with two
// null-terminator characters; however, on earlier systems, the buffer is
// not terminated with two null-terminator characters. This covers both cases.
for (PWSTR p = Paths; ((p != EndOfPaths) && (*p != L'\0')); p += wcslen(p) + 1)
{
wprintf(L"\n%s", p);
}
Cleanup:
if (Paths)
{
free(Paths);
}
}
手記
pdh.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして PdhExpandCounterPath を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | pdh.h |
ライブラリ | Pdh.lib |
DLL | Pdh.dll |
関連項目
PdhExpandWildCardPath を
PdhMakeCounterPath の