Fungsi UMDEtwRegister (umdprovider.h)
Mendaftarkan penyedia pelacakan peristiwa. Driver harus memanggil fungsi ini sebelum melakukan panggilan apa pun untuk mencatat peristiwa.
Sintaks
void UMDEtwRegister(
PFNUMDETW_RUNDOWN CbRundown
);
Parameter
CbRundown
Penunjuk ke fungsi panggilan balik yang mengembalikan informasi tentang status driver mode pengguna saat ini.
Fungsi panggilan balik ini harus memanggil fungsi UMDEtwLogMapAllocation untuk setiap pemetaan alokasi saat ini.
Nilai kembali
Tidak ada
Keterangan
Jenis data untuk parameter CbRundown didefinisikan sebagai:
typedef void (*PFNUMDETW_RUNDOWN)();
UMDEtwRegister didefinisikan sebaris dalam Umdprovider.h sebagai:
// GUID for UMD ETW provider
// {A688EE40-D8D9-4736-B6F9-6B74935BA3B1}
static const GUID UMDEtwProviderId =
{ 0xa688ee40, 0xd8d9, 0x4736, { 0xb6, 0xf9, 0x6b, 0x74, 0x93, 0x5b, 0xa3, 0xb1 } };
// Registration handle, returned by EventRegister and passed to EventUnregister
__declspec(selectany) REGHANDLE RegHandle = NULL;
// Whether any level of logging is enabled.
__declspec(selectany) BOOLEAN Enabled = FALSE;
// Whether we are currently in a rundown
__declspec(selectany) BOOLEAN InRundown = FALSE;
// Callback to the driver when a rundown is needed
__declspec(selectany) PFNUMDETW_RUNDOWN Rundown = NULL;
FORCEINLINE void NTAPI EnableCallback(
__in LPCGUID SourceId,
__in ULONG IsEnabled,
__in UCHAR Level,
__in ULONGLONG MatchAnyKeyword,
__in ULONGLONG MatchAllKeywords,
__in_opt PEVENT_FILTER_DESCRIPTOR FilterData,
__in_opt PVOID CallbackContext
)
{
switch (IsEnabled)
{
case EVENT_CONTROL_CODE_DISABLE_PROVIDER:
Enabled = FALSE;
break;
case EVENT_CONTROL_CODE_ENABLE_PROVIDER:
Enabled = TRUE;
break;
case EVENT_CONTROL_CODE_CAPTURE_STATE:
// Temporarily enable logging during the rundown
BOOLEAN OldEnabled = Enabled;
Enabled = TRUE;
InRundown = TRUE;
Rundown();
InRundown = FALSE;
// Restore Enabled to its original state
Enabled = OldEnabled;
break;
}
}
FORCEINLINE void UMDEtwRegister(PFNUMDETW_RUNDOWN RundownCb)
{
Rundown = RundownCb;
// Register the provider
EventRegister(&UMDEtwProviderId,
EnableCallback,
NULL,
&RegHandle);
}
Fungsi EventRegister dan nilai EVENT_CONTROL_CODE_XXX dijelaskan dalam dokumentasi Peristiwa Windows .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 |
Server minimum yang didukung | Windows Server 2012 |
Target Platform | Desktop |
Header | umdprovider.h (termasuk Umdprovider.h) |