Ruta de contador incorrecta, pdhAddCounter; monitor de rendimiento en windows

Estoy tratando de contar la cantidad de procesos en el servidor de Windows 2008 usando pdh.h.

    CONST PWSTR COUNTER_PATH = L"\\System\\Processes";
    HQUERY hQuery = NULL;
    HCOUNTER hCounter;
    PDH_STATUS pdhStatus = ERROR_SUCCESS;

    pdhStatus = PdhOpenQuery(NULL, 0, &hQuery);
    pdhStatus = PdhAddCounter(hQuery, (LPCSTR)COUNTER_PATH, 0, &hCounter);

Obtuve el nombre COUNTER_PATH de aquí, y el ejemplo se puede encontrar en aquí. Pero de alguna manera estoy consiguiendo 0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) mensaje de error en PdhAddCounter. ¿Alguien puede corregir algún error que cometí? No estoy seguro de lo que me estoy perdiendo aquí. ¿Hay algún problema con COUNTER_PATH?

preguntado el 22 de mayo de 12 a las 17:05

1 Respuestas

Estás lanzando COUNTER_PATH a una LPCSTR in PdhAddCounter que no deberías estar haciendo.

PdhAddCounterEl segundo parámetro de es un LPCTSTR que es lo mismo que CONST PWSTR.

contestado el 22 de mayo de 12 a las 17:05

Cuando lancé a LPCTSTR, todavía generaba el mismo problema. Cuando lo eliminé por completo, el compilador se quejó de que "no se puede convertir el parámetro 2 de 'const PWSTR' a 'LPCSTR'". En el ejemplo que di en la publicación, no emitieron nada en absoluto. ¿Crees que el problema tiene algo que ver con eso? - user945216

Parece que no ha habilitado Unicode. Si activa Unicode (Project Properties->Configuration Properties->General->Character Set) y retire el yeso, debería funcionar. Si desea deshabilitar Unicode, aún elimine el molde, pero cambie su primera línea a LPCSTR COUNTER_PATH = "\\System\\Processes"; - Fraser

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.