Component instrumentation can send unsolicited messages to the service layer to notify it of some particular situation. These unsolicited messages are known as events. When they reach a management application they are usually known as indications, with an indication ID of 1. Events are often used to describe a catastrophic occurrence or other activity that a management application should be informed of quickly. The event identification is specific to a given component.
The DmiIndicate() function call is provided so that component instrumentation can send an indication block to the service layer for processing. The C-language prototype for this call is:
unsigned long DmiIndicate(PTR command)
command is the complete command block. The return result is a 32-bit status value indicating success or failure. The possible status values are described in Status Codes.
While it processes the indication, the service layer immediately returns control to the component instrumentation. The component instrumentation can then continue processing and issue additional indications, but the instrumentation cannot re-use the same indication buffer that it previously sent to the service layer. Simultaneous indications from a component instrumentation must use different indication blocks. When the service layer is finished processing the indication, it notifies the component instrumentation by calling the pResponseFunc() function that was given in the original indication block. At that point, the component instrumentation can re-use the indication block.
To send an event, the component instrumentation sends a DmiIndicate block to the service layer's DmiIndicate() entry point. The event data is defined in a DmiEventData block that maps onto the oIndicationData field in the DmiIndicate block.
For a description of the DmiIndicate block used to issue an indication, read DmiIndicate Command Block.
If you are using the DMI subagent to translate DMI indications into SNMP traps, note the following when creating indications: