Fungsi PcwAddInstance (wdm.h)
Fungsi ini PcwAddInstance
menambahkan instans yang ditentukan dari counterset ke buffer konsumen. Sebagian besar pengembang akan menggunakan fungsi AddXxx yang dihasilkan CTRPP alih-alih memanggil fungsi ini secara langsung. Lihat Keterangan di bawah ini untuk informasi selengkapnya.
Sintaks
NTSTATUS PcwAddInstance(
[in] PPCW_BUFFER Buffer,
[in] PCUNICODE_STRING Name,
[in] ULONG Id,
[in] ULONG Count,
[in] PPCW_DATA Data
);
Parameter
[in] Buffer
Handel ke buffer yang dikelola sistem tempat instans counterset akan ditambahkan. Ketika buffer berasal dari PcwCallbackEnumerateInstances
pemberitahuan, PcwAddInstance
hanya akan merekam Nama dan Id instans. Ketika buffer berasal dari PcwCallbackCollectData
pemberitahuan, PcwAddInstance
akan merekam Nama, Id, dan Data (nilai penghitung) instans.
[in] Name
Penunjuk ke string Unicode yang berisi nama instans counterset. Ini tidak boleh NULL.
Nilai instans Name
HARUS stabil dari waktu ke waktu (instans logis yang sama harus menggunakan nilai yang sama Name
untuk semua pemanggilan panggilan balik) dan HARUS unik. Jika counterset terdaftar sebagai instans tunggal, instans Name
harus kosong (panjang 0). Jika counterset yang terdaftar sebagai multi-instans, instans Name
tidak boleh kosong. Pencocokan nama instans tidak peka huruf besar/kecil, sehingga Name
nilai tidak boleh berbeda hanya menurut kasus.
[in] Id
Nilai numerik yang menentukan Id
(pengidentifikasi) yang terkait dengan instans counterset.
Nilai instans Id
HARUS stabil dari waktu ke waktu (instans yang sama harus menggunakan nilai yang sama Id
untuk semua pemanggilan panggilan balik), harus unik (misalnya jangan gunakan 0 untuk semua instans), dan harus kurang dari 0xFFFFFFFE (jangan gunakan PCW_ANY_INSTANCE_ID
untuk instans apa pun). Jika memungkinkan, instans Id
harus bermakna (misalnya, penghitung Proses mungkin menggunakan PID sebagai Id
) alih-alih arbitrer (misalnya nomor urut).
[in] Count
Jumlah deskriptor yang disediakan dalam Data
parameter .
[in] Data
Array deskriptor untuk blok data penyedia yang berisi nilai penghitung instans ini.
Nilai kembali
PcwAddInstance
mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
STATUS_SUCCESS |
Instans berhasil ditambahkan ke buffer. |
STATUS_INVALID_BUFFER_SIZE |
Salah satu blok data penyedia terlalu kecil. Misalnya, selama panggilan ke PcwRegister, penyedia menentukan bahwa penghitung X berada di offset 100 dari blok data pertama dengan ukuran 4 byte. Jika panggilan ke PcwAddInstance menentukan bahwa blok data pertama adalah 50 byte, status kesalahan ini dikembalikan. |
Keterangan
Fungsi PcwAddInstance
harus dipanggil oleh rutinitas PCW_CALLBACK yang ditentukan penyedia ketika jenis pemberitahuan adalah PcwCallbackEnumerateInstances
atau PcwCallbackCollectData
. yang Buffer
akan digunakan berasal dari Info
parameter untuk PCW_CALLBACK
rutinitas, misalnya Info->EnumerateInstances.Buffer
atau Info->CollectData.Buffer
.
Saat dipanggil untuk PcwCallbackEnumerateInstances
pemberitahuan, PcwAddInstance
menambahkan Name
nilai dan Id
ke buffer. Saat dipanggil untuk PcwCallbackCollectData
pemberitahuan, PcwAddInstance
menambahkan Name
nilai data penghitung , Id
, dan ke buffer.
Fungsi Add*** yang dihasilkan CTRPP
Sebagian besar pengembang tidak perlu menelepon PcwAddInstance
secara langsung. Sebaliknya, mereka akan mengkompilasi manifes dengan alat CTRPP dan menggunakan fungsi Tambahkan*** dari header yang dihasilkan CTRPP. Fungsi yang dihasilkan akan terlihat seperti ini:
EXTERN_C __inline NTSTATUS
AddMyCounterset(
__in PPCW_BUFFER Buffer,
__in PCUNICODE_STRING Name,
__in ULONG Id,
__in_opt const MY_COUNTER_DATA *MyCounterData
)
{
PCW_DATA Data[1];
PAGED_CODE();
Data[0].Data = MyCounterData;
Data[0].Size = sizeof(MY_COUNTER_DATA);
return PcwAddInstance(Buffer,
Name,
Id,
1,
Data);
}
Fungsi Tambahkan yang dihasilkan CTRPP akan diberi nama AwalanTambahkanCounterset. Awalan biasanya kosong, tetapi mungkin ada jika -prefix
parameter digunakan pada baris perintah CTRPP. Counterset adalah nama counterset, seperti yang ditentukan dalam manifes. Fungsi ini akan memiliki parameter Data berdasarkan struktur yang ditentukan dalam manifes. Fungsi ini akan membungkus blok data yang disediakan pengguna ke dalam array PCW_DATA
struktur dan kemudian memanggil PcwAddInstance
.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows 7 dan versi Windows yang lebih baru. |
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |