Funzione UMDEtwRegister (umdprovider.h)

Registra il provider di traccia eventi. Il driver deve chiamare questa funzione prima di effettuare chiamate agli eventi di registrazione.

Sintassi

void UMDEtwRegister(
  PFNUMDETW_RUNDOWN CbRundown
);

Parametri

CbRundown

Puntatore a una funzione di callback che restituisce informazioni sullo stato corrente del driver in modalità utente.

Questa funzione di callback deve chiamare la funzione UMDEtwLogMapAllocation per ogni mapping di allocazione corrente.

Valore restituito

nessuno

Osservazioni

Il tipo di dati per il parametro CbRundown è definito come:

typedef void (*PFNUMDETW_RUNDOWN)();

UMDEtwRegister è definito inline in Umdprovider.h come:

// 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);
}

La funzione EventRegister e i valori EVENT_CONTROL_CODE_XXX sono descritti nella documentazione degli eventi di Windows .

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Desktop
Intestazione umdprovider.h (include Umdprovider.h)

Vedi anche

UMDEtwLogMapAllocation

UMDEtwUnregister