次の方法で共有


SnmpRecvMsg 関数 (winsnmp.h)

[SNMP は、[要件] セクションで指定されたオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 代わりに、WS-Man の Microsoft 実装である Windows リモート管理を使用します。

WinSNMP SnmpRecvMsg 関数は、 SnmpSendMsg 関数の呼び出しによって送信された、完了した非同期要求の結果を SNMP メッセージの形式で取得します。 SnmpRecvMsg 関数は、WinSNMP セッションに登録されている未処理のトラップ データと通知も返します。

構文

SNMPAPI_STATUS SNMPAPI_CALL SnmpRecvMsg(
  [in]  HSNMP_SESSION   session,
  [out] LPHSNMP_ENTITY  srcEntity,
  [out] LPHSNMP_ENTITY  dstEntity,
  [out] LPHSNMP_CONTEXT context,
  [out] LPHSNMP_PDU     PDU
);

パラメーター

[in] session

WinSNMP セッションを処理します。

[out] srcEntity

メッセージを送信するエンティティへのハンドルを受け取る変数へのポインター。 SnmpRegister 関数の srcEntity パラメーターは、トラップ通知に登録する管理エンティティへのハンドルを指定します。

[out] dstEntity

メッセージを受信するエンティティへのハンドルを受け取る変数へのポインター。 SnmpRegister 関数の dstEntity パラメーターは、トラップを送信する管理エンティティへのハンドルを指定します。

[out] context

マネージド オブジェクト リソースのセットであるコンテキストへのハンドルを受け取る変数へのポインター。 srcEntity パラメーターで指定されたエンティティは、このコンテキストからメッセージを発行します。

[out] PDU

メッセージのプロトコル・データ・ユニット (PDU) コンポーネントへのハンドルを受け取る変数へのポインター。

戻り値

関数が成功した場合、戻り値はSNMPAPI_SUCCESSされ、出力パラメーターには前のパラメーターの説明で示した値が含まれます。

関数が失敗した場合、戻り値はSNMPAPI_FAILURE。 ネットワーク トランスポート層エラーを示す拡張エラー コード (つまり、SNMPAPI_TL_で始まるエラー) で関数が失敗した場合、出力パラメーターには、WinSNMP アプリケーションが正常に回復できるようにするために前に示した値も含まれます。

拡張エラー情報を取得するには、 SnmpGetLastError を呼び出します。 SnmpGetLastError 関数は、次の WinSNMP またはネットワーク トランスポート層のエラーのいずれかを返す場合があります。

リターン コード 説明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 関数が正常に完了しませんでした。
SNMPAPI_ALLOC_ERROR
メモリ割り当て中にエラーが発生しました。
SNMPAPI_SESSION_INVALID
セッション パラメーターが無効です。
SNMPAPI_NOOP
指定されたセッションには、現時点ではキューにメッセージがありません。
SNMPAPI_TL_NOT_INITIALIZED
ネットワーク トランスポート層が初期化されませんでした。
SNMPAPI_TL_NOT_SUPPORTED
ネットワーク トランスポート層では、SNMP プロトコルはサポートされていません。
SNMPAPI_TL_NOT_AVAILABLE
ネットワーク サブシステムが失敗しました。
SNMPAPI_TL_RESOURCE_ERROR
ネットワーク トランスポート層でリソース エラーが発生しました。
SNMPAPI_TL_UNDELIVERABLE
dstEntity パラメーターで指定されたエンティティは使用できません。
SNMPAPI_TL_SRC_INVALID
srcEntity パラメーターで指定されたエンティティが初期化されませんでした。
SNMPAPI_TL_INVALID_PARAM
ネットワーク トランスポート層関数呼び出しが無効な入力パラメーターを受け取った。
SNMPAPI_TL_PDU_TOO_BIG
PDU が大きすぎて、ネットワーク トランスポート 層で送受信が行えなすぎます。
SNMPAPI_TL_OTHER
未定義のネットワーク トランスポート層エラーが発生しました。
SNMPAPI_OTHER_ERROR
不明または未定義のエラーが発生しました。
 

詳細については、「 ネットワーク トランスポート エラー」を参照してください。

注釈

SnmpCreateSession 関数は、アプリケーション ウィンドウ ハンドルと通知メッセージ識別子を Microsoft WinSNMP 実装に渡します。 アプリケーション ウィンドウで wMsg パラメーターで指定された通知メッセージを受信すると、WinSNMP アプリケーションは SnmpCreateSession によって返されるセッション ハンドルを使用して SnmpRecvMsg 関数を呼び出して、受信プロトコル データ ユニット (PDU) を取得する必要があります。 詳細については、「 SNMP メッセージについて」を参照してください。

SnmpRecvMsg 関数は、4 つのオブジェクトをインスタンス化し、2 つのエンティティ ハンドル、コンテキスト ハンドル、PDU ハンドルのリソースを割り当てます。 返された PDU の変数バインド リスト コンポーネントへのハンドルは、WinSNMP アプリケーションが SnmpGetPduData 関数を呼び出すまでインスタンス化されません。 SnmpRecvMsg が返すリソースが不要になった場合、WinSNMP アプリケーションは、リソースに対応する WinSNMP 関数を使用して個々のリソースを解放する必要があります。 詳細については、「 SnmpFreePduSnmpFreeEntity、および SnmpFreeContext」を参照してください。

実装は、SNMP バージョン 1 フレームワーク (SNMPv1) で動作しているエンティティからトラップを受信すると、トラップを SNMP バージョン 2C (SNMPv2C) 形式に変換します。 したがって、 SnmpRecvMsg が トラップを配信すると、常に SNMPv2C 形式になります。 詳細については、「 SNMPv1 から SNMPv2C へのトラップの変換 」および 「WinSNMP プログラミング タスク」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winsnmp.h
Library Wsnmp32.lib
[DLL] Wsnmp32.dll

こちらもご覧ください

SnmpFreeContext

SnmpFreeEntity

SnmpFreePdu

SnmpGetPduData

SnmpRegister

SnmpSendMsg

WinSNMP 関数

WinSNMP API の概要