Using Remote Graphics Software

&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.

99