Доброго времени суток.
В клиентской части системы обмена информацией нужно сделать возможность соединения с сервером по модему. При этом, желательно не создавать и, соответственно, не использовать телефонную книгу. Клиентская часть должна работать на системах не ниже Win98.
Я использую следующий код (тестовый проект):
#define WINVER 0x400
...
RASDIALPARAMS RASDialParams;
memset(&RASDialParams, 0, sizeof(RASDIALPARAMS));
RASDialParams.dwSize = sizeof(RASDIALPARAMS);
DWORD dRes;
int res;
HRASCONN hRASConnHandler = NULL;
_snprintf(RASDialParams.szPhoneNumber, 128, "121234");
_snprintf(RASDialParams.szUserName, 256, "xxx");
_snprintf(RASDialParams.szPassword, 256, "xxx");
dRes = RasDial(NULL, NULL, &RASDialParams, 0, NULL, &hRASConnHandler);
printf ("dRes = %i", dRes);
На Win2k/XP все работает нормально.
При запуске программы на Win98, я получаю ошибку RAS 623 (The system could not find the phone book entry for this connection.)
Модем установлен правильно. RAS, судя по всему, работает нормально (вручную получилось создать соединение и позвонить).
В чем могут быть грабли?
Заранее благодарен.
Прошу прощения, забыл войти. Первый пост мой
Вопрос до сих пор стоит
Сейчас временно решил проблемму, добавив специально для случая с Win98 возможность соединяться по существующей записи в телефонной книге, но такой вариант не очень-то устраивает заказчиков
Уже грешу на работу RAS-а на тестовой машине, может у кого-нибудь есть возможность проверить работу приведенного кода на своей W98?
DEN>Уже грешу на работу RAS-а на тестовой машине, может у кого-нибудь есть возможность проверить работу приведенного кода на своей W98?
На всякий случай — полный код тестового проекта (консоль):
#define WINVER 0x400
#include <Windows.h>
#include <Ras.h>
#include <Raserror.h>
#pragma comment (lib, "Rasapi32.lib")
#include <stdio.h>
#include <conio.h>
int main(void) {
RASDIALPARAMS RASDialParams;
memset(&RASDialParams, 0, sizeof(RASDIALPARAMS));
RASDialParams.dwSize = sizeof(RASDIALPARAMS);
DWORD dRes;
HRASCONN hRASConnHandler = NULL;
_snprintf(RASDialParams.szPhoneNumber, 128, "121234");
_snprintf(RASDialParams.szUserName, 256, "xxx");
_snprintf(RASDialParams.szPassword, 256, "xxx");
dRes = RasDial(NULL, NULL, &RASDialParams, 0, NULL, &hRASConnHandler);
printf ("dRes = %i", dRes);
getch();
return 0;
}
Интересует поведение функции RasDial при параметре lpszPhonebook == NULL и при пустом поле структуры RASDialParams -szEntryName == ""
lpszPhonebook
[in] Pointer to a null-terminated string that specifies the full path and file name of a phone-book (PBK) file. If this parameter is NULL, the function uses the current default phone-book file. The default phone-book file is the one selected by the user in the User Preferences property sheet of the Dial-Up Networking dialog box.
Windows 95: This parameter should always be NULL. Dial-up networking stores phone-book entries in the registry rather than in a phone-book file.
szEntryName
Specifies a string that contains the phone-book entry to use to establish the connection. An empty string ("") specifies a simple modem connection on the first available modem port, in which case a non-empty szPhoneNumber must be provided.
The callback number is no longer stored in the registry. Specifying an asterisk for szCallbackNumber causes RAS to return error 704: ERROR_BAD_CALLBACK_NUMBER.
Windows NT 3.51 or earlier, Windows Me/98/95: This member is not supported.