이전 "How do I get a Windows Performance Counter for the current process"문제를 해결하려고합니다. 기본적으로 저는 enumerating Process Object instances입니다. Process 개체의 목록을 가져 와서 해당 프로세스 ID를 쿼리하고 내 자신과 비교할 수 있습니다.현재 프로세스의 성능 카운터가있는 경쟁 조건
이에 기반하여 올바른 인스턴스 인덱스 (\Process(my_program#3)\<counter>
과 비슷한 것을 만들기 위해)를 사용하여 성능 카운터 경로를 만들 수 있는데, 그 쿼리를 사용하여 내가 관심있는 카운터를 쿼리 할 수 있습니다. 그러나 하나 또는 PdhAddCounter 호출 전에 my_program의 다른 인스턴스가 더 많이 종료 되었습니까? 제가 올바르게 이해한다면, 이것은 제 카운터 경로가 이제 다른 과정을 가리키거나 현재 유효하지 않음을 의미합니다. 심지어 프로세스 ID를 쿼리하는 동안 사라질 수도 있습니다 ...
카운터 핸들을 얻기 전에 카운터 경로가 유효하지 않게되는 것을 어떻게 방지합니까?
저는 기존 카운터의 경로가 변경되지 않을 것이라고 확신합니다. 인스턴스는 올 수 있고 이동하여 식별자 (따라서 경로)를 재활용하지만, 인스턴스가 살아있는 한 동일한 식별자 (따라서 경로)를 가질 것이라고 확신합니다. 이것이 사실이 아니라면 나는 충격을받을 것이다. – Luke
@ 루케 : 불행히도 경로는 유효하지 않게됩니다. 이것은 다른 인스턴스가 이미 시작되었을 때 디버거에서 프로그램을 열고 프로그램이 올바른 인스턴스 (# 1)를 결정한 다음 첫 번째 인스턴스를 수동으로 닫은 다음 다시 스테핑하여 카운터를 쿼리하는 프로그램 - 작동하지 않습니다. – villintehaspam