
// Header file for SQL SNMP trap processing
//

#include <windows.h>

#define SQLSNMP_SUCCESSFUL          0
#define SQLSNMP_UNSUPPORTED_TRAP    1
#define SQLSNMP_MEMORY_ERROR        2
#define SQLSNMP_NETWORK_NOT_STARTED 3
#define SQLSNMP_TIMEOUT_ON_EVENT    4
#define SQLSNMP_AGENT_NOT_STARTED   5

#define DATE_TIME_SIZE	11  // Number of characters representing Date and Time

// Trap 1 struction definition
//
typedef struct trap1_info
{
    DWORD  dwError;	    // SQL error value
    DWORD  dwSeverity;	    // SQL severity
    char * szDBname;	    // SQL database name (null terminated, max of 1024 characters)
    char * szServerName;    // SQL server name (null terminated, max of 1024 characters)
    char * szErrorMessage;  // SQL error message (null terminated, max of 1024 characters)
    char * szUserName;	    // SQL user name (null terminated, max of 1024 characters)
    char * szSuggestion;    // Suggested action	(null terminated, max of 1024 characters)
    BYTE   DateAndTime[DATE_TIME_SIZE]; // DateAndTime in ASN 11 byte format
} TRAP1_INFO;


// SQLsnmpTraps( DWORD dwTrapRequest, void * pTrapStructure )
//
//  where dwTrapRequest = 0 -- Determine state of SQL SNMP Extension Agent,
//                             (pTrapStructure should be NULL)
//                      = 1 -- Process Trap1 structure.
//
//        pTrapStructure = pointer to trap structure
//
// If the SQLsnmpTraps() succeeds, a value of zero will be returned.
// Otherwise an error occurred.
//    Error values:
//       1 = Unsupported dwTrapRequest value
//       2 = Memory Error.
//       3 = Network not started
//       4 = TCP/IP not available
//       5 = Agent service not started
//
//    SQLsnmpTraps() will reside in the DLL named "SQLsnmp.dll" which will be
//    located in the ...\SQL60\DLL directory.
//
DWORD SQLsnmpTraps( DWORD  dwTrapRequest,       // Trap request value
                    void * pTrapStructure );    // Structure as defined above
