141 lines
5.2 KiB
C#
141 lines
5.2 KiB
C#
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: TestKernel.cs
|
|
//
|
|
//
|
|
|
|
|
|
using System;
|
|
using System.Threading;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
using Microsoft.Singularity;
|
|
using Microsoft.Singularity.V1.Services;
|
|
using Microsoft.Singularity.Eventing;
|
|
using System.Collections;
|
|
|
|
namespace Microsoft.Singularity.Eventing
|
|
{
|
|
[CLSCompliant(false)]
|
|
public class TestKernelLogging
|
|
{
|
|
|
|
[CLSCompliant(false)]
|
|
static internal bool ActiveEntryDelegate(UIntPtr sourceHandle,
|
|
int index,
|
|
EventDescriptor descriptor,
|
|
QueryBuffer entryBuffer,
|
|
ref EnumerationContext context)
|
|
{
|
|
|
|
Console.Write("{0:d5}", index);
|
|
descriptor.EnumerateFields(new QueryFieldDelegate(ActiveFieldDelegate), entryBuffer, ref context);
|
|
Console.WriteLine("");
|
|
return true;
|
|
}
|
|
|
|
static internal bool TableHeadDelegate(FieldDescriptor fieldDescriptor,
|
|
object obj,
|
|
ref EnumerationContext ctx)
|
|
{
|
|
Console.Write(" {0}", fieldDescriptor.Name);
|
|
return true;
|
|
}
|
|
|
|
static internal bool ActiveFieldDelegate(FieldDescriptor fieldDescriptor,
|
|
object obj,
|
|
ref EnumerationContext ctx)
|
|
{
|
|
if (obj != null) {
|
|
|
|
Console.Write(" {0}", obj.ToString());
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static internal bool SourceDelegate(UIntPtr sourceHandle,
|
|
UIntPtr storageHandle,
|
|
UIntPtr eventType,
|
|
UInt16 count,
|
|
string bufferName,
|
|
EventDescriptor descriptor,
|
|
ref EnumerationContext context)
|
|
{
|
|
|
|
if (descriptor != null) {
|
|
Console.WriteLine("Source: \"{0}\". {1} entries of type {2}",
|
|
bufferName, count, descriptor.EventName);
|
|
|
|
Console.Write("Index");
|
|
descriptor.EnumerateFields(new QueryFieldDelegate(TableHeadDelegate), null, ref context);
|
|
Console.WriteLine("");
|
|
Console.Write("-----");
|
|
|
|
for (int i = 0; i < descriptor.GetFieldsCount(); i++) {
|
|
Console.Write("----------");
|
|
}
|
|
Console.WriteLine("");
|
|
} else {
|
|
Console.WriteLine("Source Handle={0}, Storage={1}, type={2}, name={3}, count={4}",
|
|
sourceHandle, storageHandle, eventType, bufferName, count);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static internal bool fieldDelegate(FieldDescriptor fieldDescriptor,
|
|
object obj,
|
|
ref EnumerationContext context)
|
|
{
|
|
if ((fieldDescriptor != null) && (obj != null)) {
|
|
|
|
Console.WriteLine(" {0}:{1}:{2} = {3}",
|
|
fieldDescriptor.Offset,
|
|
fieldDescriptor.GetTypeName(),
|
|
fieldDescriptor.Name,
|
|
obj.ToString());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
static internal bool EntryDelegate(EventDescriptor currentEntry,
|
|
QueryBuffer buffer,
|
|
ref EnumerationContext context)
|
|
{
|
|
|
|
if ((currentEntry != null) && (buffer != null)) {
|
|
|
|
currentEntry.EnumerateFields(new QueryFieldDelegate(fieldDelegate), buffer, ref context);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static void ListActiveSources()
|
|
{
|
|
Controller hostController = Controller.GetLocalController();
|
|
EnumerationContext ctx = new EnumerationContext();
|
|
|
|
if ((hostController == null) || (ctx == null)) {
|
|
return;
|
|
}
|
|
|
|
hostController.EnumerateActiveSources(new QuerySourceDelegate(SourceDelegate),
|
|
new ActiveSourceEntryDelegate(ActiveEntryDelegate),
|
|
new QueryEntryDelegate(EntryDelegate),
|
|
0,
|
|
ref ctx);
|
|
}
|
|
|
|
public static void TestAllCases()
|
|
{
|
|
ListActiveSources();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|