информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ураааааааа, заработало!!! Всем спасибо. 19.11.01 16:37  Число просмотров: 1016
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
<programming>
[C++] Ошибка при работе с RasEnumEntries() 18.11.01 13:00  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
#define MAX_ENTRIES 2
...............................
LPRASENTRYNAME EntryArray = new (RASENTRYNAME[MAX_ENTRIES]);
DWORD lpcb = sizeof(RASENTRYNAME)*MAX_ENTRIES;
DWORD lpcEntries;
DWORD e;
EntryArray[0].dwSize = sizeof(RASENTRYNAME);
EntryArray[1].dwSize = sizeof(RASENTRYNAME);

e = RasEnumEntries( NULL, "", EntryArray, &lpcb,&lpcEntries);
...............................
/////////////////////////////////////////////////////////////////////////////

При выполнении переменной е присваивается значение 610.
Это значит, что ошибка при при распределении памяти (буффера для записи).

В чём может быть здесь проблема?

Заранее спасибо.
[C++] Ошибка при работе с RasEnumEntries() 18.11.01 23:46  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
from MSDN:
lpRasEntryName = (LPRASENTRYNAME)GlobalAlloc(GPTR, sizeof(RASENTRYNAME));
lpRasEntryName->dwSize = sizeof(RASENTRYNAME);
if ((nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries)) 
    == ERROR_BUFFER_TOO_SMALL)
{
    lpRasEntryName = (LPRASENTRYNAME)GlobalAlloc(GPTR, cb);
    lpRasEntryName->dwSize = sizeof(RASENTRYNAME);
}
 
// Calling RasEnumEntries to enumerate the phone-book entries    
nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries);
 
if (nRet != ERROR_SUCCESS)
{
    printf("RasEnumEntries failed: Error %d\n", nRet);
}
else
{
    printf("Phone-book entries in the default phone book:\n\n");
    for(i=0;i < cEntries;i++)
    {
        printf("%s\n",lpRasEntryName->szEntryName);
        lpRasEntryName++;
    }
}

---
Всё равно 610. 19.11.01 15:17  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Такое тут уже было, правда с RasEnumConnections 19.11.01 15:56  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Возможно, ты компилишь с #define WINVER 0x0500, а запускаешь прогу на Win9x (в зависимости от этого RASENTRYNAME имеет разный размер)
Посмотри чему у тебя равен sizeof(RASENTRYNAME)
Напиши в начале проги #define WINVER 0x0400 - могет быть все заработает
Ураааааааа, заработало!!! Всем спасибо. 19.11.01 16:37  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
[C++] Ошибка при работе с RasEnumEntries() 18.11.01 18:42  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> #define MAX_ENTRIES 2
> ...............................
> LPRASENTRYNAME EntryArray = new
> (RASENTRYNAME[MAX_ENTRIES]);
> DWORD lpcb = sizeof(RASENTRYNAME)*MAX_ENTRIES;
> DWORD lpcEntries;
> DWORD e;
> EntryArray[0].dwSize = sizeof(RASENTRYNAME);
> EntryArray[1].dwSize = sizeof(RASENTRYNAME);
>
> e = RasEnumEntries( NULL, "", EntryArray,
> &lpcb,&lpcEntries);
> ...............................
> ///////////////////////////////////////////////////////////
> //////////////////
>
> При выполнении переменной е присваивается значение 610.
> Это значит, что ошибка при при распределении памяти
> (буффера для записи).
>
> В чём может быть здесь проблема?
>
> Заранее спасибо.


#define MAX_ENTRIES 2
// ...............................
LPRASENTRYNAME EntryArray = NULL; // = new(RASENTRYNAME[MAX_ENTRIES]);
 DWORD cbSize = 0; // sizeof(RASENTRYNAME)*MAX_ENTRIES;
 DWORD lpcEntries = 0;
 DWORD e;
e = RasEnumEntries( NULL, "", EntryArray, &cbSize,&lpcEntries);
ASSERT(cbSize != 0);
EntryArray = (LPRASENTRYNAME) new BYTE[cbSize];
RasEnumEntries( NULL, "", EntryArray, &cbSize,&lpcEntries);

// ili, xotya tut ne ochen' uveren, no vrode dolzhno byt' tak

 LPRASENTRYNAME EntryArray = new(RASENTRYNAME[MAX_ENTRIES]);
 DWORD lpcb = sizeof(RASENTRYNAME)*MAX_ENTRIES;
 DWORD lpcEntries = 2; // pay attention here
/////                         ^^^^^^
 DWORD e;
memset( EntryArray, 0, lpcb);
 EntryArray[0].dwSize = sizeof(RASENTRYNAME);
 EntryArray[1].dwSize = sizeof(RASENTRYNAME);
 e = RasEnumEntries( NULL, "", EntryArray, &lpcb,&lpcEntries);


---

udachi.
[C++] Ошибка при работе с RasEnumEntries() 18.11.01 13:06  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
хз в чом проблема, вот работающий код:

UINT l = 0;
DWORD dwEntries;
RASENTRYNAME re [100];
for(l = 0; l < 100; l++)
re[l].dwSize = sizeof(RASENTRYNAME);

DWORD cb = sizeof(re);
RasEnumEntries(NULL, NULL, &re [0], &cb, &dwEntries);
for(l = 0; l < dwEntries; l++)
{
printf(re[l].szEntryName);
}

Удачи!!
[C++] Ошибка при работе с RasEnumEntries() 18.11.01 13:35  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Всё равно такая шняга.

Может чё-нить надо проинициализировать до вызова, потипу как в winsock.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach