Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Всем доброй пятницы. Пытаюсь написать простое консольное приложение (Visual Studio 2010) для опроса сервера по SNMP. Изначально делал через SNMP.h и функцию SnmpMgrRequest - всё работает. А теперь взял WnSNMP.h (SnmpSendMsg и SnmpRecvMsg) и столкнулся с ошибкой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. Ошибка 8 это: SNMPAPI_NOOP The function did not complete successfully because all output parameters are NULL. The application must specify at least one output parameter that is not NULL when calling a function that returns information to the application. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2014, 13:52 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatЧто я делаю не так?1) Кто тебя учил делать такие лесенки? Открой пожалуйста любую книжку, любой учебник и постарайся привести свой код в традиционный стиль записи. То что есть у тебя сейчас - читать не возможно. 2) Что тебе не понятно из описания ошибки? 3) Открываем документацию на функцию выдавшую ошибку и читаем эту документацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2014, 18:10 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlКто тебя учил делать такие лесенки? Такие лесенки получаются сами собой если вставлять текст отступами в VIM с включенным автоотступом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2014, 18:21 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlКто тебя учил делать такие лесенки? Такие лесенки получаются сами собой если вставлять текст отступами в VIM с включенным автоотступом :)На криво-настроенном может быть. На нормальном - ни за что. Да и вообще, ТС использует мелгомягкий кошмар так что отсылки на VIM не годятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2014, 18:24 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlНа криво-настроенном может быть. На нормальном - ни за что. Да и вообще, ТС использует мелгомягкий кошмар так что отсылки на VIM не годятся. Так может у него криво настроенный VS :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2014, 00:21 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, White Owl, Спасибо за помощь по теме, но остались ещё некоторые вопросы. Скажите, пожалуйста, если переформатировать отступы, проблема исчезнет? =) В описании ошибки указано: MSDNThe function did not complete successfully because all output parameters are NULL. The application must specify at least one output parameter that is not NULL when calling a function that returns information to the application. Вроде все слова русские, буквы понятные, а суть ошибки всё же ускользает, вот я и обращаюсь за советом, в чём проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 09:26 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatAnatoly Moskovsky, White Owl, Спасибо за помощь по теме, но остались ещё некоторые вопросы. Скажите, пожалуйста, если переформатировать отступы, проблема исчезнет? =) В описании ошибки указано: MSDNThe function did not complete successfully because all output parameters are NULL. The application must specify at least one output parameter that is not NULL when calling a function that returns information to the application. Вроде все слова русские, буквы понятные, а суть ошибки всё же ускользает, вот я и обращаюсь за советом, в чём проблема? Перевожу. Код: plaintext 1. 2. 3. Т.е. тебе нужно указать хотя бы один выходной параметр как не NULL, дать функции место, куда писать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 14:54 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
MasterZiv, //------------- тут уточнение есть, конкретно к функции SnmpRecvMsg ошибка SnmpApi_NOOP расшифровывается так: MSDNThe specified session has no messages in its queue at this time. //------------- В описании функции SnmpApiRecvMsg указано: MSDNSNMPAPI_STATUS SnmpRecvMsg( _In_ HSNMP_SESSION session, _Out_ LPHSNMP_ENTITY srcEntity, _Out_ LPHSNMP_ENTITY dstEntity, _Out_ LPHSNMP_CONTEXT context, _Out_ LPHSNMP_PDU PDU ); То есть выходные параметры 1. IP источника запроса, 2. IP устройства, которое мы опрашиваем, 3. контекст, 4. PDU Из всех нам нужен PDU - в описании ошибки (all outputs are null) имеются в виду эти аутпуты? Но я же их задаю (вроде бы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 16:04 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatAnatoly Moskovsky, White Owl, Спасибо за помощь по теме, но остались ещё некоторые вопросы. Скажите, пожалуйста, если переформатировать отступы, проблема исчезнет? =)Не сразу.... Но люди смогут прочитать твой код не ломая глаз. А если люди смогут прочитать код, то возможно что и ошибку увидят. А увидят ошибку - подскажут тебе как ее исправить. А сейчас, нам просто больно смотреть на этот кошмар и пытаться в нем разобраться. ioscatтут уточнение есть, конкретно к функции SnmpRecvMsg ошибка SnmpApi_NOOP расшифровывается так: Я вот сейчас себя пересилил и попытался найти где ты вызываешь SnmpRecvMsg. Не нашел. ioscatВ описании функции SnmpApiRecvMsg указано:Так ты SnmpRecvMsg или SnmpApiRecvMsg используешь? А вот в коде единственный SNMPAPI_NOOP печатаеся после SnmpCreateSession (вроде бы). Ты сам не знаешь какую функцию ты вызываешь и чью ошибку получаешь. Ты все еще уверен что кривое форматирование тут совершенно ни при чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 17:40 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, хорошо-хорошо, ваше кун-фу сильнее =) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 18:47 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, хорошо-хорошо, ваше кун-фу сильнее =)Молодец. А теперь скажи в какой строке происходит ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 19:39 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, Код: plaintext 1. 2. 3. Вот этот блок "проблемный". SnmpRecvMsg завершается с кодом 0 (FAILURE), а SnmpGetLastError() выдаёт SNMPAPI_NOOP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 20:34 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, Код: plaintext 1. 2. 3. Вот этот блок "проблемный". SnmpRecvMsg завершается с кодом 0 (FAILURE), а SnmpGetLastError() выдаёт SNMPAPI_NOOP Замечательно. Теперь открой документацию на SnmpRecvMsg и прочитай описание SNMPAPI_NOOP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 23:05 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, MSDNThe specified session has no messages in its queue at this time. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 07:28 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, MSDNThe specified session has no messages in its queue at this time.Перевести это сообщение об ошибке можешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 17:14 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, Конечно. [quote MSDN]В указанной сессии нет сообщений в очереди на данный момент[\quote] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 17:16 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Может быть сообщение ещё не дошло - почему тогда функция завершается? Может быть ответ вообще не приходит - почему тогда миб-браузеры его получают? Я думаю, что что-то неверно указано, а вот что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 17:18 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatMSDNВ указанной сессии нет сообщений в очереди на данный моментЗамечательно. Значит ты посылаешь запрос: SnmpSendMsg ( hSession, srcEntity, dstEntity, hContext, hPDU); Читаешь ответ: SnmpRecvMsg ( hSession, &srcEntity, &dstEntity, &hContext, &hPDU); И получаешь "нет сообщений"... О чем это говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 17:21 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, В каком-то старом КВН было: "Интуитивно я конечно догадываюсь, но хотелось бы уточнить..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 17:29 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, В каком-то старом КВН было: "Интуитивно я конечно догадываюсь, но хотелось бы уточнить..."Ну так озвучь свою догадку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 19:48 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, яМожет быть сообщение ещё не дошло - почему тогда функция завершается? Может быть ответ вообще не приходит - почему тогда миб-браузеры его получают? Я думаю, что что-то неверно указано, а вот что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 20:12 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, яМожет быть сообщение ещё не дошло - почему тогда функция завершается? Может быть ответ вообще не приходит - почему тогда миб-браузеры его получают? Я думаю, что что-то неверно указано, а вот что... Открываем документацию и читаем первую фразу: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378229(v=vs.85).aspx The WinSNMP SnmpRecvMsg function retrieves the results of a completed asynchronous request submitted by a call to the SnmpSendMsg function, in the form of an SNMP message.Что эта фраза означает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 20:38 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlЧто эта фраза означает? Такими темпами вы точно никогда не доберётесь до "The SnmpCreateSession function passes an application window handle and notification message identifier to the Microsoft WinSNMP implementation. When the application window receives the notification message specified by the wMsg parameter, the WinSNMP application must call the SnmpRecvMsg function with the session handle returned by SnmpCreateSession". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 20:56 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, правильно ли я понимаю, что проблема в: HSNMP_SESSION hSession = SnmpCreateSession (0,0,fCallback,NULL); и нужно использовать вариант MSDNhSession = SnmpCreateSession (myWnd, myMsg, NULL, NULL); ? Первый параметр - "указатель" на моё приложение, который можно получить командой GetConsoleWindow Вторым параметром myMsg можно вставить счётчик сессий, главное, чтобы у всех текущих он был уникальный. Я правильно всё понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 22:52 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatDimitry Sibiryakov, правильно ли я понимаю, что проблема в:Нет, не правильно. Забудь о сообщении Дмитрия. Не торопись и переведи фразу: The WinSNMP SnmpRecvMsg function retrieves the results of a completed asynchronous request submitted by a call to the SnmpSendMsg function, in the form of an SNMP message. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 23:53 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlНе торопись и переведи фразу Да послал он этот запрос, послал... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 23:56 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Мужики, хорош стебаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2014, 07:47 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, С подачи приятеля установил WireShark - запрос у устройству не уходит. Странно, что SnmpSendMsg завершается без ошибок... Программа, использующая синхронные запросы отрабатывает успешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:39 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Состав сообщения, посылаемого моей программой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:42 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Состав сообщения, посылаемого миб-браузером Отличие только в request-id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:43 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Я же говорил, что проблема не в отправке, а в приёме. И даже цитату привёл как надо делать правильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:48 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Дмитрий, если вам нетрудно, могли бы вы пояснить, почему WireShark не видит ответа? Мне представляется, что если я не считываю ответ, он всё равно должен прийти. Нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:16 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscat, HSNMP_ENTITY srcEntity = SnmpStrToEntity(hSession,"172.30.1.180"); HSNMP_ENTITY dstEntity = SnmpStrToEntity(hSession,"173.30.1.18"); Ошибка в IPшнике была ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:31 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatМне представляется, что если я не считываю ответ, он всё равно должен прийти. Нет? Твоя программа завершается раньше, чем ответ успевает прийти. При этом скорее всего соединение рвётся и ответу просто некуда приходить. Поэтому его и не присылают. Смотри полный список проходящих пакетов, возможно между ними затесался RST. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:42 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Дмитрий, если вкратце: В WireShark стоит фильтр отображения только пакетов SNMP. Таки образом видно, что ответ браузеру приходит, а моей программе - нет. это было вызвано ошибкой в IP. Как только я её исправил, проблема пропала, я вижу ответ. Программа не могла завершаться раньше прихода ответа, потому что ответ приходит очень быстро, а моя программа работает около секунды. Она в цикле много раз выполняет SnmpRecvMsg. Как только я увеличил TimeOut, она получила ответ на первой же итерации. Я думаю, что это идейно неверный подход, потому что, насколько понимаю я, нужно запускать SnmpRecvMsg иначе, и теперь я постараюсь разобраться, как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:49 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovioscatМне представляется, что если я не считываю ответ, он всё равно должен прийти. Нет? Твоя программа завершается раньше, чем ответ успевает прийти. При этом скорее всего соединение рвётся и ответу просто некуда приходить. Поэтому его и не присылают. Смотри полный список проходящих пакетов, возможно между ними затесался RST. Неверно. У него программа завершается раньше чем запрос успевает уйти. И зря ты путаешь человека. Тот кусок документации что ты привел это всего-лишь одно из решений. Можно жить и без WndProc, почти так как показал ТС в своем неработающем коде. Вариант с колбеками прекрасно может работать если только догадаться чем этот колбек должен заниматься вместо писков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:51 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlУ него программа завершается раньше чем запрос успевает уйти. Это как так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:56 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlИ зря ты путаешь человека. Тот кусок документации что ты привел это всего-лишь одно из решений. Можно жить и без WndProc Да. Но для этого надо прочитать доку на SnmpCreateSession(), чего я на тот момент времени не сделал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 16:00 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
В общем, данные получает, осталось по уму переделать. Попробую разобраться, что вы имели в виду Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:32 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ВыводStart SnmpStartup: 1 wMsg: 10 SnmpCreateSession: SnmpGetLastError: 1 wMsg: 10 SNMPAPI_NOT_INITIALIZED: 18 SNMPAPI_OTHER_ERROR: 99 SNMPAPI_NOOP: 8 SNMPAPI_ALLOC_ERROR: 2 SnmpSetTimeout: 1 SnmpGetLastError: 1 SnmpSetTimeout: 1 SnmpGetLastError: 1 SnmpSetPort: 1 SnmpGetLastError: 1 SnmpStrToOid: 9 SnmpCreateVbl GetLastError: 1 SnmpCreatePdu GetLastError: 1 SNMPAPI_SUCCESS: 1 SnmpSendMsg: 1 SnmpSendMsg SnmpGetLastError: 1 HaHa1! HaHa2! value.value.sNumber: 0 HaHa3! HaHa - 0 CallBack beep! CallBack beep! CallBack: Recieve: 1 CallBack: SnmpGetLastError: 1 CallBack: SnmpGetPduData: 1 CallBack: SnmpGetLastError: 1 CallBack: SnmpGetVb: 1 CallBack: SnmpGetLastError: 1 CallBack: value->value.sNumber: 76 HaHa - 1 HaHa - 2 HaHa - 3 HaHa - 4 HaHa - 5 HaHa - 6 HaHa - 7 HaHa - 8 HaHa - 9 End Для продолжения нажмите любую клавишу . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:35 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscat, вывод немного не соответствует коду программы, ну и ладно, суть не меняется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:51 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, Dimitry Sibiryakov, MasterZiv, Правильно ли я понимаю, что для корректной работы функция SnmpRecvMsg должна запускаться только тогда, когда приходит ответная посылка от опрашиваемого устройства? И для этого и нужна SNMPAPI callback function ? MSDNThe Microsoft WinSNMP implementation calls the SNMPAPI_CALLBACK function to notify a WinSNMP session that an SNMP message or asynchronous event is availableПравильно ли помещать SnmpRecvMsg в описании функции fCallback ? Можно ли вернуть в main полученные значения? Возможно ли в функцию fCallback передать дополнительные значения? В моей текущей реализации код функции main продолжает выполняться параллельно с fCallback , при этом пока я поставил костыль (цикл), искусственно продолжающий работу программы, чтобы получить ответ от устройства. Можно ли как-то в рамках консольного приложения отложить завершение программы до выполнения fCallback ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 12:02 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owl, Dimitry Sibiryakov, MasterZiv, Правильно ли я понимаю, что для корректной работы функция SnmpRecvMsg должна запускаться только тогда, когда приходит ответная посылка от опрашиваемого устройства? И для этого и нужна SNMPAPI callback function ?Ну где-то так... плюс-минус. Читай внимательно описание SnmpCreateSession. Там даны два разных способа работы. Один основан на WndProc, второй на простом колбеке. Если у тебя есть окошко, то есть и WndProc, который является универсальным колбеком для всех событий. А можно сделать простой колбек который будет срабатывать только на Snmp события. Тогда окошки не нужны или можно сделать параллельно два колбека, один для оконных событий, другой только для SNMP. ioscatВозможно ли в функцию fCallback передать дополнительные значения?Да. Смотри последний параметр. ioscatВ моей текущей реализации код функции main продолжает выполняться параллельно с fCallback , при этом пока я поставил костыль (цикл), искусственно продолжающий работу программы, чтобы получить ответ от устройства. Можно ли как-то в рамках консольного приложения отложить завершение программы до выполнения fCallback ?Ничего параллельного там нет. Для параллельности нужны потоки (или процессы), а колбек это чисто последовательное выполнение. И да, конечно можно "заснуть до срабатывания". Либо делаешь флаг на основе глобальной переменной и периодически засыпаешь-проверяешь-засыпаешь-проверяешь. Самый примитивный метод. Либо делаешь мютекс и засыпаешь пока он не дернется, а в колбеке уже собственно дергаешь этот мютекс. Это уже чаще используется в много-потоковых программах, но можно и в одно-потоковой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 05:32 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White Owl, спасибо за подробный ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 12:05 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlНичего параллельного там нет. Для параллельности нужны потоки (или процессы), а колбек это чисто последовательное выполнение. И да, конечно можно "заснуть до срабатывания". Либо делаешь флаг на основе глобальной переменной и периодически засыпаешь-проверяешь-засыпаешь-проверяешь. Самый примитивный метод. Либо делаешь мютекс и засыпаешь пока он не дернется, а в колбеке уже собственно дергаешь этот мютекс. Это уже чаще используется в много-потоковых программах, но можно и в одно-потоковой. Сов, а как оно будет вызывать callback, если оно висит в ожидании мьютекса, а ? Тогда надо отдельный поток ещё делать, вызывающий эту всё хрень, в котором будет вызвыаться callback. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 12:11 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
White OwlioscatВозможно ли в функцию fCallback передать дополнительные значения?Да. Смотри последний параметр. мы передаём черетырёхбайтный указатель на нечто, а потом говорим, что это указатель на переменную/структуру? Есть переменная int a=0; В CallBack передаём указатель ..., (void*)&a) Внутри CallBack интерпретируем указатель void как нам нужно (в данном случае int) (int*)lpClientData А если передавали структуру, что (struct*)a->member1... etc Верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 13:37 |
|
||
|
SnmpRecvMsg function did not complete successfully because all output parameters are NULL
|
|||
|---|---|---|---|
|
#18+
ioscatWhite Owlпропущено... Да. Смотри последний параметр. мы передаём черетырёхбайтный указатель на нечто, а потом говорим, что это указатель на переменную/структуру?Нет. Мы передаем "четырехбайтное нечто". А потом каждый раз при вызове колбека, вызывающая система отдает это "нечто" в колбек. Это не обязательно будет указатель. Это может быть и целое, и трехбуквенная строка, и естественно это может быть указателем на переменную любого типа и любой комплексности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2014, 00:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019305]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 188ms |

| 0 / 0 |
