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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 51
23.11.2011, 18:06     Netbios, ошибка "Stack around the variable was corrupted" #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 ? или как вообще избежать данной ошибки? заранее благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 18:06     Netbios, ошибка "Stack around the variable was corrupted"
Посмотрите здесь:

C++ Ошибка: Run-Time Check Failure #2 - Stack around the variable 'tmp' was corrupted.
C++ Ошибка run-time check failure #2 - stack around the variable 'findmonths' was corrupted
C++ заполнение структуры, где-то ошибка run-time check failure #2 stack around the variable a was corrupted
Отладка проекта с mpi: ошибка corrupted stack around variable C++
C++ Ошибка Run-Time Check Failure #2 - Stack around the variable 'B' was corrupted
C++ Ошибка "Stack around the variable 'a' was corrupted" при завершении программы
C++ Ошибка: Stack around the variable 'Material' was corrupted
C++ Ошибка: Run-Time Check Failure #2 - Stack around the variable 'ttt1' was corrupted

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 51
28.11.2011, 13:04  [ТС]     Netbios, ошибка "Stack around the variable was corrupted" #2
покапавшись в документации, я к сожалению не нашел как можно программно исправить эту ошибку. Stack around the variable was corrupted. Steck вокруг переменной поврежден.
в версии vs 2010 есть есть вот такие хорошие вещи как например /RTC runtime_checks http://msdn.microsoft.com/en-us/library/6kasb93x.aspx и /GS Buffer Security Check http://msdn.microsoft.com/en-us/library/8dbf701c.aspx которие следят за переполнение буфера и за состоянием Стека. Oтключаете иx в дебагере, и будет вам щастье.
Yandex
Объявления
28.11.2011, 13:04     Netbios, ошибка "Stack around the variable was corrupted"
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru