Funzione EnumerateTraceGuids (evntrace.h)
La funzione EnumerateTraceGuids recupera informazioni sui provider di traccia eventi attualmente in esecuzione nel computer.
Importante
Questa funzione è stata sostituita da EnumerateTraceGuidsEx.
Sintassi
ULONG WMIAPI EnumerateTraceGuids(
[in, out] PTRACE_GUID_PROPERTIES *GuidPropertiesArray,
[in] ULONG PropertyArrayCount,
[out] PULONG GuidCount
);
Parametri
[in, out] GuidPropertiesArray
Matrice di puntatori alle strutture TRACE_GUID_PROPERTIES . Ogni puntatore nella matrice deve puntare a un buffer con spazio per archiviare una struttura TRACE_GUID_PROPERTIES .
[in] PropertyArrayCount
Numero di puntatori nella matrice GuidPropertiesArray .
[out] GuidCount
Riceve il numero effettivo di provider di traccia eventi registrati nel computer.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore di sistema. Di seguito sono riportati alcuni errori comuni e le relative cause.
ERROR_INVALID_PARAMETER
Una delle seguenti condizioni è vera:
- PropertyArrayCount è zero
- GuidPropertiesArray è NULL
ERROR_MORE_DATA
La matrice di proprietà è troppo piccola per ricevere informazioni per tutti i provider registrati (GuidCount è maggiore di PropertyArrayCount). La funzione riempie GuidPropertiesArray con il numero di strutture specificate in PropertyArrayCount.
Commenti
Questa funzione restituisce informazioni sui provider di traccia eventi avviati (tramite RegisterTraceGuids, EventRegister) e non sono ancora stati arrestati.
Nota
Per ottenere informazioni sui manifesti del provider registrati nel sistema (ad esempio manifesti registrati tramite wevtutil
), usare TdhEnumerateProviders.
È possibile usare la TRACE_GUID_PROPERTIES. Membro LoggerId per determinare quale sessione ha abilitato più di recente il provider se TRACE_GUID_PROPERTIES. IsEnable è TRUE.
L'elenco non includerà i provider SystemTraceProvider.
Esempio
Nell'esempio seguente viene illustrato come chiamare questa funzione.
#include <windows.h>
#include <evntrace.h>
#include <vector>
#include <stdio.h>
int
wmain()
{
ULONG status = 0;
try
{
ULONG guidCount;
std::vector<TRACE_GUID_PROPERTIES> guidPropValues;
std::vector<TRACE_GUID_PROPERTIES*> guidPropPointers;
// First call is just to get the actual count, so allocate a small buffer.
guidCount = 1;
// May need to retry multiple times since new providers could be added
// between calls.
for (;;)
{
ULONG const allocated = guidCount;
guidPropValues.resize(allocated);
guidPropPointers.resize(allocated);
// Initialize the pointers to point at the values.
for (ULONG i = 0; i != allocated; i += 1)
{
guidPropPointers[i] = &guidPropValues[i];
}
guidCount = 0;
status = EnumerateTraceGuids(guidPropPointers.data(), allocated, &guidCount);
if (status != ERROR_MORE_DATA)
{
guidPropValues.resize(guidCount);
break;
}
}
if (status != ERROR_SUCCESS)
{
printf("EnumerateTraceGuids error: %u\n", status);
}
else
{
printf("GuidCount = %lu\n", guidCount);
for (auto const& v : guidPropValues)
{
printf("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x - %hs\n",
v.Guid.Data1, v.Guid.Data2, v.Guid.Data3,
v.Guid.Data4[0], v.Guid.Data4[1],
v.Guid.Data4[2], v.Guid.Data4[3], v.Guid.Data4[4],
v.Guid.Data4[5], v.Guid.Data4[6], v.Guid.Data4[7],
v.IsEnable ? "Enabled" : "Disabled");
}
}
}
catch (std::bad_alloc const&)
{
printf("Out of memory!\n");
status = ERROR_OUTOFMEMORY;
}
return status;
}
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | evntrace.h |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |