Monitor library structures

AttributePath {
long size; Should be set to the total size of the completed structure
BYTE version; Should be set to CURRENT_PATH_VERSION
char lang[6]; Compressed Unicode locale in Java format for NLS support
long members; Number of pathname strings
long offsets[members];    Array of offsets inside struct to each pathname member
BYTE[]   Location of the Compressed Unicode pathname string(s) within the structure
} ;    

AttributeNode {
long size; Total size of this struct w/ strings
BYTE version; Should be set to CURRENT_NODE_VERSION
char lang[6]; Compressed Unicode locale in Java format for NLS support
BYTE isLeaf; 0=node and 1=leaves w/ data
BYTE type; Data type: INVALID_NODEDATA for nodes and DOUBLE_NODEDATA or STRING_NODEDATA for leaves
long nameOffset; Offset inside struct to the displayable name
long symNameOffset; Offset inside struct to the programmatic name
BYTE[]   Location of the Compressed Unicode displayable string within the structure
BYTE[]   Location of the Compressed Unicode programmatic string within the structure
} ;    

AttributeNodeList {
long size; Size of this struct without nodes (used as the offset location of the first node)
BYTE version; Should be set to CURRENT_NODE_LIST_VERSION
long totalSize; Total size of this struct with nodes
long members; Number of nodes in the list
BYTE[]   Location of the AttributeNode structures within the structure
} ;    

NodeParms {
ULONG size; Total size of the completed structure
BYTE version; Should be set to CURRENT_NODEPARMS_VERSION
long rc; RC_OK, RC_MEMORY_FAILURE, RC_INVALID_HANDLE or RC_INVALID_DATA
ULONG base_pulse; Maximum time, in milliseconds, between calls to NodePulse
ULONG pulses_per_data; Number of NodePulse calls between NodeGetValue calls
ULONG num_recorded; Maximum number of recorded value changes (at least 5 minutes worth)
ULONG attrib_flags; Flags for attribute (not used and should be 0)
ULONG output_type; Output device recommended (not used and should be 0)
ULONG number_data_levels; Total number of data levels supported (not used and should be 0)
DataLevelRec *data_levels; Pointer to array of data levels (not used and should be NULL)
ULONG units_label_offset; Offset in struct to CompUnicode Label for units of measure (optional and should be 0 if not used)
ULONG value_format_offset; Offset in struct to CompUnicode printf format string for value
BYTE[]   Location of the Compressed Unicode units_label string within the structure
BYTE[]   Location of the Compressed Unicode value_format string within the structure
} ;    

DataLevelRec {
ULONG data_count; Maximum samples saved before rollup to next level
ULONG count_to_next; Number of samples used to make rolled-up value
} ;    

NodeData {
long size; Should be set to the total size of the completed structure
BYTE version; Should be set to CURRENT_NODEDATA_VERSION
long rc; RC_OK, RC_MEMORY_FAILURE, RC_INVALID_HANDLE or RC_INVALID_DATA
BYTE dataType; INVALID_NODEDATA, DOUBLE_NODEDATA or STRING_NODEDATA
union {    
  double dValue; Double value when dataType is DOUBLE_NODEDATA
  long strOffset; Offset inside of this struct to the CompUnicode string when dataType is STRING_NODEDATA
} data;    
BYTE[]   Location of the Compressed Unicode string within the structure if set
} ;