SNMP Functions 開発
Windows NT/2000/XPでSNMPマネージャ、SNMPエージェント(SNMP拡張エージェント)を開発する場合、2種類のAPIライブラリが存在します。また、VisualStudio.NET では、TCP/IPアプリケーションが容易に開発できるため、SNMPプロトコルを理解していれば、APIライブラリを使用しなくてもSNMPマネージャ、エージェントが開発できます。
まず、ここでは APIライブラリの1つである「SNMP Functions」について説明します。SNMP Functionsは Platform SDK に含まれるAPIライブラリで、Windows NT 4.0の時代からあるSNMP開発用のライブラリなのですが、一部のAPIではSNMPv1仕様のSNMP拡張エージェント・SNMPマネージャ開発のみサポートしています。SNMPv1仕様だけをサポートするのであれば SNMP Functionsを使用したほうが簡単にプログラミングできます。
SNMP Functionsは、「SNMP拡張エージェント API」「SNMPマネージャAPI」「SNMPユーティリティAPI」の3つのグループに分類されています。ユーティリティAPIは共通で使用し、開発する対象により使うAPIが異なります。
SNMP拡張エージェント API
| API名 | 説 明 |
| SnmpExtensionClose | SNMP ServiceがSNMP拡張エージェントDLLに対して、リソースの解放と操作の終了を要求する際に呼び出すエントリです。 |
| SnmpExtensionInit | SNMP ServiceがSNMP拡張エージェントDLLに対して、初期化を要求する際に呼び出すエントリです。SNMP拡張エージェントDLLが対象とするMIBのOIDなどを設定して、SNMP Serviceに通知します。 |
| SnmpExtensionInitEx | SNMP ServiceがSNMP拡張エージェントDLLに対して、初期化を要求する際に呼び出すエントリです。 |
| SnmpExtensionMonitor | SNMP ServiceがSNMP拡張エージェントDLLに対して、内部カウンタやパラメータなどを提供させる際に呼び出すエントリです。このAPI(エントリ)は必須ではありません。 |
| SnmpExtensionQuery | SNMP ServiceがSNMP拡張エージェントDLLに対して、SNMP マネージャからのGetRequest/GetNextRequest/SetRequestが要求された際に呼び出すエントリです。このAPI(エントリ)は、SNMPv1のみをサポートしています。 |
| SnmpExtensionQueryEx | SNMP ServiceがSNMP拡張エージェントDLLに対して、SNMP マネージャからのGetRequest/GetNextRequest/SetRequestが要求された際に呼び出すエントリです。このAPI(エントリ)は、SNMPv1とSNMPv2の両方をサポートしています。 |
| SnmpExtensionTrap | SnmpExtensionInitで作成されたイベントがセットされた際に、SNMP Serviceが呼び出すエントリです。Trap情報を設定して呼び元(SNMP Service)に返却すると、SNMP Trapメッセージが送信されます。このAPI(エントリ)は、SNMPv1のみをサポートしています。 |
SNMPマネージャAPI
| API名 | 説 明 |
| SnmpMgrClose | 通信ソケットと指定されたSNMPセッションに関連したデータ構造をクローズします。 |
| SnmpMgrCtl | SNMPセッションに関連した操作パラメータを設定します。 |
| SnmpMgrGetTrap | SNMP Trapメッセージを受信します。 |
| SnmpMgrGetTrapEx | SNMP Trapメッセージを受信後、付加的な情報を取得します。 |
| SnmpMgrOidToStr | OIDを文字列に変換します。 |
| SnmpMgrOpen | 通信ソケットと関連データ構造を初期化します。 |
| SnmpMgrRequest | 指定された操作(GetRequest/GetNextRequest/SetRequest)の実行を要求します。 |
| SnmpMgrStrToOid | 文字列をOIDに変換します。 |
| SnmpMgrTrapListen | SNMP Trapメッセージの受信を受け付けます。 |
SNMPユーティリティAPI
| API名 | 説 明 |
| SnmpSvcGetUptime | SNMP Serviceが初期化されてから実行していた時間(100分の1秒単位)を取得します。 |
| SnmpSvcSetLogLevel | SNMP ServiceとSNMP拡張エージェントからのデバッグ出力の詳細のレベルを設定します。 |
| SnmpSvcSetLogType | SNMP ServiceとSNMP拡張エージェントからのデバッグ出力のタイプを設定します。 |
| SnmpUtilAsnAnyCpy | 変数バインディングをコピーします。 |
| SnmpUtilAsnAnyFree | AsnAny構造体のメモリを解放します。 |
| SnmpUtilDbgPrint | SNMP Serviceのデバッグ出力を有効(または無効)にします。 |
| SnmpUtilIdsToA | OID(整数型)をNULLで終了する文字列に変換します。 |
| SnmpUtilMemAlloc | プロセスヒープからダイナミックメモリを割り当てます。 |
| SnmpUtilMemFree | ダイナミックメモリを解放します。 |
| SnmpUtilMemReAlloc | ダイナミックメモリを再割り当てします。 |
| SnmpUtilOctetsCmp | 2つのOCTET STRING型のデータを比較します。 |
| SnmpUtilOctetsCpy | OCTET STRING型のデータをコピーします。 |
| SnmpUtilOctetsFree | OCTET STRING型のデータエリアを解放します。 |
| SnmpUtilOctetsNCmp | 2つのOCTET STRING型のデータを指定サイズ分、比較します。 |
| SnmpUtilOidAppend | 元のOIDに、指定のOIDを追加します。 |
| SnmpUtilOidCmp | 2つのOIDを比較します。 |
| SnmpUtilOidCpy | OIDをコピーします。 |
| SnmpUtilOidFree | OIDのデータエリアを解放します。 |
| SnmpUtilOidNCmp | 2つのOIDを指定サイズ分、比較します。 |
| SnmpUtilOidToA | OID(OID型)をNULLで終了する文字列に変換します。 |
| SnmpUtilPrintAsnAny | AsnAny構造体型のデータを標準出力に表示します。 |
| SnmpUtilPrintOid | OID型のデータを標準出力に表示します。 |
| SnmpUtilVarBindCpy | 変数バインディングをコピーします。 |
| SnmpUtilVarBindListCpy | 変数バインディングリストをコピーします。 |
| SnmpUtilVarBindFree | 変数バインディングのデータエリアを解放します。 |
| SnmpUtilVarBindListFree | 変数バインディングリストのデータエリアを解放します。 |





