CTRPP
Das CTRPP-Tool ist ein Vorprozessor, der das Manifest für Ihren V2-Anbieter analysiert und überprüft. Das Tool generiert .rc
Ressourcen mit den Zeichenfolgen, die von Consumern Ihres Anbieters benötigt werden, und generiert einen .h
Header mit Code, den Sie zum Bereitstellen Ihrer Zählerdaten verwenden. Sie sollten das CTRPP-Tool während des Buildvorgangs Ihres Anbieters ausführen. Sie sollten den generierten Code als Ausgangspunkt für die Entwicklung Ihres Anbieters verwenden, anstatt diesen Code selbst zu generieren.
ctrpp -o codeFile -rc rcFile [-legacy] [-MemoryRoutines] [-NotificationCallback] [-prefix prefix] [-ch symFile] [-backcompat] inputFile
Option | BESCHREIBUNG |
---|---|
inputFile |
Erforderlich: Gibt den Namen der .man Datei (XML-Manifest) an, die Ihre Leistungsindikatoren definiert. |
-ocodeFile |
Erforderlich: Gibt den Namen der Codedatei an, die .h von CTRPP generiert werden soll. Diese Datei enthält C/C++-Inlinehilfsfunktionen, die das Initialisieren und Aufheben der Initialisierung Ihres Anbieters vereinfachen. |
-rcFile |
Erforderlich: Gibt den Namen der (Ressourcendatei) an, die .rc von CTRPP generiert werden soll. Diese Datei enthält die Zeichenfolgentabelle des Anbieters. |
-chsymFile | Gibt den Namen der optionalen .h Symboldatei an, die von CTRPP generiert werden soll. Diese Datei enthält C/C++-Symbole für die Namen und GUIDs jedes Countersets im Anbieter. |
Präfix | Gibt das Präfix an, das für die Variablen und Funktionen verwendet werden soll, die in der generierten Headerdatei definiert sind. |
-NotificationCallback | Ändert die Standardsignatur der CounterInitialize-Funktion , um Parameter zum Angeben des Namens der Rückruffunktionen ControlCallback, AllocateMemory und FreeMemory einzuschließen. Dieses Argument hat die gleiche Auswirkung wie die Aufnahme des callback Attributs in das provider-Element . |
-migrateoutputFile | Statt Dateien zu .h .rc generieren, aktualisieren Sie das manifest inputFile auf die neueste Version und speichern es in outputFile. Dieser Switch kann nicht mit anderen Switches verwendet werden. Syntax: CTRPP -migrate NewFile.man OldFile.man |
-BackCompat |
Veraltet: Unterstützung für Kernelmodusanbieter wurde in Windows 7 hinzugefügt. Standardmäßig ist der vom CTRPP für Kernelmodusanbieter generierte Code mit früheren Versionen von Windows nicht kompatibel (der Treiber kann aufgrund fehlender Pcw*** APIs nicht geladen werden). Legen Sie -BackCompat fest, um die Kompatibilität mit früheren Versionen von Windows zu aktivieren. Der Treiber lädt die erforderlichen APIs dynamisch, und der generierte Code deaktiviert den Anbieter automatisch, wenn die APIs nicht verfügbar sind. |
-MemoryRoutines |
Veraltet: Schließt bei Verwendung mit dem -Legacy Switch Vorlagen für Speicherroutinen in den generierten Code ein. Andernfalls hat dieses Argument die gleiche Auswirkung wie der -NotificationCallback Switch. |
-Hinterlassenschaft |
Veraltet: Generiert *.h Dateien, *.c , *.rc und *_r.h mithilfe der Windows Vista-Codevorlagen (generiert PerfAutoInitialize und PerfAutoCleanup anstelle von CounterInitialize und CounterCleanup). Dieser Switch kann mit -MemoryRoutines und -NotificationCallback verwendet werden, kann aber nicht mit anderen Switches verwendet werden. Verwenden Sie nicht die Schalter -o oder -rc mit diesem Switch. Die generierten Dateien werden basierend auf dem Namen des Manifests benannt und in das Verzeichnis geschrieben, das das Manifest enthält. Syntax: CTRPP -legacy OldFile.man |
Das CTRPP-Tool generiert eine .h
Codedatei, eine .rc
Ressourcendatei und optional eine .h
Symboldatei.
Das CTRPP-Tool generiert eine .rc
Ressourcendatei, die die lokalisierbaren Zeichenfolgen enthält, die von Consumern der Countersets des Anbieters benötigt werden.
Wichtig
Die Ressourcen aus dieser Datei müssen in Ihre Anbieterbinärdatei eingeschlossen werden, und der vollständige Pfad zur Anbieterbinärdatei muss während der Installation des Manifests Ihres Anbieters registriert werden. Verbraucher, die die Ressourcen nicht finden und laden können, können die Gegensätze Ihres Anbieters nicht verwenden.
Die Zeichenfolgenressourcen sollten wie folgt behandelt werden:
- Der Entwickler bearbeitet die Anbietermanifestdatei (
.man
), um dasapplicationIdentity
Attribut des Anbieters auf den Namen einer Anbieterbinärdatei (.DLL, .SYS oder .EXE) festzulegen, die die Zeichenfolgenressourcen für den Anbieter enthält und als Teil der Anbieterkomponente installiert wird. - Das CTRPP-Tool liest das Anbietermanifest und generiert eine
.rc
Datei. - Das RC-Tool (Ressourcencompiler) kompiliert die Daten aus der von CTRPP generierten
.rc
Datei, um eine.res
Datei zu generieren, die die binären Ressourcen enthält. Dies kann entweder durch direktes Kompilieren der von CTRPP generierten.rc
Datei oder durch Kompilieren einer anderen.rc
Datei erfolgen, die die von CTRPP generierte.rc
Datei über eine#include
Direktive enthält. - Der Linker bettet die Daten aus der vom RC generierten
.res
Datei in die Anbieterbinärdatei ein. - Während der Installation wird die Anbieterbinärdatei auf das System des Benutzers kopiert, und das Anbietermanifest wird mithilfe des lodctr-Tools registriert. Das lodctr-Tool konvertiert das
applicationIdentity
Attribut des Anbietermanifests in einen vollständigen Pfad und zeichnet den vollständigen Pfad zur Anbieterbinärdatei in der Registrierung auf.- Wenn sich die Anbieterbinärdatei im selben Verzeichnis wie das Manifest befindet, verwenden Sie Folgendes:
lodctr.exe /m:"C:\full\manifest\path\manifest.man"
. lodctr kombiniert den angegebenen Manifestpfad mit dem Attribut des ManifestsapplicationIdentity
, um den vollständigen Pfad zu bilden. - Verwenden Sie andernfalls
lodctr.exe /m:"C:\full\manifest\path\manifest.man" "c:\full\binary\path"
. lodctr kombiniert den angegebenen binären Pfad mit dem Attribut des ManifestsapplicationIdentity
, um den vollständigen Pfad zu bilden. - Zu Diagnosezwecken können Sie den aufgezeichneten vollständigen Pfad überprüfen, indem Sie den
ApplicationIdentity
Wert des RegistrierungsschlüsselsHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\_V2Providers\{<ProviderGuid>}
überprüfen. - Wenn die Binärdatei MUI für die Lokalisierung verwendet, müssen Sie die MUI-Datei zusammen mit der Binärdatei kopieren.
- Wenn sich die Anbieterbinärdatei im selben Verzeichnis wie das Manifest befindet, verwenden Sie Folgendes:
- Während der Countersetsammlung verwendet der Consumer den aufgezeichneten vollständigen Pfad zur Anbieterbinärdatei, um die erforderlichen Zeichenfolgen aus den Ressourcen der Anbieterbinärdatei zu suchen und zu laden.
Das CTRPP-Tool generiert eine .h
C/C++-Codedatei. Wenn das Attribut des Anbietermanifests providerType
auf userMode
festgelegt ist, enthält die generierte Codedatei die folgenden Definitionen, die beim Codieren eines Benutzermodusanbieters hilfreich sind:
- Eine Anbieterinitialisierungsfunktion mit dem Namen PräfixCounterInitialize.
- Eine Anbieterbereinigungsfunktion mit dem Namen PräfixCounterCleanup.
- Eine globale Anbietervariable , die das Anbieterhandle speichert, das mit dem PräfixCounterInitialize geöffnet wird. Der Name der Variablen ist der Wert des
symbol
Attributs desprovider
Elements im Manifest. Diese Variable sollte in AufrufenPerfCreateInstance
von ,PerfDeleteInstance
und anderen APIs zum Steuern der Daten Ihres Anbieters verwendet werden. - Für jedes Counterset eine globale Gegenset-GUID-Variable mit der Gegenset-GUID. Der Name der Variablen ist der Wert des Attributs des
counterSet
symbol
Elements und das Suffix "GUID", z. B.MyCounterSetGUID
. Diese Variable sollte in AufrufenPerfCreateInstance
von ,PerfDeleteInstance
und anderen APIs zum Steuern der Daten Ihres Anbieters verwendet werden. - Für jeden Zähler ein Zählermakro mit dem Wert des Zählers
id
. Der Name des Makros ist der Wert des Attributs descounter
symbol
Elements. Dieses Makro sollte in Aufrufen vonPerfSetCounterRefValue
,PerfSetULongLongCounterValue
und anderen APIs zum Festlegen der Daten Ihres Anbieters verwendet werden.
In den Funktionsnamen bezieht sich das Präfix auf den Wert des -prefix
Befehlszeilenparameters. Wenn der -prefix
Parameter nicht verwendet wird, werden die Funktionen und benanntCounterCleanup
CounterInitialize
.
Das CTRPP-Tool generiert eine .h
C/C++-Codedatei. Wenn das Attribut des Anbietermanifests providerType
auf kernelMode
festgelegt ist, enthält die generierte Codedatei die folgenden Definitionen, die beim Codieren der Gegensätze eines Kernelmodusanbieters hilfreich sind:
- Eine Gegensetinitialisierungsfunktion mit dem Namen PräfixRegisterCounterset. Diese Funktion füllt eine RegInfo-Struktur aus, ruft dann PcwRegister auf, und legt das resultierende Gegensatzregistrierungshandle in die globale Counterset-Variable .
- Eine Gegensetbereinigungsfunktion mit dem Namen PräfixUnregisterCounterset. Diese Funktion ruft PcwUnregister für das Counterset-Registrierungshandle in der globalen Counterset-Variable auf .
- Eine instance Erstellungsfunktion mit dem Namen PräfixCreateCounterset. Diese Funktion füllt ein Array von PcwData-Strukturen aus und ruft dann PcwCreateInstance mithilfe des Counterset-Registrierungshandles in der globalen Counterset-Variablen auf.
- Eine instance Bereinigungsfunktion namens PräfixCloseCounterset. Diese Funktion ruft PcwCloseInstance auf.
- Eine instance Berichtsfunktion namens PräfixAdd Counterset to be used from the counterset callback function. Diese Funktion füllt ein Array von PcwData-Strukturen aus, und ruft dann PcwAddInstance auf.
- Windows SDK 20H1 und höher: Eine RegInfo-Initialisierungsfunktion namens PräfixInitRegistrationInformationCounterset zur Verwendung in erweiterten Szenarien. Diese Funktion füllt eine RegInfo-Struktur aus. Diese Funktion kann in Fällen verwendet werden, in denen das generierte PräfixRegisterCounterset Nicht Ihren Anforderungen entspricht, z. B. wenn Sie die Werte in der RegInfo-Struktur anpassen möchten oder wenn Sie das zurückgegebene Handle in einer anderen Variablen speichern möchten.
In den Funktionsnamen bezieht sich das Präfix auf den Wert des -prefix
Befehlszeilenparameters. Wenn der -prefix
Parameter nicht verwendet wird, haben die Funktionen kein Präfix.
Hinweis
Das generierte PräfixAdd Counterset-Funktion wird verwendet, wenn Sie einen Gegensatzrückruf haben. Das generierte Präfix"Counterset erstellen" und das Präfix"Counterset schließen" werden verwendet, wenn Sie keinen Gegensatzrückruf haben.
Wenn der - ch-Parameter in der Befehlszeile angegeben wird, generiert das CTRPP-Tool eine .h
Symboldatei. Diese Datei enthält die C/C++-Symbole für die Namen und GUIDs der einzelnen Countersets im Anbieter. Die Symbole können beim Schreiben von Programmen verwendet werden, die hartcodiert sind, um die Daten aus diesem Counterset mithilfe der PerfLib V2 Consumer-Funktionen zu nutzen.
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |