現象
Windows Server 2012 を実行しているコンピューターにて、SnmpMgrTrapListen 関数を利用して Simple Network Management Protocol (SNMP) トラップの受信を通知するためのイベントを登録している場合、 SNMP Version 2 (SNMPv2) トラップが受信できない現象が発生します。
原因
本現象は、 SnmpMgrTrapListen 関数の内部で行われている、トラップを SNMP Version 2 フォーマットから Version 1 フォーマットに変換する処理にて生じる問題により発生します。
回避策
WinSNMP API を利用できる場合、SnmpRegister 関数を使用することで、現象の回避を行うことができます。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細
SnmpMgrTrapListen 関数は、トラップを受信する為に、内部動作として SnmpRecvMsg 関数を使用します。SnmpRecvMsg 関数は SNMPv2 トラップをコミュニティ ベース SNMPv2 (SNMPv2C) フォーマットで SnmpMgrTrapListen 関数に返し、SnmpMgrTrapListen 関数は SNMPv2C トラップを Version 1 フォーマットに変換します。「現象」にて記載されている問題は、SnmpMgrTrapListen 関数がトラップを Version 2 フォーマットから Version 1 フォーマットに変換する際に生じる問題により発生します。
Windows 7 及び Windows Server 2008 R2 で起きている同様の問題に関する詳細は、以下の資料をご参照ください。
SNMPv2 traps are not received by the SnmpMgrTrapListen function in Windows 7 or in Windows Server 2008 R2
SnmpRegister 関数の詳細については、次の Microsoft Developer Network (MSDN) web サイトをご参照ください。