次の方法で共有


PerformanceCounterCategory.Create メソッド

定義

カスタム パフォーマンス カウンター カテゴリと 1 つ以上のカウンターをシステムに登録します。

オーバーロード

Create(String, String, String, String)
古い.
古い.
古い.

NumberOfItems32 タイプの単一のカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

Create(String, String, PerformanceCounterCategoryType, String, String)

NumberOfItems32 タイプの単一のカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

Create(String, String, CounterCreationDataCollection)
古い.
古い.
古い.

指定したカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

指定したカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

Create(String, String, String, String)

ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs

注意事項

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead. http://go.microsoft.com/fwlink/?linkid=14202

注意事項

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead. https://go.microsoft.com/fwlink/?linkid=14202

注意事項

This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.

NumberOfItems32 タイプの単一のカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::String ^ counterName, System::String ^ counterHelp);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, counterName As String, counterHelp As String) As PerformanceCounterCategory

パラメーター

categoryName
String

作成してシステムに登録するカスタム パフォーマンス カウンター カテゴリの名前。

categoryHelp
String

カスタム カテゴリの説明。

counterName
String

新しいカテゴリの一部として作成する NumberOfItems32 タイプの新しいカウンターの名前。

counterHelp
String

新しいカスタム カテゴリに関連付けるカウンターの説明。

戻り値

新しいシステム カテゴリ (パフォーマンス オブジェクト) と関連付ける PerformanceCounterCategory

属性

例外

counterNamenull または空の文字列 ("") です。

- または -

counterName で指定されているカウンターが既に存在します。

- または -

counterName に無効な構文が含まれています。 円記号 ("\") が含まれているか、長さが 80 文字を超える場合があります。

カテゴリが既にローカル コンピューター上に存在しています。

categoryNamenullです。

または

counterHelpnullです。

基になるシステム API の呼び出しに失敗しました。

管理特権を使用せずに実行されているコードがパフォーマンス カウンターの読み取りを試みました。

次のコード例では、 メソッドをPerformanceCounterCategory使用してCreate(String, String, String, String)、ヘルプ テキストを含む と をPerformanceCounter作成します。

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string categoryHelp = "";
    string counterHelp = "";
    PerformanceCounterCategory pcc;

    // Copy the supplied arguments into the local variables.
    try
    {
        categoryName = args[0];
        counterName = args[1];
        categoryHelp = args[2];
        counterHelp = args[3];
    }
    catch(Exception ex)
    {
        // Ignore the exception from non-supplied arguments.
    }

    Console.WriteLine("Category name: \"{0}\"", categoryName);
    Console.WriteLine("Category help: \"{0}\"", categoryHelp);
    Console.WriteLine("Counter name:  \"{0}\"", counterName);
    Console.WriteLine("Counter help:  \"{0}\"", counterHelp);

    // Use the Create overload that creates a single counter.
    try
    {
        pcc = PerformanceCounterCategory.Create(categoryName, categoryHelp, counterName, counterHelp);
        Console.WriteLine("Category \"{0}\" created.", pcc.CategoryName);
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to create the above category and counter:" + "\n" + ex.Message);
    }
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""
    Dim categoryHelp As String = ""
    Dim counterHelp As String = ""
    Dim pcc As PerformanceCounterCategory

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        counterName = args(1)
        categoryHelp = args(2)
        counterHelp = args(3)
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Console.WriteLine("Category name: ""{0}""", categoryName)
    Console.WriteLine("Category help: ""{0}""", categoryHelp)
    Console.WriteLine("Counter name:  ""{0}""", counterName)
    Console.WriteLine("Counter help:  ""{0}""", counterHelp)

    ' Use the Create overload that creates a single counter.
    Try
        pcc = PerformanceCounterCategory.Create( _
            categoryName, categoryHelp, counterName, counterHelp)
        Console.WriteLine("Category ""{0}"" created.", pcc.CategoryName)

    Catch ex As Exception
        Console.WriteLine( _
            "Unable to create the above category and counter:" & _
            vbCrLf & ex.Message)
    End Try
End Sub

注釈

注意

Windows Vista 以降、Windows XP Professional x64 Edition、または Windows Server 2003 の非対話型ログオン セッションからパフォーマンス カウンターを読み取る場合は、パフォーマンス モニター Users グループのメンバーであるか、管理者特権を持っている必要があります。

Windows Vista 以降のパフォーマンス カウンターにアクセスするために特権を昇格させる必要がないようにするには、自分を パフォーマンス モニター Users グループに追加します。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 パフォーマンス カウンターにアクセスするコードを実行するには、まず特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

こちらもご覧ください

適用対象

Create(String, String, PerformanceCounterCategoryType, String, String)

ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs

NumberOfItems32 タイプの単一のカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::PerformanceCounterCategoryType categoryType, System::String ^ counterName, System::String ^ counterHelp);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, string counterName, string counterHelp);
static member Create : string * string * System.Diagnostics.PerformanceCounterCategoryType * string * string -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, categoryType As PerformanceCounterCategoryType, counterName As String, counterHelp As String) As PerformanceCounterCategory

パラメーター

categoryName
String

作成してシステムに登録するカスタム パフォーマンス カウンター カテゴリの名前。

categoryHelp
String

カスタム カテゴリの説明。

categoryType
PerformanceCounterCategoryType

カテゴリが PerformanceCounterCategoryTypeMultiInstance、または SingleInstance のいずれであるかを指定する、Unknown 値の 1 つ。

counterName
String

新しいカテゴリの一部として作成する新しいカウンターの名前。

counterHelp
String

新しいカスタム カテゴリに関連付けるカウンターの説明。

戻り値

新しいシステム カテゴリ (パフォーマンス オブジェクト) と関連付ける PerformanceCounterCategory

例外

counterNamenull または空の文字列 ("") です。

- または -

counterName で指定されているカウンターが既に存在します。

- または -

counterName に無効な構文が含まれています。 円記号 ("\") が含まれているか、長さが 80 文字を超える場合があります。

カテゴリが既にローカル コンピューター上に存在しています。

categoryNamenullです。

または

counterHelpnullです。

基になるシステム API の呼び出しに失敗しました。

管理特権を使用せずに実行されているコードがパフォーマンス カウンターの読み取りを試みました。

次のコード例は、 メソッドの使用方法を Create 示しています。 この例では、カスタムの単一インスタンス パフォーマンス カウンター カテゴリを作成する方法を示します。

Console.WriteLine("Creating Inventory custom counter");
if (!PerformanceCounterCategory.Exists("Inventory"))
    PerformanceCounterCategory.Create("Inventory",
        "Truck inventory",
        PerformanceCounterCategoryType.SingleInstance,
        "Trucks", "Number of trucks on hand");
Console.WriteLine("Creating Inventory custom counter")
If Not PerformanceCounterCategory.Exists("Inventory") Then
    PerformanceCounterCategory.Create("Inventory", "Truck inventory", PerformanceCounterCategoryType.SingleInstance, "Trucks", "Number of trucks on hand")
End If

注釈

パラメーターは categoryType 、パフォーマンス カウンター カテゴリが単一インスタンスか複数インスタンスかを指定します。 既定では、カテゴリは作成時に単一インスタンスになり、別のインスタンスが追加されるとマルチインスタンスになります。 カテゴリは、アプリケーションの設定時に作成され、インスタンスは実行時に追加されます。 .NET Framework バージョン 1.0 および 1.1 では、パフォーマンス カウンター カテゴリがマルチインスタンスか単一インスタンスであるかを知る必要はありません。 .NET Framework 2.0 では、列挙を使用して、PerformanceCounterCategoryTypeパフォーマンス カウンターに複数のインスタンスを含めることができるかどうかを示します。

.NET Framework 2.0 と共にインストールされたパフォーマンス カウンター カテゴリでは、個別の共有メモリが使用され、各パフォーマンス カウンター カテゴリには独自のメモリがあります。 カテゴリ名\Performance のレジストリ キーに FileMappingSize という名前の DWORD を作成することで、個別の共有メモリのサイズ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<指定できます。> FileMappingSize 値は、カテゴリの共有メモリ サイズに設定されます。 既定のサイズは 10 進数131072です。 FileMappingSize 値が存在しない場合は、 fileMappingSize Machine.config ファイルで指定された要素の属性値 performanceCounters が使用され、構成ファイルの処理に追加のオーバーヘッドが発生します。 レジストリでファイル マッピング のサイズを設定することで、アプリケーションの起動のパフォーマンスを向上させることができます。

注意

アプリケーションの実行中ではなく、アプリケーションのインストール中に新しいパフォーマンス カウンター カテゴリを作成することを強くお勧めします。 これにより、オペレーティング システムが登録済みのパフォーマンス カウンター カテゴリの一覧を更新する時間が得られます。 リストが更新されていない場合、カテゴリの使用は失敗します。

注意

Windows Vista 以降、Windows XP Professional x64 Edition、または Windows Server 2003 の非対話型ログオン セッションからパフォーマンス カウンターを読み取る場合は、パフォーマンス モニター Users グループのメンバーであるか、管理者特権を持っている必要があります。

Windows Vista 以降のパフォーマンス カウンターにアクセスするために特権を昇格させる必要がないようにするには、自分を パフォーマンス モニター Users グループに追加します。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 パフォーマンス カウンターにアクセスするコードを実行するには、まず特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

こちらもご覧ください

適用対象

Create(String, String, CounterCreationDataCollection)

ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs

注意事項

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead. http://go.microsoft.com/fwlink/?linkid=14202

注意事項

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead. https://go.microsoft.com/fwlink/?linkid=14202

注意事項

This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.

指定したカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::CounterCreationDataCollection ^ counterData);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, counterData As CounterCreationDataCollection) As PerformanceCounterCategory

パラメーター

categoryName
String

作成してシステムに登録するカスタム パフォーマンス カウンター カテゴリの名前。

categoryHelp
String

カスタム カテゴリの説明。

counterData
CounterCreationDataCollection

新しいカテゴリの一部として作成するカウンターを指定する CounterCreationDataCollection

戻り値

新しいカスタム カテゴリ (パフォーマンス オブジェクト) と関連付ける PerformanceCounterCategory

属性

例外

counterData コレクションで指定されているカウンター名が null または空の文字列 ("") です。

- または -

counterData コレクションで指定されているカウンターが既に存在します。

- または -

counterName パラメーターの構文が無効です。 円記号 ("\") が含まれているか、長さが 80 文字を超える場合があります。

categoryName パラメーターが null です。

カテゴリが既にローカル コンピューター上に存在しています。

- または -

counterData コレクションのレイアウトが、ベース カウンターに適合していません。 カウンターのタイプが AverageCount64AverageTimer32CounterMultiTimerCounterMultiTimerInverseCounterMultiTimer100NsCounterMultiTimer100NsInverseRawFractionSampleFraction、または SampleCounter の場合は、直後にベース カウンター タイプのいずれか (AverageBaseMultiBaseRawBase、または SampleBase) が必要です。

基になるシステム API の呼び出しに失敗しました。

管理特権を使用せずに実行されているコードがパフォーマンス カウンターの読み取りを試みました。

次のコード例では、"orders" という名前の PerformanceCounterCategory オブジェクトが存在するかどうかを判断します。 存在しない場合は、2 つのパフォーマンス カウンターを PerformanceCounterCategory 含む オブジェクトを CounterCreationDataCollection 使用して オブジェクトを作成します。

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

注釈

注意

Windows Vista 以降、Windows XP Professional x64 Edition、または Windows Server 2003 の非対話型ログオン セッションからパフォーマンス カウンターを読み取るには、パフォーマンス モニター Users グループのメンバーであるか、管理者特権を持っている必要があります。

Windows Vista 以降のパフォーマンス カウンターにアクセスするために特権を昇格させる必要がないようにするには、パフォーマンス モニター Users グループに自分自身を追加します。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 パフォーマンス カウンターにアクセスするコードを実行するには、まず特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

こちらもご覧ください

適用対象

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs
ソース:
PerformanceCounterCategory.cs

指定したカウンターが含まれているカスタム パフォーマンス カウンター カテゴリをローカル コンピューターに登録します。

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::PerformanceCounterCategoryType categoryType, System::Diagnostics::CounterCreationDataCollection ^ counterData);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, System.Diagnostics.CounterCreationDataCollection counterData);
static member Create : string * string * System.Diagnostics.PerformanceCounterCategoryType * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, categoryType As PerformanceCounterCategoryType, counterData As CounterCreationDataCollection) As PerformanceCounterCategory

パラメーター

categoryName
String

作成してシステムに登録するカスタム パフォーマンス カウンター カテゴリの名前。

categoryHelp
String

カスタム カテゴリの説明。

categoryType
PerformanceCounterCategoryType

PerformanceCounterCategoryType 値のいずれか 1 つ。

counterData
CounterCreationDataCollection

新しいカテゴリの一部として作成するカウンターを指定する CounterCreationDataCollection

戻り値

新しいカスタム カテゴリ (パフォーマンス オブジェクト) と関連付ける PerformanceCounterCategory

例外

counterData コレクションで指定されているカウンター名が null または空の文字列 ("") です。

- または -

counterData コレクションで指定されているカウンターが既に存在します。

- または -

counterName に無効な構文が含まれています。 円記号 ("\") が含まれているか、長さが 80 文字を超える場合があります。

categoryNamenull です。

または

counterDatanullです。

categoryType 値が MultiInstanceSingleInstanceUnknown のいずれの値でもありません。

カテゴリが既にローカル コンピューター上に存在しています。

- または -

counterData コレクションのレイアウトが、ベース カウンターに適合していません。 カウンターのタイプが AverageCount64AverageTimer32CounterMultiTimerCounterMultiTimerInverseCounterMultiTimer100NsCounterMultiTimer100NsInverseRawFractionSampleFraction、または SampleCounter の場合は、直後にベース カウンター タイプのいずれか (AverageBaseMultiBaseRawBase、または SampleBase) が必要です。

基になるシステム API の呼び出しに失敗しました。

管理特権を使用せずに実行されているコードがパフォーマンス カウンターの読み取りを試みました。

次のコード例は、 メソッドの使用方法を Create 示しています。 この例では、1 秒あたりの注文数に対してカスタムのマルチインスタンス パフォーマンス カウンター カテゴリを作成する方法を示します。

CounterCreationData data1 = new CounterCreationData("Trucks",
    "Number of orders", PerformanceCounterType.NumberOfItems32);
CounterCreationData data2 = new CounterCreationData("Rate of sales",
    "Orders/second", PerformanceCounterType.RateOfCountsPerSecond32);
CounterCreationDataCollection ccds = new CounterCreationDataCollection();
ccds.Add(data1);
ccds.Add(data2);
Console.WriteLine("Creating Orders custom counter.");
if (!PerformanceCounterCategory.Exists("Orders"))
    PerformanceCounterCategory.Create("Orders",
        "Processed orders",
        PerformanceCounterCategoryType.MultiInstance,
        ccds);
Dim data1 As New CounterCreationData("Trucks", "Number of orders", PerformanceCounterType.NumberOfItems32)
Dim data2 As New CounterCreationData("Rate of sales", "Orders/second", PerformanceCounterType.RateOfCountsPerSecond32)
Dim ccds As New CounterCreationDataCollection()
ccds.Add(data1)
ccds.Add(data2)
Console.WriteLine("Creating Orders custom counter.")
If Not PerformanceCounterCategory.Exists("Orders") Then
    PerformanceCounterCategory.Create("Orders", "Processed orders", PerformanceCounterCategoryType.MultiInstance, ccds)
End If

注釈

パラメーターは categoryType 、パフォーマンス カウンター カテゴリが単一インスタンスかマルチインスタンスかを指定します。 既定では、カテゴリは作成時に単一インスタンスになり、別のインスタンスが追加されるとマルチインスタンスになります。 カテゴリは、アプリケーションのセットアップ時に作成され、インスタンスは実行時に追加されます。 .NET Framework バージョン 1.0 および 1.1 では、パフォーマンス カウンター カテゴリがマルチインスタンスか単一インスタンスかはわかりません。 .NET Framework 2.0 では、 列挙を使用して、PerformanceCounterCategoryTypeパフォーマンス カウンターに複数のインスタンスを含めることができるかどうかを示します。

.NET Framework 2.0 と共にインストールされたパフォーマンス カウンター カテゴリでは、個別の共有メモリが使用され、各パフォーマンス カウンター カテゴリには独自のメモリがあります。 カテゴリ名\Performance のレジストリ キーに FileMappingSize という名前の DWORD を作成することで、個別の共有メモリのサイズ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<指定できます。> FileMappingSize 値は、カテゴリの共有メモリ サイズに設定されます。 既定のサイズは 10 進数131072です。 FileMappingSize 値が存在しない場合は、 fileMappingSize Machine.config ファイルで指定された要素の属性値 performanceCounters が使用され、構成ファイルの処理に追加のオーバーヘッドが発生します。 レジストリでファイル マッピング サイズを設定することで、アプリケーションの起動のパフォーマンスを向上させることができます。

注意

アプリケーションの実行中ではなく、アプリケーションのインストール中に新しいパフォーマンス カウンター カテゴリを作成することを強くお勧めします。 これにより、オペレーティング システムが登録されているパフォーマンス カウンター カテゴリの一覧を更新する時間が得られます。 リストが更新されていない場合、カテゴリの使用は失敗します。

注意

Windows Vista 以降、Windows XP Professional x64 Edition、または Windows Server 2003 の非対話型ログオン セッションからパフォーマンス カウンターを読み取るには、パフォーマンス モニター Users グループのメンバーであるか、管理者特権を持っている必要があります。

Windows Vista 以降のパフォーマンス カウンターにアクセスするために特権を昇格させる必要がないようにするには、パフォーマンス モニター Users グループに自分自身を追加します。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 パフォーマンス カウンターにアクセスするコードを実行するには、まず特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

こちらもご覧ください

適用対象