1 WCHAR16 bufferName[] = L"MAIN"; // let's read the buffer called 'MAIN'. Should be available on most targets.
2 MlpiTraceMessage messages[150]; // let's read 150 messages
3 ULLONG oldestIndex = 0;
4 ULLONG newestIndex = 0;
6 // read message index of the newest and oldest available message in the buffer.
7 // We use this information to calculate how many messages are available and to
8 // read the 150 latest messages later on.
9 MLPIRESULT result = mlpiTraceGetOldestMessageIndex(connection, bufferName, &oldestIndex);
10 if (MLPI_FAILED(result)) {
11 printf("\ncall of MLPI function failed with 0x%08x!", result);
14 result = mlpiTraceGetNewestMessageIndex(connection, bufferName, &newestIndex);
15 if (MLPI_FAILED(result)) {
16 printf("\ncall of MLPI function failed with 0x%08x!", result);
20 ULLONG numMessages = newestIndex-oldestIndex;
21 printf("\nFound %d messages in buffer %s\n", (ULONG)numMessages, W2A16(bufferName));
22 if (numMessages == 0) {
23 printf("\n->currently no messages to read :-( (tip: enable some modules!)");
26 // limit to array size
27 if (numMessages > _countof(messages)) {
28 numMessages = _countof(messages);
33 // now read the buffer to our array
34 ULONG numMessagesReturned = 0;
35 result = mlpiTraceReadBuffer(connection, bufferName, newestIndex, messages, numMessages, &numMessagesReturned);
36 if (MLPI_FAILED(result)) {
37 printf("\ncall of MLPI function failed with 0x%08x!", result);
41 // print all messages to console.
42 // messages in the array are sorted from newest to oldest.
43 // Therefore, inverse the array when printing to console to get newest message
44 // printed last and to read output from top to bottom (oldest to newest).
45 printf("\n Filename | Line | Module | Type | Message ");
46 printf("\n-----------------------------+------+-------------------+------+------------- ");
48 for (LONG i=numMessagesReturned-1; i>=0; i--) {
49 printf("\n%-*s %-*d %-*s %-*d %s",
50 MLPI_TRACE_FUNCTION_NAME_SIZE, W2A16(messages[i].functionName),
51 5, messages[i].lineNumber,
52 MLPI_TRACE_MODULE_NAME_SIZE, W2A16(messages[i].moduleName),
54 W2A16(messages[i].text)