SnmpMgrTrapListen

The SnmpMgrTrapListen function registers the ability of a manager application to receive SNMP traps.

BOOL SnmpMgrTrapListen(

HANDLE *phTrapAvailable // event handle indicating trap(s) available
);  

Parameters

phTrapAvailable

[out] Points to an event handle that will be used to indicate that there are traps available, and that the application should call the SnmpMgrGetTrap function.

Return Values

If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE. To get extended error information, call GetLastError. GetLastError may return any of the following error codes:

Error Code Description
SNMP_MEM_ALLOC_ERROR Indicates a memory allocation error.
SNMP_MGMTAPI_TRAP_DUPINIT Indicates that this function has already been called.
SNMP_MGMTAPI_AGAIN Indicates an error occurred; the application can attempt to call the function again.

This function may return other system errors as well.

Remarks

It is important to note that the SnmpMgrTrapListen function succeeds on Windows NT 4.0 only if the SNMP Trap Service has been started. See Turning SNMP On and Off for additional information.

The event that the phTrapAvailable parameter points to allows event-driven acquisition of SNMP traps. If you call the SnmpMgrTrapListen function first, you can ignore the event handle and poll the SnmpMgrGetTrap function for traps at regular intervals instead.

Another method to acquire traps is to create a thread to wait on the event using the WaitForSingleObject function. When the call initiates an event, the thread should clear the event using the ResetEvent function. Then the thread should repeatedly call the SnmpMgrGetTrap function until it returns a value of FALSE.

Always call the SnmpMgrTrapListen function before calling SnmpMgrGetTrap to receive traps. If an SNMP manager application calls SnmpMgrGetTrap first to receive traps, it returns a value of FALSE, even if there are traps available. If the application calls GetLastError before calling SnmpMgrTrapListen, GetLastError returns the error code SNMP_MGMTAPI_TRAP_ERRORS.

See Also

SnmpMgrGetTrap, WaitForSingleObject, ResetEvent