> Проблемы с RasGetEntryProperties. Когда функция вызывается > с нулевым буфером, то в пятом параметре возвращается размер > буфера. Ок!
DWORD RasGetEntryProperties(
LPTSTR lpszPhonebook, // pointer to full path and filename of phone-book file
LPTSTR lpszEntry, // pointer to an entry name
LPRASENTRY lpRasEntry, // buffer that receives entry information
LPDWORD lpdwEntryInfoSize, // size, in bytes, of the lpRasEntry buffer
LPBYTE lpbDeviceInfo, // buffer that receives device-specific configuration information
LPDWORD lpdwDeviceInfoSize // size, in bytes, of the lpbDeviceInfo buffer
);
---
В смысле, в четвёртом параметре?
> Если в свойствах подключения один телефонный номер, то с > выделенным буфером размером, указанным выше, функция > работает правильно. Если в свойствах подключения несколько > телефонных номеров, то даже с выделенным буфером (см. выше) > функция возвращает ошибку 632 - размер буфера не > соответствует. Ну, может быть несколько причин. Ты во что инициализируешь lpRasEntry.dwSize ? Нужно не в то, что возвратил вызов RasGetEntryProperties, а в sizeof(RASENTRY) .
Лучше не обращать lpRasEntry в NULL при первом вызове, поскольку тогда Win2K считает, что ты заюзаешь самую крутую версию этой структуры, а это у тебя скорее всего не так. Ты сделай вот как. Выдели память под твой lpRasEntry, выстави поле dwSize как я сказал выше. Вызови первый раз. Если ошибку малого буфера получишь, то сделай ресайз буфера в который надо. Вызови RasGetEntryProperties второй раз.
Удачи.
|