다음을 통해 공유


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
단일 요청으로 여러 값을 검색하고 검색합니다.
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 작업의 결과를 단일 SNMP 메시지에 배치할 수 없습니다.
SNMP_ERROR_NOSUCHNAME
요청된 SNMP 작업에서 알 수 없는 변수를 식별했습니다.
SNMP_ERROR_BADVALUE
요청된 SNMP 작업은 변수를 변경하려고 했지만 구문 또는 값 오류를 지정했습니다.
SNMP_ERROR_READONLY
요청된 SNMP 작업은 변수의 커뮤니티 프로필에 따라 변경할 수 없는 변수를 변경하려고 했습니다.
SNMP_ERROR_GENERR
여기에 나열된 오류 중 하나 이외의 오류가 요청된 SNMP 작업 중에 발생했습니다.
SNMP_ERROR_NOACCESS
지정된 SNMP 변수에 액세스할 수 없습니다.
SNMP_ERROR_WRONGTYPE
값은 변수에 필요한 형식과 일치하지 않는 형식을 지정합니다.
SNMP_ERROR_WRONGLENGTH
값은 변수에 필요한 길이와 일치하지 않는 길이를 지정합니다.
SNMP_ERROR_WRONGENCODING
값에는 필드의 ASN.1 태그와 일치하지 않는 ASN.1(추상 구문 표기법 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
변수가 없습니다. 명명된 개체 instance 다른 관리되는 개체의 값과 일치하지 않으므로 에이전트가 에이전트를 만들 수 없습니다.

[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 함수를 호출하여 만든 PDU이거나, 애플리케이션이 SnmpGetPduData 호출을 사용하여 수신하고 읽는 PDU입니다.

애플리케이션이 SnmpCreatePdu를 사용하여 PDU를 만들거나 애플리케이션이 SnmpGetPduData를 사용하여 PDU를 읽은 후 Microsoft WinSNMP 구현에서는 애플리케이션이 PDU 필드의 값을 "알고 있다"고 예상합니다. 애플리케이션이 SnmpGetPduData를 사용하여 PDU를 두 번째로 읽는 경우 호출은 지정된 PDU의 변수 바인딩 목록 복사본을 생성합니다. 이 유형의 SnmpGetPduData 호출도 핸들을 PDU에 복제합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winsnmp.h
라이브러리 Wsnmp32.lib
DLL Wsnmp32.dll

추가 정보

SnmpCreatePdu

SnmpDuplicateVbl

WinSNMP 함수

WinSNMP API 개요