📄 snmp.h
字号:
/*++
Copyright 1992 - 1998 Microsoft Corporation
Module Name:
snmp.h
Abstract:
Definitions for SNMP development.
--*/
#ifndef _INC_SNMP
#define _INC_SNMP
///////////////////////////////////////////////////////////////////////////////
// //
// Additional Header Files //
// //
///////////////////////////////////////////////////////////////////////////////
#include <windows.h>
#ifdef __cplusplus
extern "C" {
#endif
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Type Definitions //
// //
///////////////////////////////////////////////////////////////////////////////
#pragma pack(4)
typedef struct {
BYTE * stream;
UINT length;
BOOL dynamic;
} AsnOctetString;
typedef struct {
UINT idLength;
UINT * ids;
} AsnObjectIdentifier;
typedef LONG AsnInteger32;
typedef ULONG AsnUnsigned32;
typedef ULARGE_INTEGER AsnCounter64;
typedef AsnUnsigned32 AsnCounter32;
typedef AsnUnsigned32 AsnGauge32;
typedef AsnUnsigned32 AsnTimeticks;
typedef AsnOctetString AsnBits;
typedef AsnOctetString AsnSequence;
typedef AsnOctetString AsnImplicitSequence;
typedef AsnOctetString AsnIPAddress;
typedef AsnOctetString AsnNetworkAddress;
typedef AsnOctetString AsnDisplayString;
typedef AsnOctetString AsnOpaque;
typedef struct {
BYTE asnType;
union {
AsnInteger32 number; // ASN_INTEGER
// ASN_INTEGER32
AsnUnsigned32 unsigned32; // ASN_UNSIGNED32
AsnCounter64 counter64; // ASN_COUNTER64
AsnOctetString string; // ASN_OCTETSTRING
AsnBits bits; // ASN_BITS
AsnObjectIdentifier object; // ASN_OBJECTIDENTIFIER
AsnSequence sequence; // ASN_SEQUENCE
AsnIPAddress address; // ASN_IPADDRESS
AsnCounter32 counter; // ASN_COUNTER32
AsnGauge32 gauge; // ASN_GAUGE32
AsnTimeticks ticks; // ASN_TIMETICKS
AsnOpaque arbitrary; // ASN_OPAQUE
} asnValue;
} AsnAny;
typedef AsnObjectIdentifier AsnObjectName;
typedef AsnAny AsnObjectSyntax;
typedef struct {
AsnObjectName name;
AsnObjectSyntax value;
} SnmpVarBind;
typedef struct {
SnmpVarBind * list;
UINT len;
} SnmpVarBindList;
#pragma pack()
#ifndef _INC_WINSNMP
///////////////////////////////////////////////////////////////////////////////
// //
// ASN/BER Base Types //
// //
///////////////////////////////////////////////////////////////////////////////
#define ASN_UNIVERSAL 0x00
#define ASN_APPLICATION 0x40
#define ASN_CONTEXT 0x80
#define ASN_PRIVATE 0xC0
#define ASN_PRIMITIVE 0x00
#define ASN_CONSTRUCTOR 0x20
///////////////////////////////////////////////////////////////////////////////
// //
// PDU Type Values //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)
#define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)
#define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)
#define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)
#define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4)
#define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
#define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
#define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)
#endif // _INC_WINSNMP
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Simple Syntax Values //
// //
///////////////////////////////////////////////////////////////////////////////
#define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02)
#define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
#define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
#define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05)
#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06)
#define ASN_INTEGER32 ASN_INTEGER
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Constructor Syntax Values //
// //
///////////////////////////////////////////////////////////////////////////////
#define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
#define ASN_SEQUENCEOF ASN_SEQUENCE
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Application Syntax Values //
// //
///////////////////////////////////////////////////////////////////////////////
#define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
#define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
#define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
#define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
#define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
#define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
#define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Exception Conditions //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
#define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
#define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Request Types (used in SnmpExtensionQueryEx) //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_EXTENSION_GET SNMP_PDU_GET
#define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT
#define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK
#define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
#define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET
#define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
#define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Error Codes //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_ERRORSTATUS_NOERROR 0
#define SNMP_ERRORSTATUS_TOOBIG 1
#define SNMP_ERRORSTATUS_NOSUCHNAME 2
#define SNMP_ERRORSTATUS_BADVALUE 3
#define SNMP_ERRORSTATUS_READONLY 4
#define SNMP_ERRORSTATUS_GENERR 5
#define SNMP_ERRORSTATUS_NOACCESS 6
#define SNMP_ERRORSTATUS_WRONGTYPE 7
#define SNMP_ERRORSTATUS_WRONGLENGTH 8
#define SNMP_ERRORSTATUS_WRONGENCODING 9
#define SNMP_ERRORSTATUS_WRONGVALUE 10
#define SNMP_ERRORSTATUS_NOCREATION 11
#define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12
#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13
#define SNMP_ERRORSTATUS_COMMITFAILED 14
#define SNMP_ERRORSTATUS_UNDOFAILED 15
#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16
#define SNMP_ERRORSTATUS_NOTWRITABLE 17
#define SNMP_ERRORSTATUS_INCONSISTENTNAME 18
///////////////////////////////////////////////////////////////////////////////
// //
// SNMPv1 Trap Types //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_GENERICTRAP_COLDSTART 0
#define SNMP_GENERICTRAP_WARMSTART 1
#define SNMP_GENERICTRAP_LINKDOWN 2
#define SNMP_GENERICTRAP_LINKUP 3
#define SNMP_GENERICTRAP_AUTHFAILURE 4
#define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
#define SNMP_GENERICTRAP_ENTERSPECIFIC 6
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Access Types //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMP_ACCESS_NONE 0
#define SNMP_ACCESS_NOTIFY 1
#define SNMP_ACCESS_READ_ONLY 2
#define SNMP_ACCESS_READ_WRITE 3
#define SNMP_ACCESS_READ_CREATE 4
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP API Return Code Definitions //
// //
///////////////////////////////////////////////////////////////////////////////
#define SNMPAPI INT
#define SNMP_FUNC_TYPE WINAPI
#define SNMPAPI_NOERROR TRUE
#define SNMPAPI_ERROR FALSE
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Extension API Prototypes //
// //
///////////////////////////////////////////////////////////////////////////////
BOOL
SNMP_FUNC_TYPE
SnmpExtensionInit(
DWORD dwUptimeReference,
HANDLE * phSubagentTrapEvent,
AsnObjectIdentifier * pFirstSupportedRegion
);
BOOL
SNMP_FUNC_TYPE
SnmpExtensionInitEx(
AsnObjectIdentifier * pNextSupportedRegion
);
BOOL
SNMP_FUNC_TYPE
SnmpExtensionQuery(
BYTE bPduType,
SnmpVarBindList * pVarBindList,
AsnInteger32 * pErrorStatus,
AsnInteger32 * pErrorIndex
);
BOOL
SNMP_FUNC_TYPE
SnmpExtensionQueryEx(
UINT nRequestType,
UINT nTransactionId,
SnmpVarBindList * pVarBindList,
AsnOctetString * pContextInfo,
AsnInteger32 * pErrorStatus,
AsnInteger32 * pErrorIndex
);
BOOL
SNMP_FUNC_TYPE
SnmpExtensionTrap(
AsnObjectIdentifier * pEnterpriseOid,
AsnInteger32 * pGenericTrapId,
AsnInteger32 * pSpecificTrapId,
AsnTimeticks * pTimeStamp,
SnmpVarBindList * pVarBindList
);
VOID
SNMP_FUNC_TYPE
SnmpExtensionClose(
);
///////////////////////////////////////////////////////////////////////////////
// //
// SNMP Extension API Type Definitions //
// //
///////////////////////////////////////////////////////////////////////////////
typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONINIT)(
DWORD dwUpTimeReference,
HANDLE * phSubagentTrapEvent,
AsnObjectIdentifier * pFirstSupportedRegion
);
typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONINITEX)(
AsnObjectIdentifier * pNextSupportedRegion
);
typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONQUERY)(
BYTE bPduType,
SnmpVarBindList * pVarBindList,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -