SNMP Functions 開発 - SNMPシリーズ

SNMP : 2009.10.15 Thursday

SNMP Functions 開発

Windows OS(NT/2000/2003/2008/2012など)で SNMPマネージャ、SNMPエージェント(SNMP拡張エージェント)を開発する場合、2種類のAPIライブラリが存在します。また、Visual Studio .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 変数バインディングリストのデータエリアを解放します。

SNMP Functionsのサンプルコード

SNMPマネージャからSNMPエージェントに対して、(固定OIDに対する)Getメッセージを送信して情報収集するサンプルプログラムです。Visual C++(言語としては C言語)です。




【最近の投稿記事】



技術情報
SNMP |  Windowsサービス |  コンパネと管理ツール |  バッチファイル | 
Vista UAC無効化 |  Windows 7 UAC |  .NET Framework |  Webブラウザのリサイズ | 
SQL Server Express 管理 |  ダウンロードファイルのブロック解除 |  Windows Server サポート終了日 | 
Windows 8 フォト→ペイント |  Excelスクロールがおかしい !? |  ダウンロードフォルダ変更

コラム
プログラマ |  資格の王様 |  迷惑メール |  メール消失 |  情処の変遷 |  Webユーザビリティ