Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo strumento CTRPP è un preprocessore che analizza e convalida il manifesto per il provider V2. Lo strumento genera .rc risorse con le stringhe necessarie ai consumer del provider e genera un'intestazione .h con il codice usato per fornire i dati del contatore. È consigliabile eseguire lo strumento CTRPP durante la compilazione del provider. È consigliabile utilizzare il codice generato come punto di partenza durante lo sviluppo del provider anziché provare a generare questo codice manualmente.
ctrpp -o codeFile -rc rcFile [-legacy] [-MemoryRoutines] [-NotificationCallback] [-prefix prefix] [-ch symFile] [-backcompat] inputFile
Argomenti
| Opzione | Descrizione |
|---|---|
| file di input |
Obbligatorio: Specifica il nome del .man file (manifesto XML) che definisce i contatori. |
| -ocodiceFile |
Obbligatorio: Specifica il nome del file di .h codice che deve essere generato da CTRPP. Questo file conterrà funzioni helper inline C/C++ che semplificano l'inizializzazione e l'annullamento dell'inizializzazione del provider. |
| -rcrcFile |
Obbligatorio: Specifica il nome del file di .rc risorse che deve essere generato da CTRPP. Questo file conterrà la tabella delle stringhe del provider. |
| -chsymFile | Specifica il nome del file di simboli facoltativo .h che deve essere generato da CTRPP. Questo file conterrà i simboli C/C++ per i nomi e i GUID di ogni insieme di contatori nel provider. |
| -prefissoprefisso | Specifica il prefisso da utilizzare per le variabili e le funzioni definite nel file di intestazione generato. |
| -NotificaCallback | Modifica la firma predefinita della funzione CounterInitialize per includere i parametri per specificare il nome delle funzioni di callback ControlCallback, AllocateMemory e FreeMemory . Questo argomento ha lo stesso effetto dell'inclusione dell'attributo callback nell'elemento provider . |
| -migrareoutputFile | Invece di generare .h e .rc file, aggiorna il manifesto inputFile alla versione più recente e lo salva in outputFile. Questo interruttore non può essere utilizzato con altri interruttori. Utilizzo: CTRPP -migrate NewFile.man OldFile.man |
| -Indietro Compat |
Deprecato: In Windows 7 è stato aggiunto il supporto per i provider in modalità kernel. Per impostazione predefinita, il codice generato da CTRPP per i provider in modalità kernel non sarà compatibile con le versioni precedenti di Windows (il driver non verrà caricato a causa di API mancanti Pcw*** ). Impostare -BackCompat per abilitare la compatibilità con le versioni precedenti di Windows. Il driver caricherà dinamicamente le API necessarie e il codice generato disabiliterà automaticamente il provider se le API non sono disponibili. |
| -Routine di memoria |
Deprecato: Se utilizzato con l'opzione -Legacy , include modelli per le routine di memoria nel codice generato. In caso contrario, questo argomento ha lo stesso effetto dell'interruttore -NotificationCallback . |
| -Eredità |
Deprecato: Genera *.h, *.c, *.rc, e i *_r.h file utilizzando i modelli di codice di Windows Vista (genera PerfAutoInitialize e PerfAutoCleanup anziché CounterInitialize e CounterCleanup). Questa opzione può essere utilizzata con -MemoryRoutines e -NotificationCallback , ma non può essere utilizzata con altre opzioni. Non utilizzare gli interruttori -oo -rc con questo interruttore. I file generati verranno denominati in base al nome del manifesto e verranno scritti nella directory che conteneva il manifesto. Utilizzo: CTRPP -legacy OldFile.man |
Osservazioni:
Lo strumento CTRPP genera un file di codice, un .h file di .rc risorse e, facoltativamente, un file di .h simboli.
Utilizzo del file di risorse generato
Lo strumento CTRPP genererà un file di .rc risorse contenente le stringhe localizzabili necessarie per i consumer dei contatori del provider.
Importante
Le risorse di questo file devono essere incluse nel file binario del provider e il percorso completo del file binario del provider deve essere registrato durante l'installazione del manifesto del provider. I consumer che non sono in grado di individuare e caricare le risorse non saranno in grado di utilizzare i contatori del provider.
Le risorse stringa devono essere gestite come segue:
- Lo sviluppatore modifica il file manifest (
.man) del provider per impostare l'attributoapplicationIdentitydel provider sul nome di un file binario del provider (.DLL, .SYS o .EXE) che conterrà le risorse stringa per il provider e verrà installato come parte del componente del provider. - Lo strumento CTRPP legge il manifesto del provider e genera un
.rcfile. - Lo strumento RC (resource compiler) compila i dati dal file generato
.rcda CTRPP per generare un.resfile contenente le risorse binarie. Questa operazione può essere eseguita compilando direttamente il file generato.rcda CTRPP OPPURE compilando un altro.rcfile che include il file generato da.rcCTRPP tramite una#includedirettiva. - Il linker incorpora i dati del file generato
.resda RC nel file binario del provider. - Durante l'installazione, il file binario del provider viene copiato nel sistema dell'utente e il manifesto del provider viene registrato utilizzando lo strumento lodctr. Lo strumento lodctr converte l'attributo
applicationIdentitydel manifesto del provider in un percorso completo e registra il percorso completo del file binario del provider nel Registro di sistema.- Se il file binario del provider si trova nella stessa directory del manifesto, utilizzare:
lodctr.exe /m:"C:\full\manifest\path\manifest.man". lodctr combinerà il percorso del manifesto specificato con l'attributo del manifestoapplicationIdentityper formare il percorso completo. - In caso contrario, usare
lodctr.exe /m:"C:\full\manifest\path\manifest.man" "c:\full\binary\path". lodctr combinerà il percorso binario specificato con l'attributo del manifestoapplicationIdentityper formare il percorso completo. - A scopo diagnostico, è possibile ispezionare il percorso completo registrato controllando il
ApplicationIdentityvalore della chiaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\_V2Providers\{<ProviderGuid>}del Registro di sistema. - Se il file binario utilizza MUI per la localizzazione, assicurarsi di copiare il file MUI insieme al file binario.
- Se il file binario del provider si trova nella stessa directory del manifesto, utilizzare:
- Durante la raccolta dei counterset, il consumer utilizza il percorso completo registrato per il file binario del provider per individuare e caricare le stringhe necessarie dalle risorse del file binario del provider.
Utilizzo del file di codice generato in un provider in modalità utente
Lo strumento CTRPP genererà un file di .h codice C/C++. Se l'attributo del manifesto del providerType provider è impostato su userMode, il file di codice generato conterrà le definizioni seguenti utili per la codifica di un provider in modalità utente:
- n funzione di inizializzazione del provider denominata prefissoCounterInitialize.
- Una funzione di pulizia del provider denominata prefissoCounterCleanup.
- Variabile del provider globale che archivia l'handle del provider aperto dalla funzione CounterInitialize del prefisso. Il nome della variabile è il valore dell'attributo
symboldell'elementoprovidernel manifesto. Questa variabile deve essere utilizzata nelle chiamate aPerfCreateInstance,PerfDeleteInstance, e in altre API per il controllo dei dati del provider. - Per ogni insieme di contatori, una variabile GUID di un insieme di contatori globale con il GUID di un insieme di contatori. Il nome della variabile è il valore dell'attributo dell'elemento
counterSetsymbolpiù il suffisso "GUID", ad esempioMyCounterSetGUID. Questa variabile deve essere utilizzata nelle chiamate aPerfCreateInstance,PerfDeleteInstance, e in altre API per il controllo dei dati del provider. - Per ogni contatore, una macro del
idcontatore con il valore del contatore. Il nome della macro è il valore dell'attributocounterdell'elementosymbol. Questa macro deve essere utilizzata nelle chiamate aPerfSetCounterRefValue,PerfSetULongLongCounterValue, e in altre API per l'impostazione dei dati del provider.
Nei nomi delle funzioni, il prefisso si riferisce al valore del parametro della riga di -prefix comando. Se il -prefix parametro non viene utilizzato, le funzioni saranno denominate CounterInitialize e CounterCleanup.
Utilizzo del file di codice generato in un provider in modalità kernel
Lo strumento CTRPP genererà un file di .h codice C/C++. Se l'attributo del manifesto del providerType provider è impostato su kernelMode, il file di codice generato conterrà le definizioni seguenti utili per la codifica dei counterset di un provider in modalità kernel:
- Funzione di inizializzazione del counterset denominata prefissoRegister Counterset. Questa funzione compila una struttura RegInfo , quindi richiama PcwRegister, inserendo l'handle di registrazione del counterset risultante nella variabile globale Counterset .
- Una funzione di pulizia del counterset denominata prefissoUnregister Counterset. Questa funzione richiama PcwUnregister sull'handle di registrazione del counterset nella variabile globale Counterset .
- Una funzione di creazione di istanze denominata prefixCreateCounterset. Questa funzione compila una matrice di strutture PcwData , quindi richiama PcwCreateInstance utilizzando l'handle di registrazione counterset nella variabile globale Counterset .
- Una funzione di pulizia dell'istanza denominata prefixClose Counterset. Questa funzione richiama PcwCloseInstance.
- Una funzione di segnalazione dell'istanza denominata prefissoAggiungicontroinsieme da utilizzare dalla funzione di callback del controinsieme. Questa funzione compila una matrice di strutture PcwData , quindi richiama PcwAddInstance.
- Windows SDK 20H1 e versioni successive: Funzione di inizializzazione RegInfo denominata prefixInitRegistrationInformationCounterset per l'uso in scenari avanzati. Questa funzione compila una struttura RegInfo . Questa funzione può essere utilizzata nei casi in cui il prefissogeneratoRegister Counterset non soddisfa le proprie esigenze, ad esempio quando si desidera personalizzare i valori nella struttura RegInfo o quando si desidera memorizzare l'handle restituito in un'altra variabile.
Nei nomi delle funzioni, il prefisso si riferisce al valore del parametro della riga di -prefix comando. Se il -prefix parametro non viene utilizzato, le funzioni non avranno alcun prefisso.
Annotazioni
La funzione AddCounterset del prefisso generata viene utilizzata quando si dispone di un callback del counterset. Le funzioni generate per creareun controinsieme e per chiudere uninsieme di controinsieme vengono utilizzate quando non si dispone di un callback per insieme di controgruppi.
Utilizzo del file di simboli generato
Se il parametro -ch viene specificato nella riga di comando, lo strumento CTRPP genererà un file di .h simboli. Questo file contiene i simboli C/C++ per i nomi e i GUID di ogni insieme di contatori nel provider. I simboli possono essere utilizzati durante la scrittura di programmi hardcoded per l'utilizzo dei dati di questo insieme di contatori utilizzando le funzioni consumer PerfLib V2.
Requisiti
| Requisito | Valore |
|---|---|
| Client minimo supportato | Windows Vista [solo app desktop] |
| Server minimo supportato | Windows Server 2008 [solo app desktop] |