windows-nt/Source/XPSP1/NT/windows/appcompat/shims/specific/attune.cpp
2020-09-26 16:20:57 +08:00

100 lines
1.8 KiB
C++

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
Attune.cpp
Abstract:
App uses counters that are obsolete since Win2k.
App uses \System\% Total Processor Time counter instead of
\Processor(_Total)\% Processor Time counter.
This shim corrects the counter name before making a
call to PdhAddCounterA.
Notes:
This is an app specific shim.
History:
03/16/2001 a-leelat Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(Attune)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(PdhAddCounterA)
APIHOOK_ENUM_END
/*++
Hook PdhAddCounterA
--*/
PDH_FUNCTION
APIHOOK(PdhAddCounterA)(
IN HQUERY hQuery,
IN LPCSTR szFullCounterPath,
IN DWORD_PTR dwUserData,
IN HCOUNTER *phCounter
)
{
PDH_STATUS ReturnStatus = ERROR_SUCCESS;
BOOL bCorrectedPath = false;
CHAR szCorrectCounterPath[] = "\\Processor(_Total)\\% Processor Time";
CSTRING_TRY
{
//Obsolete counter Path to check for
CString szObsoleteCounterPath = "\\System\\% Total Processor Time";
//Passed in counter Path
CString szCounterPath(szFullCounterPath);
//Check to see if we have the obolsete counter passed in
if (szObsoleteCounterPath.CompareNoCase(szCounterPath.Get()) == 0)
bCorrectedPath = true;
}
CSTRING_CATCH
{
}
//Call the original API
ReturnStatus = ORIGINAL_API(PdhAddCounterA)(
hQuery,
bCorrectedPath ? szCorrectCounterPath : szFullCounterPath,
dwUserData,
phCounter);
return ReturnStatus;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(PDH.DLL, PdhAddCounterA)
HOOK_END
IMPLEMENT_SHIM_END