Aracılığıyla paylaş


CTRPP (Tüketici Oylaması)

CTRPP aracı, V2 sağlayıcınız için bildirimi ayrıştıran ve doğrulayan bir ön işlemcidir. Araç, sağlayıcınızın tüketicilerinin ihtiyaç duyduğu dizelerle kaynaklar oluşturur .rc ve sayaç verilerinizi sağlamak için kullandığınız kodu içeren bir .h üst bilgi oluşturur. Sağlayıcınızın oluşturulması sırasında CTRPP aracını çalıştırmanız gerekir. Sağlayıcınızı geliştirirken bu kodu kendiniz oluşturmaya çalışmak yerine, oluşturulan kodu bir başlangıç noktası olarak kullanmalısınız.

ctrpp -o codeFile -rc rcFile [-legacy] [-MemoryRoutines] [-NotificationCallback] [-prefix prefix] [-ch symFile] [-backcompat] inputFile

Tartışmalar

Seçenek Açıklama
inputFile Gerekli: Sayaçlarınızı tanımlayan (XML bildirimi) dosyasının adını .man belirtir.
-okod Dosyası Gerekli: CTRPP tarafından oluşturulacak kod dosyasının adını .h belirtir. Bu dosya, sağlayıcınızı başlatmayı ve başlatmayı kaldırmayı basitleştiren C/C++ satır içi yardımcı işlevlerini içerir.
-rcrc Dosyası Gerekli: CTRPP tarafından oluşturulacak (kaynak dosyasının) adını .rc belirtir. Bu dosya, sağlayıcının dize tablosunu içerecektir.
-chsymFile CTRPP tarafından oluşturulacak isteğe bağlı .h sembol dosyasının adını belirtir. Bu dosya, sağlayıcıdaki her karşı kümenin adları ve GUID'leri için C/C++ simgeleri içerir.
-öneköneki Oluşturulan üstbilgi dosyasında tanımlanan değişkenler ve işlevler için kullanılacak öneki belirtir.
-BildirimGeri Arama CounterInitialize işlevinin varsayılan imzasını, ControlCallback, AllocateMemory ve FreeMemory geri çağrı işlevlerinin adını belirtmek için parametreler içerecek şekilde değiştirir. Bu bağımsız değişken, özniteliği sağlayıcı öğesine dahil callback etmekle aynı etkiye sahiptir.
-migrateoutputFile ve .rc dosyaları oluşturmak .h yerine, inputFile bildirimini en son sürüme yükseltir ve outputFile'a kaydeder. Bu anahtar diğer anahtarlarla kullanılamaz. Kullanım: CTRPP -migrate NewFile.man OldFile.man
-Geri Uyumluluk Kaldırıl -mış: Windows 7'de çekirdek modu sağlayıcıları için destek eklendi. Varsayılan olarak, çekirdek modu sağlayıcıları için CTRPP tarafından oluşturulan kod, Windows'un önceki sürümleriyle uyumlu olmayacaktır (eksik Pcw*** API'ler nedeniyle sürücü yüklenemez). Windows'un önceki sürümleriyle uyumluluğu etkinleştirmek için ayarlayın -BackCompat . Sürücü, gerekli API'leri dinamik olarak yükler ve API'ler mevcut değilse oluşturulan kod sağlayıcıyı sessizce devre dışı bırakır.
-Hafıza Rutinleri Kaldırıl -mış: Anahtarla -Legacy birlikte kullanıldığında, oluşturulan kodda bellek rutinleri için şablonlar içerir. Aksi takdirde, bu bağımsız değişken anahtarla -NotificationCallback aynı etkiye sahiptir.
-Miras Kaldırıl -mış: , , *.rcve *_r.h Windows Vista kod şablonlarını kullanarak dosyalar *.coluşturur *.h(CounterInitialize ve CounterCleanup yerine PerfAutoInitialize ve PerfAutoCleanup oluşturur). Bu anahtar -MemoryRoutines ve -NotificationCallback ile kullanılabilir, ancak diğer anahtarlarla kullanılamaz. Bu anahtarla -o veya -rc anahtarlarını kullanmayın. Oluşturulan dosyalar, bildirimin adına göre adlandırılır ve bildirimi içeren dizine yazılır. Kullanım: CTRPP -legacy OldFile.man

Açıklamalar

CTRPP aracı bir .h kod dosyası, bir .rc kaynak dosyası oluşturur ve isteğe bağlı olarak bir .h sembol dosyası oluşturur.

Oluşturulan kaynak dosyasını kullanma

CTRPP aracı, sağlayıcının karşı kümelerinin tüketicileri tarafından ihtiyaç duyulan yerelleştirilebilir dizeleri içeren bir .rc kaynak dosyası oluşturur.

Önemli

Bu dosyadaki kaynakların sağlayıcı ikili dosyanıza dahil edilmesi ve sağlayıcı ikili dosyasının tam yolunun sağlayıcınızın bildiriminin yüklenmesi sırasında kaydedilmesi gerekir. Kaynakları bulamayan ve yükleyemeyen tüketiciler, sağlayıcınızın karşı kümelerini kullanamaz.

Dize kaynakları aşağıdaki gibi işlenmelidir:

  • Geliştirici, sağlayıcının özniteliğini, sağlayıcının dize kaynaklarını içerecek ve sağlayıcı bileşeninin bir parçası olarak yüklenecek bir sağlayıcı ikili dosyasının (.DLL, .SYS veya .EXE) adına ayarlamak applicationIdentity için sağlayıcı bildirim (.man) dosyasını düzenler.
  • CTRPP aracı, sağlayıcı bildirimini okur ve bir .rc dosya oluşturur.
  • RC (kaynak derleyicisi) aracı, ikili kaynakları içeren bir .res dosya oluşturmak için CTRPP tarafından oluşturulan .rc dosyadan verileri derler. Bu, CTRPP tarafından oluşturulan .rc dosyayı doğrudan derleyerek VEYA bir yönerge aracılığıyla CTRPP tarafından oluşturulan .rc dosyayı içeren başka bir .rc#include dosyayı derleyerek yapılabilir.
  • Bağlayıcı, RC tarafından oluşturulan .res dosyadaki verileri sağlayıcı ikili dosyasına katıştırır.
  • Yükleme sırasında, sağlayıcı ikili dosyası kullanıcının sistemine kopyalanır ve sağlayıcı bildirimi lodctr aracı kullanılarak kaydedilir. lodctr aracı, sağlayıcı bildiriminin özniteliğini tam yola dönüştürür applicationIdentity ve kayıt defterindeki sağlayıcı ikili dosyasının tam yolunu kaydeder.
    • Sağlayıcı ikili dosyası bildirimle aynı dizindeyse şunu kullanın: lodctr.exe /m:"C:\full\manifest\path\manifest.man". Lodctr, tam yolu oluşturmak için belirtilen bildirim yolunu bildirimin applicationIdentity özniteliğiyle birleştirir.
    • Aksi takdirde lodctr.exe /m:"C:\full\manifest\path\manifest.man" "c:\full\binary\path"kullanın. Lodctr, tam yolu oluşturmak için belirtilen ikili yolu bildirimin applicationIdentity özniteliğiyle birleştirir.
    • Tanılama amacıyla, kayıt defteri anahtarının HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\_V2Providers\{<ProviderGuid>}değerini kontrol ApplicationIdentity ederek kaydedilen tam yolu inceleyebilirsiniz.
    • İkili dosya yerelleştirme için MUI kullanıyorsa, MUI dosyasını ikili dosyayla birlikte kopyaladığınızdan emin olun.
  • Sayaç toplama sırasında, tüketici, sağlayıcı ikili dosyasının kaynaklarından gerekli dizeleri bulmak ve yüklemek için sağlayıcı ikili dosyasının kaydedilen tam yolunu kullanır.

Oluşturulan kod dosyasını bir kullanıcı modu sağlayıcısında kullanma

CTRPP aracı bir .h C/C++ kod dosyası oluşturacaktır. Sağlayıcı bildiriminin providerType özniteliği olarak userModeayarlanırsa, oluşturulan kod dosyası, kullanıcı modu sağlayıcısını kodlamaya yardımcı olan aşağıdaki tanımları içerir:

  • n CounterInitialize öneki adlı sağlayıcı başlatma işlevi.
  • CounterCleanup öneki adlı bir sağlayıcı temizleme işlevi.
  • CounterInitialize öneki işlevi tarafından açılan sağlayıcı tanıtıcısını depolayan bir genel sağlayıcı değişkeni. Değişkenin adı, bildirimdeki öğenin özniteliğinin provider değeridirsymbol. Bu değişken, sağlayıcınızın verilerini denetlemek için , PerfDeleteInstanceve diğer API'lere PerfCreateInstanceyapılan çağrılarda kullanılmalıdır.
  • Her sayaç kümesi için, karşı küme GUID'sine sahip genel bir karşı kümeGUID değişkeni. Değişkenin adı, öğenin özniteliğinin symbol değeri counterSet artı "GUID" sonekidir, ör. MyCounterSetGUID Bu değişken, sağlayıcınızın verilerini denetlemek için , PerfDeleteInstanceve diğer API'lere PerfCreateInstanceyapılan çağrılarda kullanılmalıdır.
  • Her sayaç için, sayacın id değerini içeren bir sayaç makrosu. Makronun adı, öğenin özniteliğinin countersymbol değeridir. Bu makro, sağlayıcınızın verilerini ayarlamak için , PerfSetULongLongCounterValueve diğer API'lere PerfSetCounterRefValueyapılan çağrılarda kullanılmalıdır.

İşlev adlarında önek , komut satırı parametresinin değerini ifade eder -prefix . -prefix Parametre kullanılmazsa, fonksiyonlar ve CounterCleanupolarak adlandırılırCounterInitialize.

Oluşturulan kod dosyasını bir çekirdek modu sağlayıcısında kullanma

CTRPP aracı bir .h C/C++ kod dosyası oluşturacaktır. Sağlayıcı bildiriminin providerType özniteliği olarak kernelModeayarlanırsa, oluşturulan kod dosyası, çekirdek modu sağlayıcısının karşı kümelerini kodlamaya yardımcı olan aşağıdaki tanımları içerir:

  • RegisterCountersetöneki adlı bir karşı küme başlatma işlevi. Bu işlev bir RegInfo yapısını doldurur ve ardından PcwRegister'ı çağırır ve sonuçta elde edilen karşı küme kayıt tanıtıcısını genel Karşı Küme değişkenine yerleştirir.
  • UnregisterCountersetöneki adlı bir karşı küme temizleme işlevi. Bu işlev, genel Counterset değişkenindeki karşı küme kayıt tanıtıcısında PcwUnregister'ı çağırır.
  • prefixCreateCounterset adlı bir örnek oluşturma işlevi. Bu işlev, bir dizi PcwData yapısını doldurur ve ardından genel Counterset değişkenindeki counterset kayıt tanıtıcısını kullanarak PcwCreateInstance'ı çağırır.
  • CloseCountersetöneki adlı bir örnek temizleme işlevi. Bu işlev PcwCloseInstance'ı çağırır.
  • Karşı küme geri çağırma işlevinden kullanılacak KarşıKüme Ekleönekiadlı bir örnek raporlama işlevi. Bu işlev, bir dizi PcwData yapısını doldurur ve ardından PcwAddInstance'ı çağırır.
  • Windows SDK 20H1 ve üzeri: Gelişmiş senaryolarda kullanılmak üzere prefixInitRegistrationInformationCounterset adlı bir RegInfo başlatma işlevi. Bu işlev bir RegInfo yapısını doldurur. Bu işlev, oluşturulan RegisterCountersetönekinin gereksinimlerinizi karşılamadığı durumlarda, örneğin RegInfo yapısındaki değerleri özelleştirmek istediğinizde veya döndürülen tanıtıcıyı başka bir değişkende saklamak istediğinizde kullanılabilir.

İşlev adlarında önek , komut satırı parametresinin değerini ifade eder -prefix . -prefix Parametre kullanılmazsa, işlevlerin öneki olmaz.

Uyarı

Oluşturulan Karşı Küme Ekleönekiişlevi, bir karşı küme geri aramanız olduğunda kullanılır. Oluşturulan Karşı Küme Oluşturöneki ve Karşı Kümeyi Kapatöneki işlevleri, bir karşı küme geri aramanız olmadığında kullanılır.

Oluşturulan sembol dosyasını kullanma

Komut satırında -ch parametresi belirtilirse, CTRPP aracı bir .h sembol dosyası oluşturur. Bu dosya, sağlayıcıdaki her sayaç kümesinin adları ve GUID'leri için C/C++ simgelerini içerir. Semboller, PerfLib V2 Tüketici işlevleri kullanılarak bu karşı kümedeki verileri kullanmak için sabit kodlanmış programlar yazarken kullanılabilir.

Gereksinimler

Gereksinim Değer
Desteklenen en düşük düzeydeki istemci Windows Vista [yalnızca masaüstü uygulamaları]
Desteklenen en düşük sunucu Windows Server 2008 [yalnızca masaüstü uygulamaları]