Função EnumerateTraceGuids (evntrace.h)
A função EnumerateTraceGuids recupera informações sobre provedores de rastreamento de eventos que estão em execução no computador.
Importante
Essa função foi substituída por EnumerateTraceGuidsEx.
Sintaxe
ULONG WMIAPI EnumerateTraceGuids(
[in, out] PTRACE_GUID_PROPERTIES *GuidPropertiesArray,
[in] ULONG PropertyArrayCount,
[out] PULONG GuidCount
);
Parâmetros
[in, out] GuidPropertiesArray
Uma matriz de ponteiros para estruturas TRACE_GUID_PROPERTIES . Cada ponteiro na matriz deve apontar para um buffer com espaço para armazenar uma estrutura de TRACE_GUID_PROPERTIES .
[in] PropertyArrayCount
Número de ponteiros na matriz GuidPropertiesArray .
[out] GuidCount
Recebe o número real de provedores de rastreamento de eventos registrados no computador.
Valor retornado
Se a função obtiver êxito, o valor retornado será ERROR_SUCCESS.
Se a função falhar, o valor retornado será um dos códigos de erro do sistema. Veja a seguir alguns erros comuns e suas causas.
ERROR_INVALID_PARAMETER
Uma das seguintes condições é verdadeira:
- PropertyArrayCount é zero
- GuidPropertiesArray é NULL
ERROR_MORE_DATA
A matriz de propriedades é muito pequena para receber informações para todos os provedores registrados (GuidCount é maior que PropertyArrayCount). A função preenche GuidPropertiesArray com o número de estruturas especificadas em PropertyArrayCount.
Comentários
Essa função retorna informações sobre provedores de rastreamento de eventos que foram iniciados (por meio de RegisterTraceGuids, EventRegister) e ainda não foram interrompidos.
Observação
Para obter informações sobre manifestos de provedor que foram registrados no sistema (ou seja, manifestos registrados via wevtutil
), use TdhEnumerateProviders.
Você pode usar a TRACE_GUID_PROPERTIES. Membro LoggerId para determinar qual sessão habilitou mais recentemente o provedor se TRACE_GUID_PROPERTIES. IsEnable é TRUE.
A lista não incluirá os provedores SystemTraceProvider.
Exemplos
O exemplo a seguir mostra como chamar essa função.
#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;
}
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | evntrace.h |
Biblioteca | Advapi32.lib |
DLL | Advapi32.dll |