если вы видите этот текст, отключите в настройках форума использование JavaScript
Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания .
Новичкам также крайне полезно ознакомиться с данным документом .
Ураааааааа, заработало!!! Всем спасибо. 19.11.01 16:37 Число просмотров: 1005
Автор: 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.