A notification message always starts with a fixed portion followed by an optional variable-length region.
The fixed portion is made by the ctNOTBLK structure defined in ctport.h:
typedef struct notblk {
ULONG action; /* actual opcode */
LONG actor; /* thread ID */
LONG tranhw; /* transaction # HW */
LONG tranlw; /* transaction # LW */
LONG opcode; /* requested opcodes */
LONG objhandle; /* requested (user) handle */
LONG idxmemno; /* index member number */
ULONG contents; /* actual contents bit map */
ULONG controls; /* requested controls bit map */
LONG datahw; /* data HW (eg rec pos) */
LONG datalw; /* data LW */
LONG auxdhw; /* auxilary info HW (eg old pos) */
LONG auxdlw; /* auxilary info LW */
ULONG varlen; /* remaining length (if any) */
} ctNOTBLK, * pctNOTBLK;
The contents member determines what is in the variable-length region and should be the same used in the ctNotify() call.
The variable-length portion may contain the following items, depending on the options specified in the contents parameter to ctNotify():
These items always appear in this order, even if not all are specified to be returned.