Códigos de error de la aplicación auxiliar de datos de rendimiento

Todas las funciones auxiliares de datos de rendimiento (PDH) devuelven un valor de tipo PDH_STATUS. Si la función se realiza correctamente, el valor devuelto es ERROR_SUCCESS. De lo contrario, la función devuelve un código de error del sistema o un código de error PDH. Para recuperar el texto de descripción del error en la aplicación, use la función FormatMessage como se muestra en el ejemplo siguiente.

#include <windows.h>
#include <stdio.h>
#include <pdhmsg.h>

void main(void)
{
    HANDLE hPdhLibrary = NULL;
    LPWSTR pMessage = NULL;
    DWORD dwErrorCode = PDH_PLA_ERROR_ALREADY_EXISTS;

    hPdhLibrary = LoadLibrary(L"pdh.dll");
    if (NULL == hPdhLibrary)
    {
        wprintf(L"LoadLibrary failed with %lu\n", GetLastError());
        return;
    }

    if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE |
                       FORMAT_MESSAGE_ALLOCATE_BUFFER |
                       FORMAT_MESSAGE_IGNORE_INSERTS,
                       hPdhLibrary,
                       dwErrorCode,
                       0,
                       (LPWSTR)&pMessage,
                       0,
                       NULL))
    {
        wprintf(L"Format message failed with 0x%x\n", GetLastError());
        return;
    }

    wprintf(L"Formatted message: %ls\n", pMessage);
    LocalFree(pMessage);
}

En el caso de las funciones de recopilación y formato de datos, es importante recordar que el valor devuelto de la función indica el éxito o error de la llamada de función y no necesariamente el de los datos del contador. Compruebe siempre el miembro CStatus del valor del contador devuelto para asegurarse de que los datos devueltos son válidos antes de usarlos. Si el valor del miembro CStatus no indica que se ha realizado correctamente, no use los datos.

En la tabla siguiente se proporciona una lista de códigos de error específicos de PDH. Estos valores se definen en el archivo de pdhmsg.h encabezado.

Código de error Descripción
0x00000000 (PDH_CSTATUS_VALID_DATA) Los datos devueltos son válidos.
0x00000001 (PDH_CSTATUS_NEW_DATA) El valor de los datos devueltos es válido y es diferente del último ejemplo.
0x800007D0 (PDH_CSTATUS_NO_MACHINE) No se puede conectar al equipo especificado o el equipo está sin conexión.
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) La instancia especificada no está presente.
0x800007D2 (PDH_MORE_DATA) Hay más datos que devolver de los que caben en el búfer proporcionado. Asigne un búfer mayor y vuelva a llamar a la función.
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) El elemento de datos se ha agregado a la consulta, pero no se ha validado ni se ha accedido a él. No hay ninguna otra información de estado sobre este elemento de datos disponible.
0x800007D4 (PDH_RETRY) Se debe reintentar la operación seleccionada.
0x800007D5 (PDH_NO_DATA) No hay datos que devolver.
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) Se detectó un contador con un valor de denominador negativo.
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) Se detectó un contador con un valor base de tiempo negativo.
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) Se detectó un contador con un valor negativo.
0x800007D9 (PDH_DIALOG_CANCELLED) El usuario canceló el cuadro de diálogo.
0x800007DA (PDH_END_OF_LOG_FILE) Se alcanzó el final del archivo de registro.
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) Se agota el tiempo de espera para que finalice el subproceso de recopilación de contadores asincrónico.
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) No se puede cambiar el origen de datos predeterminado en tiempo real. Hay sesiones de consulta en tiempo real que recopilan datos de contadores.
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) El objeto especificado no se encuentra en el sistema.
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) No se encontró el contador especificado.
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) Los datos devueltos no son válidos.
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) Una función PDH no pudo asignar suficiente memoria temporal para completar la operación. Cierre algunas aplicaciones o extienda el archivo de página y vuelva a intentar la función.
0xC0000BBC (PDH_INVALID_HANDLE) El manipulador no es un objeto PDH válido.
0xC0000BBD (PDH_INVALID_ARGUMENT) Un argumento requerido no se encuentra o es incorrecto.
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) No se encuentra la función especificada.
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) No se especificó ningún contador.
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) No se puede analizar la ruta de acceso del contador. Compruebe el formato y la sintaxis de la ruta de acceso especificada.
0xC0000BC1 (PDH_INVALID_BUFFER) El búfer pasado por el autor de la llamada no es válido.
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) Los datos solicitados son mayores que el búfer proporcionado. No se pueden devolver los datos solicitados.
0xC0000BC3 (PDH_CANNOT_CONNECT_MACHINE) No se puede conectar al equipo solicitado.
0xC0000BC4 (PDH_INVALID_PATH) No se pudo interpretar la ruta de acceso del contador especificada.
0xC0000BC5 (PDH_INVALID_INSTANCE) No se pudo leer el nombre de la instancia de la ruta de acceso del contador especificada.
0xC0000BC6 (PDH_INVALID_DATA) Los datos no son válidos.
0xC0000BC7 (PDH_NO_DIALOG_DATA) Falta el bloque de datos del cuadro de diálogo o no es válido.
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) No se puede leer el contador o el texto de ayuda del equipo especificado.
0xC0000BC9 (PDH_LOG_FILE_CREATE_ERROR) No se puede crear el archivo de registro especificado.
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) No se puede abrir el archivo de registro especificado.
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) El tipo de archivo de registro especificado no se ha instalado en este sistema.
0xC0000BCC (PDH_NO_MORE_DATA) No más datos disponibles.
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) No se encontró el registro especificado en el archivo de registro.
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) El origen de datos especificado es un archivo de registro.
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) El origen de datos especificado es la actividad actual.
0xC0000BD0 (PDH_UNABLE_READ_LOG_HEADER) No se pudo leer el encabezado del archivo de registro.
0xC0000BD1 (PDH_FILE_NOT_FOUND) No se encuentra el archivo especificado.
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) Ya hay un archivo con el nombre de archivo especificado.
0xC0000BD3 (PDH_NOT_IMPLEMENTED) No se ha implementado la función a la que se hace referencia.
0xC0000BD4 (PDH_STRING_NOT_FOUND) No se puede encontrar la cadena especificada en la lista de nombres de rendimiento y cadenas de texto de ayuda.
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) No se puede asignar a los archivos de datos de nombre del contador de rendimiento. Los datos se leerán del registro y se almacenarán localmente.
0xC0000BD6 (PDH_UNKNOWN_LOG_FORMAT) El archivo DLL de PDH no reconoce el formato del archivo de registro especificado.
0xC0000BD7 (PDH_UNKNOWN_LOGSVC_COMMAND) No se reconoce el valor de comando del servicio de registro especificado.
0xC0000BD8 (PDH_LOGSVC_QUERY_NOT_FOUND) No se encontró la consulta especificada del servicio de registro o no se pudo abrir.
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) No se pudo abrir la clave del servicio de registro de datos de rendimiento. Esto puede deberse a privilegios insuficientes o porque el servicio no se ha instalado.
0xC0000BDA (PDH_WBEM_ERROR) Error al acceder al almacén de datos WBEM.
0xC0000BDB (PDH_ACCESS_DENIED) No se puede acceder al equipo o servicio deseados. Compruebe los permisos y la autenticación del servicio de registro o la sesión de usuario interactiva con los del equipo o servicio que se está supervisando.
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) El tamaño máximo del archivo de registro especificado es demasiado pequeño para registrar los contadores seleccionados. No se registrarán datos en este archivo de registro. Especifique un conjunto más pequeño de contadores para registrar o un tamaño de archivo mayor y vuelva a intentar esta llamada.
0xC0000BDD (PDH_INVALID_DATASOURCE) No se puede conectar al nombre del origen de datos ODBC.
0xC0000BDE (PDH_INVALID_SQLDB) SQL Database no contiene un conjunto válido de tablas para Perfmon.
0xC0000BDF (PDH_NO_COUNTERS) No se encontraron contadores para este conjunto de registros de Perfmon SQL.
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) Error al llamar a SQLAllocStmt con %1.
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) Error al llamar a SQLAllocConnect con %1.
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) Error al llamar a SQLExecDirect con %1.
0xC0000BE3 (PDH_SQL_FETCH_FAILED) Error al llamar a SQLFetch con %1.
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) Error al llamar a SQLRowCount con %1.
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) Error al llamar a SQLMoreResults con %1.
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) Error de llamada a SQLConnect con %1.
0xC0000BE7 (PDH_SQL_BIND_FAILED) Error al llamar a SQLBindCol con %1.
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) No se puede conectar al servidor WMI en el equipo solicitado.
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) La colección "%1!s!" ya se está ejecutando.
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) La hora de inicio especificada es después de la hora de finalización.
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) La colección "%1!s!" no existe.
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) La hora de finalización especificada ya ha transcurrido.
0xC0000BED (PDH_PLA_ERROR_NOSTART) La colección "%1!s!" no se inició; Compruebe si hay errores en el registro de eventos de la aplicación.
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) La colección "%1!s!" ya existe.
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) Hay una discrepancia en el tipo de configuración.
0xC0000BF0 (PDH_PLA_ERROR_FILEPATH) La información especificada no se resuelve en un nombre de ruta de acceso válido.
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) El servicio "Alertas de registros & de rendimiento" no respondió.
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) La información pasada no es válida.
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) La información pasada no es válida.
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG) El nombre proporcionado es demasiado largo.
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) El formato del registro de SQL es incorrecto. El formato correcto es SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) El contador de rendimiento de la llamada PdhAddCounter ya se ha agregado en la consulta de rendimiento. Este contador se omite.
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) No se puede leer la información del contador y los datos de los archivos de registro binarios de entrada.
0xC0000BF8 (PDH_LOG_SAMPLE_TOO_SMALL) Al menos uno de los archivos de registro binarios de entrada contiene menos de dos ejemplos de datos.
0xC0000BF9 (PDH_OS_LATER_VERSION) La versión del sistema operativo en el equipo denominado %1 es posterior a la del equipo local. Esta operación no está disponible en el equipo local.
0xC0000BFA (PDH_OS_EARLIER_VERSION) %1 admite %2 o posterior. Compruebe la versión del sistema operativo en el equipo denominado %3.
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) El archivo de salida debe contener datos anteriores a los que se van a anexar.
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) Ambos archivos deben tener contadores idénticos para anexar.
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) No se puede modificar el diseño de la tabla CounterDetail en la base de datos SQL.
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) El sistema está ocupado. Se agota el tiempo de espera al recopilar datos del contador. Vuelva a intentarlo más adelante o aumente el valor del registro CollectTime .