SnmpGetPduData 関数 (winsnmp.h)

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

WinSNMP SnmpGetPduData 関数は、指定された SNMP プロトコル データ ユニット (PDU) から選択したデータ フィールドを返します。

構文

SNMPAPI_STATUS SNMPAPI_CALL SnmpGetPduData(
  [in]  HSNMP_PDU   PDU,
  [out] smiLPINT    PDU_type,
  [out] smiLPINT32  request_id,
  [out] smiLPINT    error_status,
  [out] smiLPINT    error_index,
  [out] LPHSNMP_VBL varbindlist
);

パラメーター

[in] PDU

SNMP PDU へのハンドル。

[out] PDU_type

指定した PDU の PDU_type フィールドを受け取る変数へのポインター。 このパラメーターには 、NULL または次のいずれかの値を指定できます。

説明
SNMP_PDU_GET
指定した SNMP 変数から値を検索して取得します。
SNMP_PDU_GETNEXT
変数の正確な名前を知らなくても、SNMP 変数の値を検索して取得します。
SNMP_PDU_RESPONSE
SNMP_PDU_GETまたはSNMP_PDU_GETNEXT要求に返信します。
SNMP_PDU_SET
指定した SNMP 変数に値を格納します。
SNMP_PDU_GETBULK
1 つの要求で複数の値を検索して取得します。
SNMP_PDU_TRAP
SNMPv2C の下で異常なイベントを管理システムに警告します。

[out] request_id

指定した PDU の request_id フィールドを受け取る変数へのポインター。 このパラメーターは、NULL でもかまいません。

[out] error_status

指定した PDU の error_status フィールドを受け取る変数へのポインター。 PDU_type パラメーターが SNMP_PDU_GETBULK と等しい場合、このパラメーターは PDU の non_repeaters フィールドの値を受け取ります。

このパラメーターには 、NULL または次のいずれかの値を指定できます。 最初の 6 つのエラーは、SNMP バージョン 1 (SNMPv1) と SNMP バージョン 2C フレームワーク (SNMPv2C) に共通です。 残りのエラーは、SNMPv2C でのみ使用できます。

エラー コード 意味
SNMP_ERROR_NOERROR
エージェントは、送信中にエラーが発生しなかったことを報告します。
SNMP_ERROR_TOOBIG
エージェントは、要求された SNMP 操作の結果を 1 つの SNMP メッセージに配置できませんでした。
SNMP_ERROR_NOSUCHNAME
要求された SNMP 操作によって、不明な変数が識別されました。
SNMP_ERROR_BADVALUE
要求された SNMP 操作で変数を変更しようとしましたが、構文エラーまたは値エラーが指定されました。
SNMP_ERROR_READONLY
要求された SNMP 操作は、変数のコミュニティ プロファイルに従って、変更が許可されていない変数を変更しようとしました。
SNMP_ERROR_GENERR
要求された SNMP 操作中に、ここに記載されているエラーの 1 つ以外のエラーが発生しました。
SNMP_ERROR_NOACCESS
指定された SNMP 変数にアクセスできません。
SNMP_ERROR_WRONGTYPE
値は、変数に必要な型と矛盾する型を指定します。
SNMP_ERROR_WRONGLENGTH
値は、変数に必要な長さと矛盾する長さを指定します。
SNMP_ERROR_WRONGENCODING
この値には、フィールドの ASN.1 タグと矛盾する抽象構文表記 1 (ASN.1) エンコードが含まれています。
SNMP_ERROR_WRONGVALUE
値を変数に割り当てることはできません。
SNMP_ERROR_NOCREATION
変数が存在せず、エージェントで作成できません。
SNMP_ERROR_INCONSISTENTVALUE
値は、他のマネージド オブジェクトの値と矛盾しています。
SNMP_ERROR_RESOURCEUNAVAILABLE
変数に値を割り当てるには、現在使用できないリソースの割り当てが必要です。
SNMP_ERROR_COMMITFAILED
検証エラーは発生しませんでしたが、変数は更新されませんでした。
SNMP_ERROR_UNDOFAILED
検証エラーは発生しませんでした。 割り当てを元に戻すことができなかったため、一部の変数が更新されました。
SNMP_ERROR_AUTHORIZATIONERROR
承認エラーが発生しました。
SNMP_ERROR_NOTWRITABLE
変数は存在しますが、エージェントはそれを変更できません。
SNMP_ERROR_INCONSISTENTNAME
変数が存在しません。名前付きオブジェクト インスタンスが他のマネージド オブジェクトの値と矛盾しているため、エージェントで作成できません。

[out] error_index

指定した PDU の error_index フィールドを受け取る変数へのポインター。

PDU_type パラメーターが SNMP_PDU_GETBULK と等しい場合、このパラメーターは指定された PDU のmax_repetitions フィールドの値を受け取ります。 このパラメーターは、NULL でもかまいません。

[out] varbindlist

指定した PDU の変数バインディング・リスト・フィールドへのハンドルを受け取る変数へのポインター。 このパラメーターは、NULL でもかまいません。 詳細については、次の「解説」セクションを参照してください。

戻り値

関数が成功した場合、戻り値はSNMPAPI_SUCCESS。

関数が失敗した場合、戻り値はSNMPAPI_FAILURE。 拡張エラー情報を取得するには、 SnmpGetLastError を呼び出します。 SnmpGetLastError 関数は、次のいずれかのエラーを返すことができます。

リターン コード 説明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 関数が正常に完了しませんでした。
SNMPAPI_ALLOC_ERROR
メモリ割り当て中にエラーが発生しました。
SNMPAPI_NOOP
すべての出力パラメーターは NULL です。 SNMP 操作が実行されませんでした。
SNMPAPI_PDU_INVALID
PDU の種類が無効です。
SNMPAPI_OTHER_ERROR
不明または未定義のエラーが発生しました。

解説

SnmpGetPduData 関数のすべてのパラメーターが必要です。 ただし、 PDU パラメーターを除くすべてのパラメーターは NULL にすることができます。 アプリケーションが NULL として渡すパラメーターでは、 SnmpGetPduData 関数は値を返しません。

varbindlist パラメーターが NULL でない場合、SnmpGetPduData 関数は常に新しい変数バインド リスト オブジェクトへのハンドルを返します。 さらに、PDU パラメーターで新しい PDU が指定されている場合、関数は新しい PDU にハンドルをアタッチします。

アプリケーションが NULL ではない varbindlist パラメーターを指定して SnmpGetPduData を呼び出すが、PDU パラメーターが既存の PDU を指定すると、関数は新しい重複する変数バインド リストへのハンドルを返します。 関数呼び出しは、既存の PDU に接続されているハンドルに応答しません。 既存の PDU は、 SnmpCreatePdu 関数を呼び出してアプリケーションが作成する 1 つ、またはアプリケーションが SnmpGetPduData の呼び出しを使用して受信して読み取る 1 つです。

アプリケーションが SnmpCreatePdu を使用して PDU を作成するとき、またはアプリケーションが SnmpGetPduData を使用して PDU を読み取った後、Microsoft WinSNMP 実装では、アプリケーションが PDU フィールドの値を "認識" することを想定しています。 アプリケーションが SnmpGetPduData を使用して PDU を 2 回目に読み取ると、その呼び出しによって、指定された PDU の変数バインド リストのコピーが生成されます。 この種類の SnmpGetPduData の呼び出しでは、PDU へのハンドルも複製されます。

要件

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

関連項目

SnmpCreatePdu

SnmpDuplicateVbl

WinSNMP 関数

WinSNMP API の概要