HP Z620 HP Remote Graphics Software 5.4.7 - Page 224

Sample Agent

Page 224 highlights

Sample Agent The sample Windows agent presented below monitors the HPRemote event log and interprets its events. Comments are included in the agent code showing where additional code would be added to determine if the number of primary users has dropped to zero. If so, further code can be added to terminate applications on the Sender. A number of design issues for the Windows agent are described in the previous section. The sample code is a fixed-polling Windows agent that reads and interprets the HPRemote event log. The agent uses two functions: 1. processEvent(eventServer, eventSource, dwEventNum) ◦ open event log, read event dwEventNum, close event log ◦ if a valid read, process recognized EventIDs, then return 2. monitorEvents(eventServer, eventSource, seconds) ◦ for a finite number of seconds (or infinite if seconds

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247

Sample Agent
The sample Windows agent presented below monitors the HPRemote event log and interprets its events.
Comments are included in the agent code showing where additional code would be added to
determine if the number of primary users has dropped to zero. If so, further code can be added to
terminate applications on the Sender. A number of design issues for the Windows agent are described
in the previous section.
The sample code is a fixed-polling Windows agent that reads and interprets the HPRemote event log.
The agent uses two functions:
1.
processEvent(eventServer, eventSource, dwEventNum)
open event log, read event
dwEventNum
, close event log
if a valid read, process recognized
EventIDs
, then return
2.
monitorEvents(eventServer, eventSource, seconds)
for a finite number of seconds (or infinite if seconds <= 0) do
open event log, read log length, close event log
if log has changed,
processEvent()
, else sleep for X ms.
To properly use the function
monitorEvents(...)
, the following strings must be defined in the
function call:
LPCTSTR eventServer:
if string is defined as "\\\\yourservername", then the log is stored on
a remote server - if the string is empty (NULL), then the log is stored locally (note that four
backlashes compiles to two in a string constant).
LPCTSTR eventSource:
the name of the target event generator, e.g.,
rgreceiver
The sample agent use Microsoft event logging functions such as
OpenEventLog, ReadEventLog
,
and
CloseEventLog
. For information on these functions, refer to the Event Logging Functions link
highlighted in the figure used in
Additional information on event logging
on page
199
.
The sample agent is listed below. Where noted, user-specific code should be added. The agent header
file,
RGSenderEvents.h
, is installed with the RGS Sender and is located at:
C:\Program Files\Hewlett-Packard\Remote Graphics Sender\include
\RGSenderEvents.h
#include <windows.h>
#include <stdio.h>
#include "RGSenderEvents.h"
#define BUFFER_SIZE 1024 // safe EVENTLOGRECORD size for now
#define EVENT_SERVER NULL // remote server = "\\\\nodename"; local = NULL
208
Chapter 10
Remote Application Termination