다음을 통해 공유


SnmpExtensionQuery 함수(snmp.h)

[SNMP는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다. 대신 WS-Man의 Microsoft 구현인 Windows 원격 관리를 사용합니다.]

Microsoft SNMP 서비스는 SnmpExtensionQuery 함수를 호출하여 SNMP 확장 에이전트의 등록된 MIB 하위 트리 중 하나 이상 내에 변수가 포함된 SNMP 요청을 resolve. 이 함수는 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
에이전트가 요청된 작업의 결과를 단일 SNMP 메시지에 배치할 수 없습니다.
SNMP_ERRORSTATUS_NOSUCHNAME
요청된 작업에서 알 수 없는 변수를 식별했습니다.
SNMP_ERRORSTATUS_BADVALUE
요청된 작업이 변수를 변경하려고 했지만 구문 또는 값 오류를 지정했습니다.
SNMP_ERRORSTATUS_READONLY
요청된 작업은 변수의 커뮤니티 프로필에 따라 변경할 수 없는 변수를 변경하려고 했습니다.
SNMP_ERRORSTATUS_GENERR
여기에 나열된 오류 중 하나 이외의 오류가 요청된 작업 중에 발생했습니다.

[out] pErrorIndex

오류 인덱스 결과가 반환될 변수에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값은 TRUE입니다.

함수가 실패하면 반환 값은 FALSE입니다.

설명

SNMP 서비스는 SNMP PDU 요청을 받으면 SnmpExtensionQuery 함수를 호출하여 요청을 처리합니다. 확장 에이전트는 RFC 1157의 규칙을 따라 변수 바인딩을 resolve 오류를 생성해야 합니다.

확장 에이전트가 Get Next 요청에서 변수 바인딩을 resolve 수 없는 경우 SnmpVarBind 구조체의 이름 필드를 현재 지원되는 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.77.2"의 수정된 이름 필드를 생성합니다. 이렇게 하면 SNMP 서비스가 변수 바인딩을 다른 확장 에이전트와 resolve 시도를 계속하도록 신호를 보냅니다.

SNMP 서비스와 확장 에이전트는 SnmpExtensionQuery 함수를 호출하는 동안 동적으로 할당된 메모리를 교환해야 할 수 있습니다. 서비스는 확장 에이전트에 전달하는 각 SnmpVarBind 구조체에서 개체 식별자를 동적으로 할당합니다. 그러나 확장 에이전트는 다음 가져오기 요청을 처리할 때 개체 식별자를 바꾸기 위해 이 메모리를 해제해야 합니다. 확장 에이전트는 가변 길이 개체 형식에 동적 메모리를 할당합니다. SNMP 서비스는 개체가 응답 PDU에 배치된 후 이 메모리를 해제합니다.

힙 손상 및 메모리 누수 방지를 위해 SNMP 서비스와 확장 에이전트 모두 동일한 힙에 resolve 메모리 할당 루틴을 사용해야 합니다. 확장 에이전트는 SnmpUtilMemAlloc 함수를 사용하여 SNMP 서비스에 전달하는 메모리를 할당해야 합니다. SnmpUtilMemFree 함수를 사용하여 서비스가 확장 에이전트에 다시 전달하는 메모리를 해제해야 합니다. 이러한 함수는 유틸리티 동적 링크 라이브러리 SNMPAPI.DLL 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 snmp.h

추가 정보

SNMP 함수

SNMP(Simple Network Management Protocol) 개요

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind