powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Простейший SNMP Query
3 сообщений из 3, страница 1 из 1
Простейший SNMP Query
    #33772791
redex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нижеследующий код должен, как я понимаю, вернуть 1-ый из доступных на данной машине IP адресов:

HANDLE PollForTrapEvent;
AsnObjectIdentifier SupportedView;
SnmpVarBindList list_v;
SnmpVarBind elem[1];
AsnInteger32 errStatus, errIndex;
UINT OID_ipAdEntAddr[] = { 1, 3, 6, 1, 2, 1, 4 , 20, 1 ,1 };
AsnObjectIdentifier MIB_ipAdEntAddr = { sizeof(OID_ipAdEntAddr)/sizeof(UINT), OID_ipAdEntAddr };

BOOL status = SnmpExtensionInit(0,&PollForTrapEvent,&SupportedView);
if(!status)
{
return;
}
SnmpUtilOidCpy(&elem[0].name, &MIB_ipAdEntAddr);
//elem[0].value.asnValue.address.stream = new BYTE[10];
list_v.list = elem;
list_v.len = 1;
SnmpExtensionQuery(SNMP_PDU_GETNEXT, &list_v, &errStatus, &errIndex);
switch(errStatus)
{
case SNMP_ERRORSTATUS_NOERROR:
ShowMessage("Have sended successfully!");
break;
case SNMP_ERRORSTATUS_NOSUCHNAME:
ShowMessage("The requested operation identified an unknown variable");
return;
default:
;
}
int ret = SnmpUtilOidNCmp(&elem[0].name,&MIB_ipAdEntAddr,MIB_ipAdEntAddr.idLength);
DWORD dtmp = *((DWORD *)elem[0].value.asnValue.address.stream);

На последней строке вылетает Access Violation, хотя ошибок не возвращается при SnmpExtensionQuery. Кто-нибудь может сказать - почему?
...
Рейтинг: 0 / 0
Простейший SNMP Query
    #33772929
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С SNTP работать не приходилось, но в коде не понравилось сочетание вот этих строк:
redex
Код: plaintext
1.
2.
 //elem[0].value.asnValue.address.stream = new BYTE[10]; 
  DWORD dtmp = *((DWORD *)elem[ 0 ].value.asnValue.address.stream);	

точнее, не понравилось, что первая из них закомментирована...
Сложно судить о применяемых структурах данных, но, может, выделение памяти таки нужно?
...
Рейтинг: 0 / 0
Простейший SNMP Query
    #33773747
redex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использование этой строчки кода (выделения памяти), а также

elem[0].value.asnValue.address.stream = (BYTE *)SnmpUtilMemAlloc(100);
эффекта не дало. Видимо, SnmpExtensionQuery сам резервирует память. Но почему-то возвращает не то, что нужно. И при попытке конвертации происходит вышеозначенная ошибка
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Простейший SNMP Query
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]