PerformanceCounterCategory.Exists Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Determina si la categoría está registrada en el sistema.
Sobrecargas
Exists(String) |
Determina si la categoría está registrada en el equipo local. |
Exists(String, String) |
Determina si la categoría está registrada en el equipo especificado. |
Exists(String)
Determina si la categoría está registrada en el equipo local.
public:
static bool Exists(System::String ^ categoryName);
public static bool Exists (string categoryName);
static member Exists : string -> bool
Public Shared Function Exists (categoryName As String) As Boolean
Parámetros
- categoryName
- String
Nombre de la categoría de contador de rendimiento que se va a buscar.
Devoluciones
Es true
si la categoría está registrada; de lo contrario, es false
.
Excepciones
El parámetro categoryName
es null
.
El parámetro categoryName
es una cadena vacía ("").
Se ha producido un error en la llamada a una API del sistema subyacente.
Código que se ejecuta sin privilegios administrativos para intentar leer un contador de rendimiento.
Ejemplos
En el ejemplo de código siguiente se determina si existe un PerformanceCounterCategory objeto denominado "orders". Si no es así, crea el PerformanceCounterCategory objeto mediante un CounterCreationDataCollection objeto que contiene dos contadores de rendimiento.
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
Comentarios
El uso del Exists método puede dar lugar a una penalización de rendimiento notable, mientras que todos los contadores de rendimiento de la máquina se comprueban si hay disponibilidad. Si solo está escribiendo en un contador de rendimiento, puede evitar el búsqueda global para los contadores de rendimiento mediante la creación del contador de rendimiento cuando se instala la aplicación y suponiendo que la categoría existe al acceder al contador. No hay ninguna manera de evitar la búsqueda de contadores de rendimiento al leer de los contadores de rendimiento.
Nota
Para leer contadores de rendimiento de una sesión de inicio de sesión no interactiva en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo Usuarios de Monitor de rendimiento o tener privilegios administrativos.
Para evitar tener que elevar los privilegios para acceder a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios de Monitor de rendimiento.
En Windows Vista y versiones posteriores, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede a los contadores de rendimiento, primero debe elevar los privilegios del usuario estándar al administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.
Consulte también
Se aplica a
Exists(String, String)
Determina si la categoría está registrada en el equipo especificado.
public:
static bool Exists(System::String ^ categoryName, System::String ^ machineName);
public static bool Exists (string categoryName, string machineName);
static member Exists : string * string -> bool
Public Shared Function Exists (categoryName As String, machineName As String) As Boolean
Parámetros
- categoryName
- String
Nombre de la categoría de contador de rendimiento que se va a buscar.
- machineName
- String
Nombre del equipo en el que se va a buscar la categoría.
Devoluciones
Es true
si la categoría está registrada; de lo contrario, es false
.
Excepciones
El parámetro categoryName
es null
.
El parámetro categoryName
es una cadena vacía ("").
o bien
El parámetro machineName
no es válido.
Se ha producido un error en la llamada a una API del sistema subyacente.
No se puede encontrar la ruta de acceso a la red.
El llamador no dispone del permiso requerido.
o bien
Código que se ejecuta sin privilegios administrativos para intentar leer un contador de rendimiento.
Ejemplos
En el ejemplo siguiente se determina si existe un PerformanceCounterCategory objeto denominado Orders
. Si no existe, el ejemplo crea el PerformanceCounterCategory objeto mediante un CounterCreationDataCollection objeto que contiene dos contadores de rendimiento.
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
Comentarios
El uso del Exists método puede dar lugar a una penalización de rendimiento notable, mientras que todos los contadores de rendimiento de la máquina se comprueban si hay disponibilidad. Si solo está escribiendo en un contador de rendimiento, puede evitar el búsqueda global para los contadores de rendimiento mediante la creación del contador de rendimiento cuando se instala la aplicación y suponiendo que la categoría existe al acceder al contador. No hay ninguna manera de evitar la búsqueda de contadores de rendimiento al leer de los contadores de rendimiento.
Nota
Para leer contadores de rendimiento de una sesión de inicio de sesión no interactiva en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo Usuarios de Monitor de rendimiento o tener privilegios administrativos.
Para evitar tener que elevar los privilegios para acceder a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios de Monitor de rendimiento.
En Windows Vista y versiones posteriores, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede a los contadores de rendimiento, primero debe elevar los privilegios del usuario estándar al administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.