| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > О RasEnumEntries... |
| Автор: sLim 18.2.2003, 06:00 |
| Глюки с Ras: В Windows 9x я спокойно получаю имена всех соединений с помощью RasEnumEntries, но в NT\XP вместо имен соединений RasEnumEntries дает пустые строки нулевой длины. В чем причина? |
| Автор: stab 18.2.2003, 13:52 |
| bool DoEnum() { LPRASENTRYNAME lpRasEntryName = (LPRASENTRYNAME) GlobalAlloc(GPTR, sizeof(RASENTRYNAME)); lpRasEntryName->dwSize = sizeof(RASENTRYNAME); int nRet; DWORD cb = sizeof(RASENTRYNAME), cEntries; if ((nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries)) == ERROR_BUFFER_TOO_SMALL) { lpRasEntryName = (LPRASENTRYNAME)GlobalAlloc(GPTR, cb); lpRasEntryName->dwSize = sizeof(RASENTRYNAME); } nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries); if (nRet != ERROR_SUCCESS) { return FALSE; } else { for(DWORD i = 0; i < cEntries; i++) { MessageBox(hMainDlg, lpRasEntryName->szEntryName, NULL, MB_OK); lpRasEntryName++; } } return TRUE; } у мя все работает и под 9х и НТ |
| Автор: stab 18.2.2003, 13:55 |
| пока в старом коде рылся нашел ошибку, правельнее так: bool DoEnum() { LPRASENTRYNAME lpRasEntryName = (LPRASENTRYNAME) GlobalAlloc(GPTR, sizeof(RASENTRYNAME)); LPRASENTRYNAME back; lpRasEntryName->dwSize = sizeof(RASENTRYNAME); int nRet; DWORD cb = sizeof(RASENTRYNAME), cEntries; if ((nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries)) == ERROR_BUFFER_TOO_SMALL) { lpRasEntryName = (LPRASENTRYNAME)GlobalAlloc(GPTR, cb); lpRasEntryName->dwSize = sizeof(RASENTRYNAME); } nRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &cb, &cEntries); back = lpRasEntryName; if (nRet != ERROR_SUCCESS) { GlobalFree(back); return FALSE; } else { for(DWORD i = 0; i < cEntries; i++) { MessageBox(hMainDlg, lpRasEntryName->szEntryName, NULL, MB_OK); lpRasEntryName++; } } GlobalFree(back); return TRUE; } |
| Автор: sLim 20.2.2003, 04:47 |
| BiG thanx! |