I. Sur quelle technologie est basée la nouvelle plate-forme de compteur de performance de Windows ?▲
Les nouveaux compteurs de performances de Windows sont basés sur Event Tracing for Windows (http://msdn.microsoft.com/fr-fr/library/aa363668.aspx). Ils fournissent de meilleures performances et une meilleure fiabilité, en permettant une collecte de données et de rapports, plus rapides, avec moins de consommation mémoire, tout en évitant l'enregistrement dans le registre Windows et le partage de mémoire.
Les développeurs n'ont plus besoin d'écrire et d'enregistrer des Dll pour ajouter à leurs applications des compteurs de performance. En fait, ils n'ont plus besoin d'écrire de code du tout. À la place, ils créent des fichiers manifestes au format XML, qui décrivent les compteurs, et avec l'outil CTRPP.EXE, ils créent les coquilles C, qu'ils peuvent alors intégrer à leurs applications.
Le code généré par CTRPP.EXE, appelle directement les APIs PerfLib V 2.0 pour enregistrer les compteurs.
<instrumentationManifest>
<instrumentation>
<Counters>
<Provider
callback
=
"custom"
providerName
=
"FournisseurSimpleDeCompteurs"
applicationIdentity
=
"TestPerfLibV2.exe"
providerType
=
"userMode"
providerGuid
=
"{A64503B4-43DD-430d-8EFD-9DB77DBF0D17}"
>
<counterSet
guid
=
"{8B52B3AC-B74C-4772-82E3-E6A114AA3688}"
uri
=
"EV.Compteurs.TestSimple"
name
=
".À Test de compteurs"
description
=
"Test de création de compteurs avec l'architecture V 2.0"
instances
=
"single"
>
<counter
id
=
"1"
uri
=
"EV.Compteurs.TestSimple.Compteur1"
name
=
"Compteur1"
type
=
"perf_counter_rawcount"
detailLevel
=
"standard"
description
=
"Ceci est un test de compteur simple"
defaultScale
=
"-1"
>
</counter>
</counterSet>
</Provider>
</Counters>
</instrumentation >
</instrumentationManifest>
ULONG PerfAutoInitialize
(
void
)
{
ULONG Status =
ERROR_SUCCESS;
Status =
PerfStartProvider
(
(
LPGUID) &
ProviderGuid_TestPerfLibV2_1,
(
PERFLIBREQUEST) ControlCallback_TestPerfLibV2_1,
&
hDataSource_TestPerfLibV2_1);
if
(
Status !=
ERROR_SUCCESS) {
goto
Cleanup;
}
Status =
PerfSetCounterSetInfo
(
hDataSource_TestPerfLibV2_1,
(
PPERF_COUNTERSET_INFO) &
CtrSet_TestPerfLibV2_1_1,
dwCtrSet_TestPerfLibV2_1_1);
if
(
Status !=
ERROR_SUCCESS) {
goto
Cleanup;
}
Cleanup:
if
(
Status !=
ERROR_SUCCESS) {
PerfStopProvider
(
hDataSource_TestPerfLibV2_1);
}
return
Status;
}
Pour plus d'infos
- Pour l'article complet, suivez le guide : http://msdn.microsoft.com/fr-fr/visualc/bb979611
- MSDN : http://msdn.microsoft.com/fr-fr/windows/default.aspx
- Le coach Windows 7 : http://msdn.microsoft.com/fr-fr/windows/msdn.coach.windows7
- Kit de développement pour Windows 7 : http://msdn.microsoft.com/fr-fr/windows/gg398052.aspx