beautypg.com

HP xw4400 Workstation User Manual

Page 107

background image

Using Remote Graphics Software

99

&dwRead,

// number of bytes read

&dwNeeded);

// bytes in next record

if (CloseEventLog(h) == false)

{

... report error status ...

return true;

}

// Process event (example: print out event) ==============================

if (result)

{

// We only know how to process specific events

if (pevlr->EventID == RGSENDER_CONNECT_STATE)

{

// Retrieve the two UINT32 fields of this message

// representing primary and non-primary connections.

unsigned int *pData = (unsigned int *)

((LPBYTE) pevlr + pevlr->DataOffset);

// Examine state of primary connections here for other

// agent response if number drops to zero...

... example only prints out retrieved record to console ...

printf ("Event: %u Primary: %u Secondary: %u\n",

dwEventNum, pData[0], pData[1]);

}

... Process other events here if desired ...

}

else

{

... report unrecognized event here ...

return true;

}

return false;

}

void monitorEvents(LPCTSTR eventServer, LPCTSTR eventSource, int seconds)

{

DWORD dwCurrentIndex = 0;

DWORD dwCurrentStart;

DWORD dwCurrentCount;

DWORD dwNewIndex;

int waitedFor;

// This function will monitor the log for the specified number of

// seconds. If seconds is less than zero, we will wait forever.

for (waitedFor = 0; seconds < 0 || waitedFor < seconds; )

{

HANDLE h;

// Open, read status of log, close event log =========================

if ((h = OpenEventLog(eventServer, eventSource)) == NULL)

{

... report error status here ...

return;

}

// If an event is added, either the start or count will change.