Немножко о памяти и версиях Windows
От: Krom Россия  
Дата: 25.08.03 06:16
Оценка:
Работаю с RAS.
Пытался сделать как написано в MSDN в примере к описанию ф-ии RasEnumDevices:

RasEnumDevices(NULL, &lpcb, &lpcDevices);
lpRasDevInfo = (LPRASDEVINFO) GlobalAlloc(GPTR, lpcb);
lpRasDevInfo->dwSize = sizeof(RASDEVINFO);


На последней строчке в Win98SE вылетает ошибка:
Программа The Program.EXE вызвала сбой при обращении к странице памяти.
Под Win2k SP2 все работает на ура.

Вопрос: почему так?

hMem = GlobalAlloc(GPTR, lpcb);
lpRasDevInfo = (LPRASDEVINFO) GlobalLock(hMem);
lpRasDevInfo->dwSize = sizeof(RASDEVINFO);


Приведенный выше код ведет себя тем же образом...

Я поступл по др. — применил NEW:
RasEnumDevices(NULL, &lpcb, &lpcDevices);
LPRASDEVINFO  lpRasDevInfo = new RASDEVINFO[lpcDevices];


Этот код работает на обеих системах.
Но почему же не работают предыдущие два
Best regards
Krom
Re: Немножко о памяти и версиях Windows
От: fuurin  
Дата: 26.08.03 14:49
Оценка:
K>
K>RasEnumDevices(NULL, &lpcb, &lpcDevices);
K>lpRasDevInfo = (LPRASDEVINFO) GlobalAlloc(GPTR, lpcb);
K>lpRasDevInfo->dwSize = sizeof(RASDEVINFO);
K>


Пройдись в отладчике по этому коду, а лучше проверяй результат работы каждой ф-ции. Может, под 98 RasEnumDevices возвращает ошибку?
...[rsdn@home 1.1.1329.16988]
Garbage In Garbage Out
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.