Menambahkan Nama penghitung dan Deskripsi ke Registri

Penting

Karena keterbatasan performa dan keandalan yang signifikan, metode untuk menyediakan data penghitung kinerja yang dijelaskan topik ini dapat diubah atau tidak tersedia di masa mendatang. Sebagai gantinya, Microsoft menyarankan agar Anda menggunakan metode yang dijelaskan dalam Menyediakan Data Penghitung Menggunakan Versi 2.0 untuk membuat penghitung kinerja baru dan Anda memigrasikan penghitung kinerja yang ada untuk menggunakan metode tersebut.

Nama dan deskripsi semua objek performa V1 dan penghitungnya harus diinstal sistem. Untuk menyimpan nama dan deskripsi untuk objek dan penghitung dari penyedia V1 Anda:

  • Buat file header .h yang berisi konstanta simbolis untuk offset ke objek dan penghitung Anda.
  • Buat file inisialisasi (.INI) yang berisi string.
  • Saat menginstal komponen Anda, jalankan alat lodctr untuk menginstal nama dan deskripsi ke dalam registri.
  • Saat menghapus instalan komponen Anda, jalankan alat unlodctr untuk menghapus nama dan deskripsi dari registri.

Membuat file konstanta simbolis (.h)

Buat file header .h yang menentukan konstanta (makro) untuk offset ke objek dan penghitung yang disediakan penyedia Anda. Header .h digunakan sebagai input ke lodctr selama penginstalan penyedia Anda, dan juga dapat digunakan oleh kode C/C++ penyedia Anda.

Nilai konstanta harus berturut-turut, bahkan angka yang dimulai dengan nol. Kelompokkan konstanta menurut objek (yaitu mulai setiap grup dengan offset objek, lalu ikuti dengan offset penghitung untuk objek tersebut).

Konstanta di header menentukan urutan penambahan penghitung ke nama dan teks bantuan dalam registri. Penyedia menggunakan offset untuk menentukan objek mana yang sedang dikueri dan nilai indeks yang akan digunakan saat mengembalikan data. Untuk detailnya, lihat Menerapkan OpenPerformanceData.

Berikut ini menunjukkan contoh file konstanta simbolis, bernama CounterOffsets.h, yang digunakan dalam contoh Membuat DLL Ekstensi Performa .

#ifndef OFFSETS_H
#define OFFSETS_H

// Symbol file that defines constant values for the objects
// and counters that the provider provides. The counters should be
// grouped by object.

#define TRANSFER_OBJECT      0 // First object must be at offset 0.
#define BYTES_SENT           2 // Counters for the object follow.
#define AVAILABLE_BANDWIDTH  4 // Offsets must be even numbers.

// Not required, but for convenience in implementing the Open function:
#define LAST_TRANSFER_OBJECT_COUNTER_OFFSET  AVAILABLE_BANDWIDTH

#define PEER_OBJECT          6 // Second object must be at the next offset.
#define BYTES_SERVED         8 // Counter for the second object.

// Not required, but for convenience in implementing the Open function:
#define LAST_PEER_OBJECT_COUNTER_OFFSET  BYTES_SERVED

#endif // OFFSETS_H

Membuat file inisialisasi (.INI)

File inisialisasi (.INI) berisi string nama dan bantuan untuk setiap objek dan penghitung yang ditentukan dalam file simbol Anda. File .INI digunakan sebagai input ke lodctr selama penginstalan penyedia Anda.

File .INI harus dikodekan sebagai UTF-16LE (dengan tanda urutan byte) dan harus memiliki bagian dan kunci berikut:

[info]
drivername=ServiceKeyName
symbolfile=SymbolFile.h
trusted=(Unused)

[objects]
<symbol>_<langid>_NAME=(Unused)

[languages]
<langid>=(Unused)

[text]
<symbol>_<langid>_NAME=Name
<symbol>_<langid>_HELP=Description

[info] bagian

Bagian ini [info] berisi informasi umum tentang penyedia. Kunci bagian didefinisikan sebagai berikut:

Kunci Deskripsi
DriverName Tentukan nama kunci performa penyedia yang terletak di registri di bawah HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services kunci. Untuk informasi tentang membuat kunci ini, lihat Membuat Kunci Performa Aplikasi.
SymbolFile Tentukan file header .h yang berisi nilai simbolis objek dan penghitung penyedia Anda. Selama penginstalan (saat memanggil lodctr), file header harus berada di direktori yang sama dengan file .INI.
Terpercaya Jika Anda menyertakan kunci ini di [info] bagian , lodctr akan menambahkan nilai registri Kode Validasi Pustaka ke kunci performa Anda dengan tanda tangan biner DLL performa Anda. Ketika PERFLIB memanggil DLL Anda, itu membandingkan tanda tangan dengan DLL Anda untuk menentukan apakah DLL telah dimodifikasi. Nilai kunci Tepercaya diabaikan.

Kunci DriverName dan SymbolFile diperlukan.

Bagian [objek]

Bagian ini [objects] menyediakan daftar objek performa yang didukung penyedia. Ini digunakan untuk menentukan apakah setiap simbol dari bagian [text] merujuk objek atau penghitung.

Untuk setiap objek (counterset) yang didukung oleh penyedia Anda, tambahkan satu kunci bernama <symbol>_<langid>_NAME= ke [objects] bagian , di mana <symbol> adalah nama objek dan <langid> merupakan id bahasa dari salah satu bahasa yang didukung. Nilai diabaikan.

Penting

Bagian ini [objects] meningkatkan performa sistem. Meskipun bagian objek bersifat opsional, Anda harus selalu menyertakan bagian ini dalam file .INI Anda. Jika Anda menyertakan bagian ini, DLL performa Anda hanya dipanggil jika Anda mendukung objek yang diminta. Jika Anda tidak menyertakan bagian objek, DLL Anda dipanggil untuk setiap kueri karena sistem tidak tahu objek mana yang didukung penyedia Anda. Jika bagian objek tidak disertakan, lodctr menghasilkan pesan dalam log peristiwa aplikasi yang menyatakan bahwa file .INI tidak berisi bagian objek. Pengidentifikasi peristiwa pesan ini adalah 2000.

Bagian [bahasa]

Bagian ini [languages] menyediakan daftar pengidentifikasi bahasa dari setiap bahasa yang penyedia Anda berikan nama dan string bantuan. Semua penyedia harus mendukung 009 (bahasa Inggris).

Untuk setiap bahasa yang didukung, tambahkan satu kunci bernama <langid>=. Nilai diabaikan, tetapi untuk tujuan dokumentasi, nilai biasanya diatur ke nama bahasa yang sesuai, misalnya 009=English.

Untuk sebagian besar bahasa, Anda harus menggunakan pengidentifikasi bahasa utama. Daftar lengkap pengidentifikasi bahasa ada di file header Winnt.h, di bawah judul "Id Bahasa Utama." Konversikan nilai yang ditemukan di Winnt.h menjadi urutan 3 digit heksadesimal dengan menghapus awalan 0x dan menambahkan digit di depan 0 hingga urutannya panjangnya 3 digit. Misalnya, untuk menentukan string bahasa Inggris (0x9), gunakan 009. Untuk menentukan string Italia (0x10), gunakan 010.

Bahasa Tionghoa dan Portugis memerlukan pengidentifikasi utama dan sublanguage. Gunakan 404, 804, 416, atau 816, bukan 004 atau 016.

[teks] bagian

Bagian ini [text] menyediakan string nama dan bantuan untuk objek dan penghitung Anda.

Untuk setiap objek atau penghitung, dan untuk setiap bahasa yang didukung, Anda harus menyediakan kunci NAME (berisi nama atau string judul untuk objek atau penghitung Anda) dan Anda dapat secara opsional memberikan kunci HELP (berisi deskripsi atau string penjelasan untuk objek atau penghitung Anda). Kunci harus diberi nama <symbol>_<langid>_NAME dan <symbol>_<langid>_HELP, di mana <symbol> adalah konstanta simbolis untuk objek atau penghitung (seperti yang didefinisikan dalam konstanta simbolis file .h), dan <langid> merupakan pengidentifikasi bahasa yang digunakan untuk string ini.

Misalnya, string bahasa Inggris untuk penghitung dengan simbol MY_COUNTER akan ditentukan sebagai:

MY_COUNTER_009_NAME=My Counter
MY_COUNTER_009_HELP=Description for My Counter.

Tombol teks dapat muncul dalam urutan apa pun. String teks tidak boleh berisi karakter pemformatan seperti tab.

Contoh file INI

Berikut ini adalah contoh file inisialisasi yang digunakan dalam sampel Membuat DLL Ekstensi Performa .

[info]
drivername=MyApplication
symbolfile=CounterOffsets.h
trusted=

[objects]
TRANSFER_OBJECT_009_NAME=
PEER_OBJECT_009_NAME=

[languages]
009=English
00C=French

[text]

// English strings

TRANSFER_OBJECT_009_NAME=Transfer
TRANSFER_OBJECT_009_HELP=Provides information related to transferring files.

BYTES_SENT_009_NAME=Bytes Sent
BYTES_SENT_009_HELP=Number of bytes sent in the last transfer.

AVAILABLE_BANDWIDTH_009_NAME=Available Bandwidth
AVAILABLE_BANDWIDTH_009_HELP=Available bandwidth on the network, in bytes.

PEER_OBJECT_009_NAME=Peer
PEER_OBJECT_009_HELP=Provides information related to peer-caching.

BYTES_SERVED_009_NAME=Bytes Served
BYTES_SERVED_009_HELP=Number of bytes served from the cache.

// French strings

TRANSFER_OBJECT_00C_NAME=Transfert
TRANSFER_OBJECT_00C_HELP=Fournit des informations liées aux transferts de fichiers.

BYTES_SENT_00C_NAME=Octets Envoyés
BYTES_SENT_00C_HELP=Nombre d'octets envoyés dans le dernier transfert.

AVAILABLE_BANDWIDTH_00C_NAME=Bande Passante Disponible
AVAILABLE_BANDWIDTH_00C_HELP=Bande passante disponible sur le réseau, en octets.

PEER_OBJECT_00C_NAME=Pair
PEER_OBJECT_00C_HELP=Fournit des informations liées é mise en cache homologue.

BYTES_SERVED_00C_NAME=Octets Servis
BYTES_SERVED_00C_HELP=Le nombre d'octets servis du cache.

Menjalankan alat Lodctr

Untuk memuat nama dan string bantuan yang ditentukan dalam file .INI Anda (selama penginstalan penyedia Anda), jalankan alat lodctr dari folder yang berisi file .INI dan file header Anda. Alat ini disertakan dengan komputer. Anda harus menjalankan lodctr dengan hak istimewa yang ditingkatkan. Parameter untuk lodctr adalah jalur ke file .INI Anda. Contohnya:lodctr "C:\Program Files\MyCompany\MyProvider\MyProvider.ini"

Untuk membongkar nama dan membantu string (selama penghapusan instalasi), jalankan alat unlodctr . Anda harus menjalankan unlodctr dengan hak istimewa yang ditingkatkan. Parameter untuk unlodctr adalah DriverName penyedia Anda (nama kunci performa penyedia). Contohnya:unlodctr "MyProvider"

Sebelum menjalankan lodctr, pastikan aplikasi Anda memiliki entri di bawah kunci Layanan . Untuk detailnya, lihat Membuat Kunci Performa Aplikasi. Jika kunci tidak ada, lodctr tidak akan memperbarui registri dengan nama dan deskripsi Anda.

Sebagai alternatif untuk menjalankan lodctr, Anda dapat memanggil LoadPerfCounterTextStrings (ditentukan dalam Loadperf.h) dari program penginstalan Anda untuk memuat deskripsi nama penghitung Anda. Anda kemudian dapat memanggil UnloadPerfCounterTextStrings selama penghapusan instalasi.

Utilitas lodctr menyalin string dari file .INI ke nilai registri Penghitung dan Bantuan di bawah subkey bahasa yang sesuai. Jika subkey bahasa yang sesuai tidak ada, string untuk bahasa tersebut tidak disalin. Utilitas ini juga memperbarui nilai Penghitung Terakhir dan Bantuan Terakhir . Nama dan deskripsi penghitung kinerja disimpan di lokasi berikut di registri.

HKEY_LOCAL_MACHINE
   \SOFTWARE
      \Microsoft
         \Windows NT
            \CurrentVersion
               \Perflib
                  Last Counter = highest counter index
                  Last Help = highest help index
                  \009
                     Counters = 2 System 4 Memory...
                     Help = 3 The System Object Type...
                  \supported language, other than English
                     Counters = ...
                     Help = ...

Selain menambahkan nilai di bawah kunci PerfLib , alat lodctr juga menambahkan nilai berikut ke simpul Layanan untuk aplikasi. Dalam kebanyakan kasus, aplikasi dan penyedia akan memiliki hubungan satu-ke-satu; namun, dimungkinkan bagi penyedia untuk menyediakan data penghitung untuk beberapa aplikasi, itulah sebabnya kunci didasarkan pada aplikasi dan bukan penyedia.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Services
            \MyApplication
               \Performance
                  First Counter = lowest counter index assigned to provider
                  First Help = lowest help index assigned to provider
                  Last Counter = highest counter index assigned to provider
                  Last Help = highest help index assigned to provider
                  Object List = list of object index values if the .INI includes the [objects] section
                  Library Validation Code = if the [info] section contains a "trusted" key