Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Netbios, ошибка "Stack around the variable was corrupted" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очереди, обработчик http://www.cyberforum.ru/cpp-beginners/thread389973.html
Задача: существует две очереди, одна приоритетная, другая нет. Если в обработчике обслуживается кто-то из неприоритетной, приоритный ждет завершения обработки, и только потом сам туда попадает....
C++ Сумма элементов матрицы. Здравствуйте товарищи) помогите пожалуйста решить следующую задачку: Дана матрица 4х4, нужно найти сумму элементов побочной диагонали матрицы. Заранее спасибо!) http://www.cyberforum.ru/cpp-beginners/thread389943.html
C++ Сортировка
Задача. Из файла с текстом сгенерировать другой текстовый файл, где эти слова располагались бы по одному на строчку. Я написал следующий текст программы, но у меня она почему-то не работает....
C++ шаблон класса вектор
Программа написана в qt при компиляции выдает ошибки - помогите разобраться. Вроде все написано правильно. template <class T, int Size> class cVector { T *m_data; public: ...
C++ Ошибка в поиску дерева http://www.cyberforum.ru/cpp-beginners/thread389928.html
Не могу найти в чем ошибка, должен производиться поиск по всему дереву, а он дальше первого уровня не идет. #include <cstdlib> #include <iostream> #include <vector> #include <string> using...
C++ Чтение строки неизвестной длины реализация на СИ как прочитать строку неизвестной длины? Чтение должно быть не посимвольным. Строка вводиться вручную. подробнее

Показать сообщение отдельно
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52

Netbios, ошибка "Stack around the variable was corrupted" - C++

23.11.2011, 18:06. Просмотров 1221. Ответов 1
Метки (Все метки)

помогите плииз есть вот такой код
C++
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
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <strstream>
#include <string>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "netapi32.lib")
using namespace std;
 
bool GetAdapterInfo(int nAdapterNum, string & sMAC)
{
    UCHAR uRetCode; 
    // Reset the LAN adapter so that we can begin querying it 
    NCB Ncb;
    memset(&Ncb, 0, sizeof(Ncb));
    Ncb.ncb_rto=1;
    Ncb.ncb_command = NCBRESET;
    Ncb.ncb_lana_num = nAdapterNum;
uRetCode = Netbios((NCB*) &Ncb );
if ( uRetCode != NRC_GOODRET )  
{
        char acTemp[80];
        ostrstream outs(acTemp, sizeof(acTemp));
        outs << "error " << Ncb.ncb_retcode << " on reset" << ends;
        sMAC = acTemp;
        return false;
    }
    
    // Prepare to get the adapter status block 
    memset(&Ncb, 0, sizeof(Ncb));
    Ncb.ncb_command = NCBASTAT;
    Ncb.ncb_lana_num = nAdapterNum;
    strcpy((char *) Ncb.ncb_callname, "192.168.249.220");
    struct ASTAT {
        ADAPTER_STATUS adapt;
        NAME_BUFFER NameBuff[30];
    } Adapter;
    memset(&Adapter, 0, sizeof(Adapter));
    Ncb.ncb_buffer = (unsigned char *)&Adapter;
    Ncb.ncb_length = sizeof(Adapter);
    
    // Get the adapter's info and, if this works, return it in standard,
    // colon-delimited form.
uRetCode = Netbios((NCB*) &Ncb );
if ( uRetCode == NRC_GOODRET )  
{
        char acMAC[18];
        sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X",
                int (Adapter.adapt.adapter_address[0]),
                int (Adapter.adapt.adapter_address[1]),
                int (Adapter.adapt.adapter_address[2]),
                int (Adapter.adapt.adapter_address[3]),
                int (Adapter.adapt.adapter_address[4]),
                int (Adapter.adapt.adapter_address[5]));
        sMAC = acMAC;
        return true;
    }
    else {
        char acTemp[80];
        ostrstream outs(acTemp, sizeof(acTemp));
        outs << "error " << Ncb.ncb_retcode << " on ASTAT" << ends;
        sMAC = acTemp;
        return false;
    }
}
 
int main()
{
    // Get adapter list
    LANA_ENUM AdapterList;
    NCB Ncb;
    memset(&Ncb, 0, sizeof(NCB));
    Ncb.ncb_command = NCBENUM;
    Ncb.ncb_buffer = (unsigned char *)&AdapterList;
    Ncb.ncb_length = sizeof(AdapterList);
    Netbios(&Ncb);
 
    // Get all of the local ethernet addresses
    string sMAC;
    for (int i = 0; i < AdapterList.length; ++i) {
        if (GetAdapterInfo(AdapterList.lana[i], sMAC)) {
            cout << "Adapter " << int (AdapterList.lana[i]) <<
                    "'s MAC is " << sMAC << endl;
        }
        else {
            cerr << "Failed to get MAC address! Do you" << endl;
            cerr << "have the NetBIOS protocol installed?" << endl;
            break;
        }
    }
    _getchar_nolock();
    return 0;
}
возвращает mac адрес lan карты, но если ее не онлайн или это не компьютер получаю ошибку
Run-Time Check Failure #2 - Stack around the variable 'Ncb' was corrupted.
nbtstat -a возвращает
Hoste note found
как на эту функцию поставить timeout ? или как вообще избежать данной ошибки? заранее благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru