次の方法で共有


SnmpExtensionQuery 関数 (snmp.h)

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

Microsoft SNMP サービスは SnmpExtensionQuery 関数を呼び出して、1 つ以上の SNMP 拡張エージェントの登録済み MIB サブツリー内の変数を含む SNMP 要求を解決します。 この関数は、SNMP 拡張エージェント API の要素です。

メモ SNMP バージョン 2C (SNMPv2C) データ型と多相 SNMP SET 操作をサポートする SnmpExtensionQueryEx 関数を使用することをお勧めします。
 

構文

BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(
  [in]      BYTE            bPduType,
  [in, out] SnmpVarBindList *pVarBindList,
  [out]     AsnInteger32    *pErrorStatus,
  [out]     AsnInteger32    *pErrorIndex
);

パラメーター

[in] bPduType

SNMP バージョン 1 (SNMPv1) PDU 要求の種類を指定します。 このパラメーターには、次の値のいずれかを指定できます。

意味
SNMP_PDU_GET
指定した変数の値を取得します。
SNMP_PDU_GETNEXT
指定した変数の辞書式後続の値または値を取得します。
SNMP_PDU_SET
特定の変数内に値を書き込みます。
 

PDU 要求の種類の名前が変更されていることに注意してください。 詳細については、「 SNMP 変数の種類」および「PDU の種類の要求」を参照してください

[in, out] pVarBindList

変数バインド リストへのポインター。

[out] pErrorStatus

エラー状態の結果が返される変数へのポインター。 このパラメーターには、SNMPv1 で定義されている次のいずれかの値を指定できます。

意味
SNMP_ERRORSTATUS_NOERROR
エージェントは、送信中にエラーが発生しなかったことを報告します。
SNMP_ERRORSTATUS_TOOBIG
エージェントは、要求された操作の結果を 1 つの SNMP メッセージに配置できませんでした。
SNMP_ERRORSTATUS_NOSUCHNAME
要求された操作で不明な変数が識別されました。
SNMP_ERRORSTATUS_BADVALUE
要求された操作で変数を変更しようとしましたが、構文エラーまたは値エラーが指定されました。
SNMP_ERRORSTATUS_READONLY
要求された操作で、変数のコミュニティ プロファイルに従って変更が許可されていない変数を変更しようとしました。
SNMP_ERRORSTATUS_GENERR
要求された操作中に、ここに記載されているエラーの 1 つ以外のエラーが発生しました。

[out] pErrorIndex

エラー インデックスの結果が返される変数へのポインター。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります

注釈

SNMP サービスは、SNMP PDU 要求を受信すると、 SnmpExtensionQuery 関数を呼び出して要求を処理します。 拡張エージェントは、RFC 1157 の規則に従って、変数バインディングを解決するか、エラーを生成する必要があります。

拡張エージェントが Get Next 要求で変数バインディングを解決できない場合は、SnmpVarBind 構造体の name フィールドを、現在サポートされている MIB サブツリー ビューの直後にあるオブジェクト識別子の値に変更する必要があります。 たとえば、拡張機能エージェントでビュー ".1.3.6.1.4.1.77.1" がサポートされている場合、".1.3.6.1.4.1.77.1.5.1" の Get Next 要求は".1.3.6.1.4.1.7.7.2" という 変更された名前 フィールドになります。 これにより、SNMP サービスは、他の拡張エージェントとの変数バインディングの解決の試行を続行するように通知します。

SNMP サービスと拡張エージェントは、 SnmpExtensionQuery 関数の呼び出し中に動的に割り当てられたメモリを交換する必要がある場合があることに注意してください。 サービスは、拡張機能エージェントに渡す各 SnmpVarBind 構造体にオブジェクト識別子を動的に割り当てます。 ただし、Get Next 要求を処理するときにオブジェクト識別子を置き換えるには、拡張エージェントがこのメモリを解放 する 必要があります。 拡張エージェントは、可変長オブジェクト型に動的メモリを割り当てます。 SNMP サービスは、オブジェクトが応答 PDU に配置された後、このメモリを解放します。

ヒープの破損とメモリ リークを回避するには、SNMP サービスと拡張エージェントの両方で、同じヒープに解決されるメモリ割り当てルーチンを使用する必要があります。 拡張機能エージェントは 、SNMPUtilMemAlloc 関数を使用して、SNMP サービスに渡すメモリを割り当てる必要があります。 サービスが拡張エージェントに渡すメモリを解放するには、 SnmpUtilMemFree 関数を使用する必要があります。 これらの関数は、ユーティリティダイナミックリンクライブラリ SNMPAPI.DLL にあります。

要件

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

こちらもご覧ください

SNMP 関数

簡易ネットワーク管理プロトコル (SNMP) の概要

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind